2 kolommen mysql_fetch_array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Crispijn -

Crispijn -

24/09/2006 14:24:00
Quote Anchor link
Dit is een vervolg op mijn vraag over het opslaan van de parameters in de database. Omdat de lijst met waarden ontzettend lang is (55 records) wil ik deze graag in twee kolommen weergeven zodat de pagina korter wordt.

Ik heb het volgende bedacht:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    $sql_ptp
= "SELECT * FROM prijs_tp ORDER BY aantal";
    $res_ptp = mysql_query($sql_ptp) or die (mysql_error());

        if (mysql_num_rows($res_ptp) >= 1){
        //er zijn gegevens gevonden    
        
        echo '<form method="post" action="?prijzen_tp">';
        echo '<table cellspacing="0" cellpadding="0" width="100%">';
        echo '<tr><td width="100"><b>Aantal</b></td>';
        echo '<td><b>Prijs per persoon per nacht</b></td>';
        echo '<td width="100"><b>Aantal</b></td>';
        echo '<td><b>Prijs per persoon per nacht</b></td></tr>';
        
        $i=0;
        
            while ($row_ptp = mysql_fetch_array ($res_ptp)){
            $color ^= 1;
                
                if($i == ceil($res_ptp / 2)){
                echo '<tr class="rij'.$color.'"><td>'.$row_ptp['aantal'].'</td>';
                echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
                }

                else {
                echo '<td>'.$row_ptp['aantal'].'</td>';
                echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
                echo '</tr>';
                }

                $i++;
            
            }

            
        echo '</table>';
        echo '<p></p><input name="submit" type="submit" value="Opslaan" class="button"> <input name="submit" type="reset" value="Reset" class="button">';
        echo '</form>';
        
        }

?>


Alleen dit werkt niet zoals ik wil. Zoals ik zei heb ik 55 records in de database staan en nu is het zo dat alleen het veld waar aantal = 32 in de tweede kolom komt te staan.

aantal|ppn|aantal |ppn

| 25 | 11.99 | | |
| 26 | 12.00 | | |

ga maar door ga maar door

| 31 | 8.99 | 32 |8.01|
| 33 | 8.85 | | |

Ik heb zelf alleen geen idee waarom het alleen bij 32 zo is. De getallen die voorkomen in de berekening zijn

$res_ptp = 55

Ik heb dit idee van phpfreaks

Iemand anders een idee?
Gewijzigd op 01/01/1970 01:00:00 door Crispijn -
 
PHP hulp

PHP hulp

18/11/2024 08:33:18
 
Crispijn -

Crispijn -

25/09/2006 19:48:00
Quote Anchor link
*BUMP!*
 
Lissy Pixel

Lissy Pixel

25/09/2006 19:52:00
Quote Anchor link
Dat is een goeie en als ik je goed begrijp dan heb je een tabel met zeg maar 55 id's in je tabel die je in twee kolommen met een van 25 id's en de andere 30 id's wil laten zien?

Dit probleem heb ik ook en weet ook zo 1-2-3 niet een oplossing danwel met te laten tellen tot 30 en dan te stoppen. Maar ja hoe nu verder...
 
Martijn B

Martijn B

25/09/2006 20:09:00
Quote Anchor link
Bedoel je dit?:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
error_reporting(E_ALL);

$i = 1;
        
while( $i < 56 )
{
        
    $aProduct[] = array('naam' => 'product'.$i, 'prijs' => $i*100);
    $i++;    
}

        
$j = 0;
        
foreach( $aProduct as $v )
{

    echo '[naam:' . $v['naam'] . ' | prijs:' . $v['prijs'] . ' ] - ';
        
    if( $j == 1 )
    {

        # Nieuwe regel
        echo '<br/>';
                
        # $j resetten
        $j = -1;
    }

    
    $j++;
}

?>
 
Lissy Pixel

Lissy Pixel

25/09/2006 20:30:00
Quote Anchor link
Zal voor mij niet werken maar ik heb in iedergeval een idee om dit verder uit te werken. Bedankt !!!
 
Joren de Wit

Joren de Wit

25/09/2006 20:33:00
Quote Anchor link
@Crispijn:

