login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mysql result 2x apart gebruiken. (Opgelost)

Offline UpLink - 24/02/2013 03:20
Avatar van UpLink... Beste leden,


Ik zal waarschijnlijk een domme vraag stellen, maar het is laat en mijn grijze massa is al half aan het slapen.
Het is als volgt:

  1. $result = mysql_query('SELECT id, bord, uitleg, cat FROM borden');


Hoe kan ik het resultaat "bord" voor 2 doeleinde gebruiken?

Hiermee bedoel enerzijds gewoon het resultaat zoals het doorkomt, maar ook anderzijds om het aan te passen naar een url.

bijvoorbeeld:

mysql-result = bord

gebruik 1 = zoals het mysql-result
gebruik 2 = ./pad/naar/bord.gif

Zo kan ik 1 resultaat voor 2 zaken apart gebruiken.
Hopelijk kan iemand helpen.

6 antwoorden

Gesponsorde links
Offline vinTage - 24/02/2013 13:04
Avatar van vinTage Nieuw lid
  1. $qry = mysql_query("....")
  2. while ($res = mysql_fetch_assoc($qry))
  3. {
  4. $bord = $res['bord'];
  5. }
  6. //doe whatever je wilt met $bord
  7. //als je query meerdere rijen ophaald, dan kun je $bord alleen in de while loop gebruiken.

Offline Martijn - 25/02/2013 16:27 (laatste wijziging 25/02/2013 17:22)
Avatar van Martijn Crew PHP Aanvulling op vinTage, $res['bord'] (& $bord) kun je in je while zo vaak gebruiken als je wilt, daar zit geen limiet aan.
Buiten een while kan dat trouwens ook gewoon, maar aangezien je een while gebruikt als je meer dan 1 regel, ga ik daar even niet van uit

Edit: Als je $result bedoelt, de reden dat je die niet nog een keer kan gebruiken, is omdat de pointer bij het laatste element staat.

Zie een rij mensen voor je (je $result), en iemand die er langs loopt flyers uit te delen (de while). Als je je while 1x heb gedaan, staat deze achteraan de rij. Om je $result nog een keer te while-en moet je terug naar het begin van de rij -> reset($result)
Offline UpLink - 27/02/2013 14:26
Avatar van UpLink ... Ik geraak er niet aan uit...
Ik loop continue vast...

Ik gebruik volgende code om een random resultaat uit de DB te halen en dan weer te geven:

  1. <style>
  2. table.db-table { border-right:1px solid #ccc; border-bottom:1px solid #ccc; }
  3. table.db-table th { background:#eee; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
  4. table.db-table td { padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
  5.  
  6. </style>
  7.  
  8. <?php
  9.  
  10. require('connect.php');
  11.  
  12. $sql = mysql_query("SELECT id, bord, uitleg, cat FROM borden ORDER BY RAND() LIMIT 1");
  13.  
  14. if(mysql_num_rows($sql)) {
  15. echo '<table cellpadding="0" cellspacing="0" class="db-table">';
  16. echo '<tr><th>ID</th><th>Naam bord</th><th>Uitleg<th>Type bord</th></tr>';
  17. while($rij = mysql_fetch_row($sql)) {
  18. echo '<tr>';
  19. foreach($rij as $key=>$resultaat) {
  20. echo '<td>',$resultaat,'</td>';
  21. }
  22. echo '</tr>';
  23. }
  24. echo '</table><br />';
  25. }
  26.  
  27. ?>
  28.  
  29. <input type=button value="Andere uitleg" onClick="window.location.reload()">


Nu zou ik daar een extra kolom bij willen hebben (in het resultaat) met een afbeelding van het bord. De namen van de borden (zowel in de database als de afbeelding zelf zijn hetzelfde, bijvoorbeeld bord "A1" staat in de database als "A1" en in de map als afbeelding noemt deze "A1.gif")

Hoe krijg ik die extra kolom met afbeelding voor elkaar want ik geraak er echt niet wijzer uit dan nu... hoe meer ik probeer, hoe meer ik verward geraak.

een voorbeeldje over hoe de code nu werkt kan je HIER vinden. die extra kolom zou tussen "Naam bord" en "uitleg" moeten komen of gewoon in de plaats van "Naam bord"...
Offline Martijn - 27/02/2013 14:35
Avatar van Martijn Crew PHP De foreach in dit stukje:
  1. while($rij = mysql_fetch_row($sql)) {
  2. echo '<tr>';
  3. foreach($rij as $key=>$resultaat) {
  4. echo '<td>',$resultaat,'</td>';
  5. }
  6. echo '</tr>';
  7. }


Heb je dat zelf bedacht of staat dat in de code? Indien niet zelf bedacht, wat die foreach doet is elk vakje afgaan en die in een <td> zetten.
Je kunt ook dit doen:
  1. while($rij = mysql_fetch_assoc($sql)) { // NOTE: Zie assoc ipv row
  2. echo '<tr>';
  3. echo '<td>'.$rij['id'].'</td>';
  4. echo '<td>'.$rij['bord'].'</td>';
  5. echo '<td>'.$rij['uitleg'].'</td>';
  6. echo '<td>'.$rij['cat'].'</td>';
  7. echo '</tr>';
  8. }


Mogelijk zie je op deze manier wel hoe je je plaatje aan kan roepen. De oplossing is simpel, daarom geef ik m niet (nu moet je zelf nadenken, dan onthoud je dit verder altijd ;))
Bedankt door: UpLink
Offline UpLink - 27/02/2013 14:52
Avatar van UpLink ... Martijn,

Bedankt voor de tip. Als je het zo doet is het idd heel simpel om te krijgen wat ik wou hebben.

I know, ik heb het duidelijk omslachtiger gemaakt dan het eigenlijk moest zijn...

Bedankt voor de duw in de juiste richting  
Offline Martijn - 27/02/2013 15:56
Avatar van Martijn Crew PHP Nog een tip: Echo hier niet. Zet alles in een variabel en echo die pas als je helemaal klaar bent met alles. Volgens de ongeschreven regels zet je geen html in je php (op dezelfde manier dat je niet inline styled). Uiteraard moet er ergens een punt van op het scherm zetten komen, maar beter is als dat op 1 punt gebeurd.

Op mn werk staat er (indien juist gemaakt, ook wij hebben legacy en uitzonderingen) pas helemaal onderaan 1 echo die een hele pagina teruggeeft met alles daarin
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s