login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Weergeven gegevens in een tabel (Opgelost)

Offline IndexS - 12/10/2012 00:07 (laatste wijziging 12/10/2012 00:31)
Avatar van IndexSMySQL interesse Wij zijn met een glasvezel project bezig en willen voor ons zelf een vergelijkingstabel maken. Als test heb ik even 1 tabel aangemaakt en er wat testgegevens ingezet. Die gegevens kan ik eruit halen en in een tabel zetten.
Nu is de tabel als volgt:

Provider | Prijs | Internet | Televisie
-----------------------------------
KPN | 50 | ja | ja
Tele2 | 40 | ja | ja
Telfort | 70 | ja | ja

Dit heb ik nu als code:

  1. <?php
  2. //verbinding maken met de database
  3. if(mysql_connect('localhost','***','***'))
  4. {
  5. }
  6. else
  7. {
  8. echo 'Kan geen verbinding maken';
  9. }
  10. ?>
  11.  
  12. <table cellspacing="0" cellpadding="0">
  13. <tr>
  14. <td>Provider:</td>
  15. <td>Prijs:</td>
  16. <td>Internet:</td>
  17. <td>Televisie:</td>
  18. </tr>
  19.  
  20. <?php
  21. $res = mysql_query("SELECT * FROM vergelijk");
  22.  
  23. while ($test = mysql_fetch_assoc($res))
  24. {
  25. echo '
  26. <tr>
  27. <td>' .$test["provider"].'</td>
  28. <td>' .$test["prijs"].'</td>
  29. <td>' .$test["internet"].'</td>
  30. <td>' .$test["televisie"].'</td>
  31. </tr>';
  32. }
  33.  
  34. echo '</table>';
  35. ?>


Maar ik wil het als volgt hebben:

Provider | KPN | Tele2 | Telfort
Prijs | 50 | 40 | 70
Internet | ja | ja | ja
Televisie | ja | ja | ja

Wie kan me helpen?
Alvast bedankt.

6 antwoorden

Gesponsorde links
Offline Joost - 12/10/2012 12:48 (laatste wijziging 12/10/2012 12:54)
Avatar van Joost PHP expert Je moet eerst de MySQL result set in een array zetten. Ik heb dat hieronder weggelaten en even zelf een array ingevuld. Dit kan je zelf doen met mysql_fetch_assoc maar sneller via bijvoorbeeld http://nl1.php....tchall.php

Nu moet je inzien dat elke rij gelijk is aan een subitem van je array. Er is dus een rij met provider, prijs, etc. Vervolgens wordt bij de eerste rij telkens het eerste subitem van elk item weergegeven, bij de tweede rij alle tweede subitems and so on.

Aan de hand van deze sketch kom je ongeveer uit op het volgende. Je zal het nog moeten aanpassen naar jouw situatie.

  1. <?php
  2.  
  3. // fake data
  4. $items = array(
  5. array('KPN', 50, 'ja'),
  6. array('Ziggo', 60, 'ja'),
  7. array('UPC', 30, 'nee')
  8. );
  9.  
  10. $subItems = array('Provider', 'Prijs', 'TV');
  11.  
  12. echo '<table>';
  13. $numItems = count($items);
  14. $numSubItems = count($items[0]);
  15.  
  16. // Loop over het aantal subitems dat er is.
  17. for($i = 0; $i < $numSubItems; $i++){
  18. echo '<tr><td><b>' . $subItems[$i] . '</b></td>';
  19. // Pak nu telkens het $i'de element van elke $j'de item.
  20. for($j = 0; $j < $numItems; $j++){
  21. echo '<td>' . $items[$j][$i] . '</td>';
  22. }
  23. echo '</tr>';
  24. }
  25.  
  26. echo '</table>';
Bedankt door: IndexS
Offline IndexS - 12/10/2012 16:01
Avatar van IndexS MySQL interesse Ik snap de bedoeling wel van de code die je gegeven hebt en de uitleg is me duidelijk, maar ik snap niet helemaal hoe ik de array moet vullen met de gegevens uit de tabel.  
Offline vinTage - 12/10/2012 16:59 (laatste wijziging 13/10/2012 08:46)
Avatar van vinTage Nieuw lid
  1. while($row = ....)
  2. {
  3. $array1[] = $row['smth'];
  4. $array2[] = $row['smth_else'];
  5. //etc
  6. }


Post ge-edit, ik was de [] vergeten 
Bedankt door: IndexS
Offline IndexS - 12/10/2012 17:54 (laatste wijziging 12/10/2012 17:56)
Avatar van IndexS MySQL interesse
  1. $res = mysql_query("SELECT provider,prijs,verzendkosten FROM vergelijk");
  2. while ($arr = mysql_fetch_array($res, MYSQL_BOTH)) {
  3.  
  4. echo $arr["provider"]."<br />";
  5. echo $arr["prijs"]."<br />";
  6. echo $arr["verzendkosten"]."<br />";
  7. }


Dat werkt. Maar nu nog combineren met de code van Joost.
We prutsen gewoon verder, maar alle hulp is natuurlijk welkom  
Zal dat van vinTage ook ff nalopen.
Offline Joost - 13/10/2012 13:02
Avatar van Joost PHP expert mysql_fetch_array, mysql_fetch_assoc en alle andere fetch functies geven één item terug als resultaat. Je kan dus over de hele resultaatset loopen en elk item aan een array toevoegen.
  1. $res = mysql_query("SELECT provider,prijs,verzendkosten FROM vergelijk");
  2. // Initialiseer een lege array waar alle items inkomen.
  3. $items = array();
  4. // Loop over het resultaat met mysql_fetch_row. Dit geeft een array terug met numerieke indexen, niet de database kolomnamen. Zie: http://nl3.php.net/mysql_fetch_row
  5. while ($item = mysql_fetch_row($res)) {
  6. $items[] = $item;
  7. }
Bedankt door: IndexS
Offline IndexS - 13/10/2012 20:46
Avatar van IndexS MySQL interesse
  1. $res = mysql_query("SELECT provider,prijs,verzendkosten,aansluitkosten,borg,monteur,abonnement,internet,snelheid,televisie,analoog,digitaal,interactief FROM vergelijk");
  2.  
  3. $items = array();
  4.  
  5. while ($item = mysql_fetch_row($res))
  6. {
  7. $items[] = $item;
  8. }
  9.  
  10. $subItems = array('Provider', 'Prijs', 'Verzendkosten','Aansluitkosten','Borg','Monteur','Abonnement','Internet','Snelheid','Televisie','Analoog','Digitaal','Interactief');
  11.  
  12. echo '<table>';
  13. $numItems = count($items);
  14. $numSubItems = count($items[0]);
  15.  
  16. // Loop over het aantal subitems dat er is.
  17. for($i = 0; $i < $numSubItems; $i++){
  18. echo '<tr><td><b>' . $subItems[$i] . '</b></td>';
  19. // Pak nu telkens het $i'de element van elke $j'de item.
  20. for($j = 0; $j < $numItems; $j++){
  21. echo '<td>' . $items[$j][$i] . '</td>';
  22. }
  23. echo '</tr>';
  24. }
  25. echo '</table>';


Dit geeft het gewenste resultaat, dank je Joost en vinTage!!
Nu kan ik weer verder totdat ik weer tegen een probleem loop.  
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s