[php & Mysql] tabel vullen lukt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
Het zal voor jullie simpel zijn, maar ik kom er niet uit...ook andere topics geven mij geen duidelijkheid.

Ik wil een tabel als volgt gevuld hebben mbv MySQL:

code:
1
2
3
4
5
6
7
8
9
10
11
12
<table>
  <tr>
     <td>jaar</td><td>1998</td><td>1999</td><td>2000</td>....enz
  </tr>
  <tr>
     <td>omzet</td><td>20.000</td><td>23.254</td><td>25.633</td>....enz
  </tr>
  <tr>
     <td>enzovoort</td>
  </tr>
  ......
</table>


Ik gebruik de volgende MySQL code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
echo '  <table> '.$CrLf;
echo '  <tr> '.$CrLf;
echo '    <td> '.$CrLf;
echo '      Jaar '.$CrLf;
echo '    </td> '.$CrLf;

$Query = " SELECT id, jaar, omzetw FROM cms_kerncijfers ORDER BY jaar ";
$Result = OpenQuery($Query, $Connection);
for ($index = 0; $index < numrows($Result); $index++){
    $Record = FetchRow ($Result);
    $id     = $Record["id"];
    $jaar       = $Record["jaar"];
    $omzetw     = $Record["omzetw"];

echo '    <td> '.$CrLf;
echo '             '.$jaar.' '.$CrLf;
echo '    </td> '.$CrLf;
}
echo '  </tr> '.$CrLf;
echo '  </table> '.$CrLf;


Nu krijg ik 'jaar' met de bijbehorende jaren wel netjes op een rijtje, maar de volgende rijen daaronder dus niet...waarschijnlijk zal ik iets met array's moeten doen, dus heb ik net een aantal array manuals en topics gelezen, maar ook daar kom ik niet uit.

Kan iemand me op weg helpen? Niet alles voordoen, maar een paar duidelijke tips of stukjes code waarmee ik verder kan stoeien!

Bedankt!

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Gebruik eens mysql_fetch_assoc():
PHP:
1
2
3
4
5
6
$query="SQL";
$result=mysql_query($query);
while($row=mysql_fetch_assoc($result)){
    /*dit wordt voor ieder record uitgevoerd*/
    echo $row['kolomnaam'];
}

[ Voor 9% gewijzigd door djluc op 27-08-2003 15:04 ]


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 00:01

me1299

$ondertitel

Wat is $CrLf???? En het is geen mysql code maar php.

Waarom niet gewoon fetchen?

PHP:
1
2
3
while ($fetch = mysql_fetch_assoc($result)) {
 
}

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
$CrLf; = Carrage Return Line Feet ofzoiet...hiermee zorg ik ervoor dat mijn broncode ook normaal te lezen is.

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
$CrLf kun je predefinen, maar het ziet er een beetje ranzig (VB) achtig uit vind ik :)

gebruik liever gewoon \n, lijkt mee ook sneller

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Ik zie in je voorbeeld HTML 3x een enzovoort staan. Bij de eerste 2 kan ik me wel iets voorstellen, en bij de laatste ook wel, maar niet tegelijk..

Wil je een tabel waarin op de eerste rij alle jaren staan en op de tweede rij alle omzetten?

In dat geval slaat de 3e enzovoort nergens op. Ik neem aan dat dat de bedoeling is.

Omdat een HTML tabel rij voor rij wordt opgebouwd heb je een probleem omdat je je gegevens 'per kolom' uit de db haalt.

De oplossing is eigenlijk ook redelijk simpel. Druk de eerste rij (met jaren) wel gewoon af tijdens de for lus, maar onthoud de omzetten rij. Deze kun je dan na afloop van de lus afdrukken als volgende rij.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 17-09 12:10
als je nou eens een variable aanmaakt per regel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$tijdlijn="<tr>";
$omzetlijn="<tr>";
for ($index = 0; $index < numrows($Result); $index++){ 
    $Record = FetchRow ($Result); 
    $tijdlijn += "<td>".$Record["jaar"]."</td>"; 
    $omzetlijn  += "<td>".$Record["omzetw"]."</td>"; 
} 
$tijdlijn  +="</tr>";
$omzetlijn  +="</tr>";

echo $tijdlijn."\n";
echo $omzetlijn."\n";

let the past be the past.


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
Ok, ik zal even iets duidelijker proberen te zijn:

Ik wil een aantal rijen ophalen en dat moet er dan zo uitzien:

jaar | 1998 | 1999 | 2000 | 2001 |
omzet | 20.000 | 20.256 | 25.000| 26.254 |
en nog een aantal rijen. Ook de kolommen moet elk jaar uitbreiden.

Ik heb ook de code ff aangepast zodat het voor jullie waarschijnlijk duidelijker is, sorry maar ik het 'leren' programmeren van iemand die overal functies voor schrijft, dus die stijl neem je over.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
echo '  <tr> '.$CrLf;
echo '    <td> '.$CrLf;
echo '      Jaar '.$CrLf;
echo '    </td> '.$CrLf;
$db = mysql_connect("localhost:3306", "root");
mysql_select_db("zederik", $db);
$result = mysql_query("SELECT id, jaar, omzet FROM cms_kerncijfers", $db);
while ($row=mysql_fetch_array($result)){
echo '    <td> '.$CrLf;
echo $row['jaar'];
echo '    </td> '.$CrLf;
}
echo '  </tr> '.$CrLf;

Waar ik dus nu mee zit is dat de rij "jaar" ophalen wel lukt, maar de volgende rijen niet netjes in rijen en kolommen daaronder.

Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
SPee schreef op 27 augustus 2003 @ 15:37:
als je nou eens een variable aanmaakt per regel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$tijdlijn="<tr>";
$omzetlijn="<tr>";
for ($index = 0; $index < numrows($Result); $index++){ 
    $Record = FetchRow ($Result); 
    $tijdlijn += "<td>".$Record["jaar"]."</td>"; 
    $omzetlijn  += "<td>".$Record["omzetw"]."</td>"; 
} 
$tijdlijn  +="</tr>";
$omzetlijn  +="</tr>";

echo $tijdlijn."\n";
echo $omzetlijn."\n";
Hier komt bij mij alleen 0 0 te staan.

Acties:
  • 0 Henk 'm!

Verwijderd

Anders snap ik er ff helemaal niets van... wat wil je precies dan?
Als het erom gaat dat je een dynamische tabel wilt dan zijn daar wel dingen op te vinden!

Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
ik wil idd een dynamische tabel...ik weet alleen niet hoe ik tabel per kolom moet vullen. Per rij is geen probleem. In de eerste kolom staan dus vaste waarden zoals 'jaar', 'omzet', 'winst' etc. De tweede, derde, vierde kolom moeten dus uit de database komen. Het lukt me alleen niet!

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Voor dit soort geintjes is het ook wel leuk als je je datamodel even geeft....

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Voor dit soort geintjes maakt het datamodel helemaal niks uit. De oplossing die SPee geeft is gewoon de goede (het is ook een sourcecode implementatie van wat ik daarboven ook al vertelde). Waarschijnlijk moet er nog wat worden gedebugged, maar dat zou de topicstarter gewoon zelf moeten kunnen (het is iig niet de bedoeling dat dat hier gebeurt!).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
De reply van Spee werkt idd nog niet, ik zal proberen deze code te verbeteren!

Iig bedankt tot zover!
Pagina: 1