Verander onderstaande eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// In plaats van:
if($i == ceil($res_ptp / 2)

// Doe je dit:
if($i%2 == 0)
?>


ps. @lissy: Kijk eens in dit topic, misschien vind je op deze pagina nog wat nuttige informatie.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
- SanThe -

- SanThe -

25/09/2006 20:36:00
Quote Anchor link
Ik heb ook een leuke verzonnen.
Is niet getest.
Je zal in $hulparray[$i + $j]['aantal'] 'aantal' waarschijnlijk moeten vervangen door een cijfer die overeen komt met de juiste kolom uit de database. En de anderen dan natuurlijk ook.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
$sql_ptp
= "SELECT * FROM prijs_tp ORDER BY aantal";
$res_ptp = mysql_query($sql_ptp) or die (mysql_error());

$aantal = mysql_num_rows($res_ptp);
if($aantal > 0)
{

    //er zijn gegevens gevonden    
    echo '<form method="post" action="?prijzen_tp">';
    echo '<table cellspacing="0" cellpadding="0" width="100%">';
    echo '<tr><td width="100"><b>Aantal</b></td>';
    echo '<td><b>Prijs per persoon per nacht</b></td>';
    echo '<td width="100"><b>Aantal</b></td>';
    echo '<td><b>Prijs per persoon per nacht</b></td></tr>';
    
    while ($row_ptp = mysql_fetch_array ($res_ptp))
    {

        $hulparray[] = $row_ptp;
    }

    $helft = ceil($aantal / 2);
    for($i = 0; $i < $helft; $i++)
    {

        $color ^= 1;
        echo '<tr class="rij' . $color . '">';
        for($j = 0; $j < $aantal; $j = $j + $helft)
        {

            if(isset($hulparray[$i + $j]))
            {

                echo '<td>' . $hulparray[$i + $j]['aantal'] . '</td>';
                echo '<td><input type="text" name="prijs[' . $hulparray[$i + $j]['aantal'] . ']" value="' . $hulparray[$i + $j]['pppn'] . '" class="inputbox" size="5" maxlength="5"></td>';
            }
        }

        echo '</tr>';
    }

    
    echo '</table>';
    echo '<p></p><input name="submit" type="submit" value="Opslaan" class="button"> <input name="submit" type="reset" value="Reset" class="button">';
    echo '</form>';
}

?>
 
Crispijn -

Crispijn -

25/09/2006 20:39:00
Quote Anchor link
Het maakt me niet uit hoe lang de rijen zijn, of hoe ze verdeeld zijn. Het belangrijkste is dat de lange enkele kolom verdeeld wordt over 2 kolommen... Het liefst dan zo:

25|26
27|28
etc...

Bedankt voor jullie posts! Ik ga eens even klussen!
 
Robert Deiman

Robert Deiman

25/09/2006 20:47:00
Quote Anchor link
@Crispijn, zo dan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
    $sql_ptp
= "SELECT * FROM prijs_tp ORDER BY aantal";
    $res_ptp = mysql_query($sql_ptp) or die (mysql_error());

        if (mysql_num_rows($res_ptp) >= 1){
        //er zijn gegevens gevonden    
        
        echo '<form method="post" action="?prijzen_tp">';
        echo '<table cellspacing="0" cellpadding="0" width="100%">';
        echo '<tr><td width="100"><b>Aantal</b></td>';
        echo '<td><b>Prijs per persoon per nacht</b></td>';
        echo '<td width="100"><b>Aantal</b></td>';
        echo '<td><b>Prijs per persoon per nacht</b></td></tr>';
        
        $i=0;
        
            while ($row_ptp = mysql_fetch_array ($res_ptp)){
            $color ^= 1;
                // hier begonnen met aanpassen
                if($i % 2 == 1)){
                echo '</td><td>'.$row_ptp['aantal'].'</td>';
                echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td></tr>';
                }

                else {
                echo '<tr><td>'.$row_ptp['aantal'].'</td>';
                echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
                }

                $i++;
            
            }

            
        echo '</table>';
        echo '<p></p><input name="submit" type="submit" value="Opslaan" class="button"> <input name="submit" type="reset" value="Reset" class="button">';
        echo '</form>';
        
        }

?>


(ben ook maar even aan het denken geslagen)
 
- SanThe -

- SanThe -

25/09/2006 20:56:00
Quote Anchor link
Mijn script zou ze zo neer moeten zetten:

01 | 29
02 | 30
03 | 31
..
27 | 55
28 |
 
Crispijn -

Crispijn -

25/09/2006 20:56:00
Quote Anchor link
Oke, Blanche had de trick.

Ik heb nu het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$i
=0;
        
            while ($row_ptp = mysql_fetch_array ($res_ptp)){
            
                
                if($i%2 == 0){
                $color ^= 1;
                echo '<tr class="rij'.$color.'"><td>'.$row_ptp['aantal'].'</td>';
                echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
                }

                else {
                echo '<td>'.$row_ptp['aantal'].'</td>';
                echo '<td><input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5"></td>';
                echo '</tr>';
                }

                $i++;
            
            }

?>


en het werkt. Ook heb ik nu netjes alle rijën om en om een andere kleur door de $color binnen de if te halen. Snappen jullie me nog? Dit is naar mijn idee verreweg de simpelste manier om dit te realiseren.

Bedankt voor het meedenken!

Cris
 
Robert Deiman

Robert Deiman

25/09/2006 21:00:00
Quote Anchor link
@Crispijn

Zo te zien is er iets meer veranderd he, dan alleen de if($i%2==0) :P Maargoed, het was hem wel..
 
- SanThe -

- SanThe -

25/09/2006 21:08:00
Quote Anchor link
Alleen wordt bij een oneven aantal de <tr> niet afgesloten.
 
Crispijn -

Crispijn -

25/09/2006 21:22:00
Quote Anchor link
Ehm, dat moet ook niet want hij moet het oneven getal in dezelfde rij zetten, alleen in de twee <td>'s er na.

Zodoende.

Verder heb ik alleen minder gepost dan in mijn vraagstelling omdat dat niet meer relevant was... vandaar dat het lijkt dat er meer veranderd is!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.