login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Query uitvoeren in een andere query

Offline quatro - 18/03/2011 14:46 (laatste wijziging 18/03/2011 15:14)
Avatar van quatroNieuw lid Hoi,
Ik wil het volgende.
Een query die actieve concerten in de db laat zien.
Onder een concert wil ik nog een query uit laten voeren (op een andere tabel) om te laten zien welke kaarten hiervoor te reserveren zijn.
Hieronder staat de code (ingekort).

Alleen als ik dit uitvoer krijg ik de melding:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ##bestandsnaam##.
Deze melding verwijst naar de 2e query.

Kan iemand mij zeggen hoe ik dit wel voor elkaar kan krijgen?

  1. // De eerste query laat alle actieve concerten in de db zien
  2. $sql="SELECT * FROM qw_kvb_concerten WHERE actief = 1 ORDER BY year(datum) ASC, month(datum) ASC, day(datum) ASC";
  3. $result = mysql_query($sql);
  4. echo "<table cellpadding='0' cellspacing='0'>";
  5. while($row = mysql_fetch_array($result))
  6. {
  7. $datum = $row['datum'];
  8. $concertid = $row['concertid'];
  9. $dagst = strftime("%d", strtotime($datum));
  10. if (strftime("%d", strtotime($datum)) < 10) {
  11. $dag = str_replace("0", "", "$dagst");
  12. } else {
  13. $dag = $dagst;
  14. }
  15.  
  16. echo "<tr>";
  17. echo "<td valign='top' width='160' align='left'>"; ?><? echo strftime("%A", strtotime($datum)); ?> <? echo $dag; ?> <? echo strftime("%B", strtotime($datum)); ?><? echo "</td>";
  18. echo "<td valign='top' width='130'><b><font style='color: #72147E;'>" . $row['plaats'] . "</font></b><br>" . $row['locatie'] . "";
  19. echo "</td>";
  20. echo "<td valign='top' width='80'>" . $row['aanvang'] . "</td>";
  21. echo "</td>";
  22. echo "</tr>";
  23.  
  24. // Query 2 moet laten zien of er van betreffend concert kaarten te reserveren zijn
  25. $sqla="SELECT * FROM qwebshop WHERE concertid = ".$row['concertid']."";
  26. $resulta = mysql_query($sqla);
  27.  
  28. while($rowa = mysql_fetch_array($resulta))
  29. {
  30. echo "<tr>";
  31. echo "<td valign='top' width='160' align='left'>"; ?><? echo "</td>";
  32. echo "<td valign='top' width='80'>" . $rowa['prijs'] . "</td>";
  33. echo "<td valign='top'></td>";
  34. echo "</tr>";
  35. }
  36. // Einde query 2
  37.  
  38. // Volgend items query 1
  39. }
  40. echo "</table>";

3 antwoorden

Gesponsorde links
Offline Elmar85 - 18/03/2011 14:52
Avatar van Elmar85 Lid $row['concertid'] heeft een waarde?
Offline quatro - 18/03/2011 15:03
Avatar van quatro Nieuw lid Ja, dit is een veld uit de eerste query (een veld in de tabel concerten, maar ook een veld in webshop).
Maar blijkbaar kan ik zo geen 2 queries in elkaar laten draaien.
Offline Wim - 18/03/2011 18:42
Avatar van Wim Crew algemeen Je manier van werken is wel correct, hoewel niet optimaal.

Om het te debuggen:
Plaats achter mysql_query() een "or die(mysql_error())". Als de query dan mislukt, zal php de foutmelding gaan ophalen in je database server en deze weergeven.
De error die je krijgt zegt namelijk zelf al dat $resulta leeg is als je hem in mysql_fetch_array gooit. Dit kan komen door een syntax fout in je query, of omdat er geen rijen geretourneerd worden (en er dus geen concert met het id waarin je zit bestaat in je tabel qwebshop).

=> je kan het aantal geselecteerde records ophalen met PHP.net: mysql_num_rows en de waarde controleerd voordat je de mysql_fetch_array uitvoert.

=> Om te kijken wat er exact fout gaat, kan je de query -met het ID dat je verwacht waar het fout gaat, echo het om het te controleren- in phpmyadmin laten uitvoeren. Je kan dan onmiddelijk zien welke rijen geselecteerd zijn zonder dat je zelf tijd moet steken in het coderen daarvan
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.312s