login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Undefined variable: src

Offline MothZone - 05/05/2005 14:45
Avatar van MothZonePHP ver gevorderde Hallo,
Ik probeer in een programma info op te vragen uit een mysql-database, dit mvb een php-script.
Als ik de username van iemand wil opvragen is er geen probleem, maar bij de rang geeft hij een error.
Een stuk uit het script:
  1. <?php
  2. $scr_sel = "SELECT * FROM ".$prefix."leden WHERE user='".$_GET['user']."'";
  3. $scr_que = mysql_query($scr_sel);
  4. $scr = mysql_fetch_object($scr_que);
  5. switch($_GET['a2'])
  6. {
  7. case "user":
  8. echo($scr->user);
  9. break;
  10. case "rang":
  11. switch($src->rang)
  12. {
  13. case 1:
  14. echo("Member");
  15. break;
  16. case 2:
  17. echo("Admin");
  18. break;
  19. case 3:
  20. echo("Bèta-tester");
  21. break;
  22. default:
  23. echo("Rangtype ".$src->rang);
  24. break;
  25. }
  26. break;
  27. }
  28. ?>


Ziet iemand de fout? (denk zelf aan de switch in een switch, maar niet zeker)


Alvast thx
Greetz Mz

8 antwoorden

Gesponsorde links
Offline Legolas - 05/05/2005 14:49 (laatste wijziging 05/05/2005 14:52)
Avatar van Legolas Onbekend hmm ff code rewriten:
  1. <?
  2. $scr = mysql_fetch_assoc(mysql_query("SELECT * FROM ".$prefix."leden WHERE user='".$_GET['user']."'"));
  3. switch($_GET['a2'])
  4. {
  5. case "user":
  6. echo($scr['user']);
  7. break;
  8. case "rang":
  9. switch($scr['rang'])
  10. {
  11. case 1:
  12. echo("Member");
  13. break;
  14. case 2:
  15. echo("Admin");
  16. break;
  17. case 3:
  18. echo("Bèta-tester");
  19. break;
  20. default:
  21. echo("Rangtype ".$scr['rang']);
  22. break;
  23. }
  24. break;
  25. }
  26. ?>

Je gebruikt src i.p.v. scr kom ik net achter;-)
bij de switch en nog 1 keer daarna
r11 en r23
Offline MothZone - 05/05/2005 14:52
Avatar van MothZone PHP ver gevorderde ow jah, had die src en scr door elkaar gehaald
thx toch;-)

wrs een typfoutje (6x achter elkaar:s), enjah had er ook al een maand niet meer aan verder gedaan
Offline Legolas - 05/05/2005 14:59 (laatste wijziging 05/05/2005 14:59)
Avatar van Legolas Onbekend K raad ook dit dus aan (je ziet het in m'n bovenstaande code).
Als je 3 variabelen gebruikt, en eigenlijk alleen de laatste nodig hebt, zet die laatste dan in 1 variabele:
Dus dit is zeg maar ff fout:
  1. <?
  2. $scr_sel = "SELECT * FROM ".$prefix."leden WHERE user='".$_GET['user']."'";
  3. $scr_que = mysql_query($scr_sel);
  4. $scr = mysql_fetch_object($scr_que);
  5. ?>

Dit is beter / goed:
  1. <?
  2. $scr = mysql_fetch_object(mysql_query(SELECT * FROM ".$prefix."leden WHERE user='".$_GET['user']."'));
  3. ?>

Nog beter is om assoc i.p.v. object te gebruiken, dus zo:
  1. <?
  2. $scr = mysql_fetch_assoc(mysql_query(SELECT * FROM ".$prefix."leden WHERE user='".$_GET['user']."'));
  3. ?>

Snap je:D
Offline Thomas - 05/05/2005 15:13
Avatar van Thomas Moderator fetch_object is echt zooo loos... Het heeft niets te maken met object-georienteerd programmeren, het is ook de langzaamste vorm van resultaten fetchen.

mysql_fetch_object is er alleen maar voor de "vorm", om iemand de indruk te geven dattie object-georienteerd bezig is (waar ie dan overigens weinig van begrepen heeft, als ie dat denkt).
Offline MothZone - 05/05/2005 15:14 (laatste wijziging 05/05/2005 15:17)
Avatar van MothZone PHP ver gevorderde jajah, thx voor de info, vind het eigenlijk wat overzichtelijker zo, maarjah zal ieder zn mening zijn e;-)

edit: @FangorN: heb het zo geleerd, dus is eigenlijk een gewoonte nu
Offline Legolas - 05/05/2005 15:15 (laatste wijziging 05/05/2005 15:16)
Avatar van Legolas Onbekend @FangorN:
welke methode kun je dan het best gebruiken???
Deze?
  1. <?
  2. while($row = $query->fetchRow())
  3. { // codes
  4. }
  5. ?>

overigens gebruik ik fetch object ook nooit (meer;-))
Offline Thomas - 05/05/2005 15:21
Avatar van Thomas Moderator Wat is dat dan ?

Ik gebruik altijd fetch_assoc, als ik gegevens uit alle kolommen van een tabel nodig heb (SELECT * queries), of fetch_row als ik er maar enkele nodig heb (SELECT a, b, ... queries - zodat duidelijk is welke kolom met index 0, 1 et cetera bedoeld wordt).
Offline Legolas - 05/05/2005 15:23
Avatar van Legolas Onbekend fetchRow() is dacht ik net iets sneller dan mysql_fetch_row() en werkt hetzelfde. en error reporting gaat zo:
if(DB::isError($row) die($row->getMessage());
fetch_assoc is iets langzamer (scheelt haast niks hoor;-):)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.278s