login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mysql: WHERE statement

Offline MadMike - 20/10/2004 14:06
Avatar van MadMikeLid Hallo mensen!
Ik ben momenteel bezig om een website te maken, maar loop vast op een bepaald punt 

  1. <? $query = mysql_query("SELECT * FROM downloads WHERE item = '$item' AND online = '1' AND ftp = '$ftp'") or die(mysql_error()); ?>


Dit is mn query. $ftp is een string met "1,2" als waarde. Wat er uitendelijk moet gebeuren is dat alle items geselecteerd worden die online staan (online = '1') en waarvan de ftp ook online is. Voor die ftp check heb ik een functie geschreven die een string returnd met de id's van de online ftp servers... (in dit gevan "1,2"). Maar als resultaat krijk ik alleen de items van server 1.
Vul ik alleen 2 bij $ftp in, dan krijg ik de waarden van ftp 2, dus dat klopt...
Mijn vraag is wat doe ik fout. Wil namelijk meedere waarden selecteren uit de db.

Alvast bedankt!

7 antwoorden

Gesponsorde links
Offline DRUNK - 20/10/2004 14:21
Avatar van DRUNK PHP gevorderde Wat steld de waarde in $ftp voor? Bevat deze string alle id's van de ftp servers die online zijn? Als dit zo is zal dit niet werken, omdat MySQL dan gaat zoeken naar een veld ftp -> met de waarde -> '1,2'. Als het niet zo is iets meer uitleg graag.
Offline xSc - 20/10/2004 14:38
Avatar van xSc Onbekend @Madmike, leer dit gelijk af.

Doe het zo:

  1. <?php
  2.  
  3. if (!$SelectDownloadInfo = mysql_query("SELECT * FROM downloads WHERE item = '$item' AND online = 1 AND ftp = '$ftp'")) {
  4. echo 'De geselecteerde download kan niet opgevraagd worden!';
  5. }
  6. else {
  7. // Ga door. Is er resultaat? Controleer dat met mysql_num_rows($SelectDownloadInfo)
  8. }
  9. ?>


Zie variabelenaam, zie foutafhandeling. Geen cijfers tussen quotes!
Offline MadMike - 20/10/2004 15:07 (laatste wijziging 20/10/2004 15:09)
Avatar van MadMike Lid @ Henri:
Ik zal er voortaan op letten.

En ik heb ondertussen al een oplossing gevonden:

  1. <?
  2. $ftp = "";
  3. $ftp_online = ftp_online(); // geeft de array met online ftp's terug
  4. $aantal_online = count($ftp_online);
  5. if($aantal_online > 0)
  6. {
  7. for($z = 0; $z < $aantal_online; $z++)
  8. {
  9. if($z == 0)
  10. {
  11. $ftp = "AND ftp= '$ftp_online[$z]'";
  12. } else {
  13. $ftp = $ftp." "."OR ftp = '$ftp_online[$z]'";
  14. }
  15. }
  16. $query = mysql_query("SELECT * FROM downloads WHERE item = '$item' AND online = 1 $ftp") or die(mysql_error());
  17. // de rest van mn code
  18. }
  19. ?>


En dit werkt! 
Offline xSc - 20/10/2004 15:19
Avatar van xSc Onbekend $ftp = $ftp . " " . "OR ftp = '$ftp_online[$z]'";

kan ook:

$ftp = $ftp . " OR ftp = '$ftp_online[$z]'";

Verder:

Het verschil is alleen AND en OR, dus $ftp behoeft alleen AND of OR te bevatten want de rest is hetzelfde.

Het spijt me, maar deze code vind ik niet echt mooi .
Offline MadMike - 20/10/2004 15:31
Avatar van MadMike Lid $ftp = $ftp . " OR ftp = '$ftp_online[$z]'";
had het ook moeten zijn... was nog bezig met aanpassen van de code toen ik het bericht poste
En over dat andere maak ik me niet zo druk...
Offline xSc - 20/10/2004 16:28
Avatar van xSc Onbekend Madmike, ik zal het even hard zeggen:

Die regeltjes, die ik eerder typte, moet je handhaven. Je code wordt netter, gestructureerder. Anders blijft het 'een ongeordend zooitje'.

Niet persoonlijk bedoeld, maar leer netjes werken. Zie mijn 'regelreactie'.
Offline cowbeast - 20/10/2004 17:43
Avatar van cowbeast Onbekend woow ftp = '$ftp_online[$z]' dit gaat langs geen kanten werken hoor!! het is ftp = '$ftp_online[z] 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s