login  Naam:   Wachtwoord: 
Registreer je!
 Forum

query(select ... where ... from)

Offline Diewy - 18/08/2005 17:43
Avatar van DiewyPHP interesse http://www.ngc.itim.be/members/index.php
Als je op 1 van de 2 bovenste profielen duwt zul je zien dat alles 2x word weergegeven. Dit komt omdat er 2 Admins zijn, uiteraard is dit niet bedoeling en moet het script enkel de gegevens van de juiste persoon eruit halen.

Ik haal alles uit mijn db met de volgende code:
  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","top secret");
  3.  
  4. $nick = $_GET['member'];
  5. $query_algemeen = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep FROM admin");
  6. $query_clan = mysql_query("SELECT functie,games,actief FROM admin");
  7. $query_computer = mysql_query("SELECT processor,geheugen,harde_schijf,grafische_kaart,extra FROM admin");
  8. $query_andere = mysql_query("SELECT commentaar,lievelingscitaat FROM admin");
  9.  
  10. ------------
  11.  
  12. while ($arr_algmeen = mysql_fetch_row($query_algemeen)) {
  13. echo "Naam: $arr_algemeen[2]";
  14. ...
  15. }
  16. ...


Nu had ik aan de hand van verschillende tutorials gevond dat ik dit moest gebruiken:
  1. $query_algemeen = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep WHERE adminnaam=Diewy FROM admin");

dus met WHERE
die Diewy is mijn adminnaam en kan ik natuurlijk nog altijd vervangen door $_GET['member'] ofzo...

Als ik dit doe geeft hij de volgende error:
  1. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /opt/www/landuytb/web/ngc.itim.be/members/profiel_admin.php on line 65

Nochtans de admin "Diewy" bestaat wel degelijk!!

Deze MySql n00b heeft hulp nodig van jullie professioneel advies ;-)

21 antwoorden

Gesponsorde links
Offline Rens - 18/08/2005 17:45
Avatar van Rens Gouden medaille

Crew algemeen
Je hebt een fout in je query.
Je geeft eerst je tabel op, en dan pas je WHERE statement.

  1. $query_algemeen = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep FROM admin WHERE adminnaam=Diewy");


En gebruik error handling, dit zorgt ervoor dat je een error krijgt als je query niet goed word uitgevoerd.
Tevens zal het de error geven waarom hij niet goed word uitgevoerd.
http://www.site...amp;id=805
Offline Diewy - 18/08/2005 17:50
Avatar van Diewy PHP interesse Lukt nog steeds niet, kijk maar op de site:
http://www.ngc....mber=Diewy

en een error handeling zal ik eens proberen
Offline Ibrahim - 18/08/2005 17:52 (laatste wijziging 18/08/2005 17:57)
Avatar van Ibrahim PHP expert post eens je hele code van het weergeven van de profiel ik zie alleen ...

  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","top secret");
  3.  
  4. $nick = $_GET['member'];
  5. $query = mysql_query("SELECT * FROM admin WHERE nick='".$nick."'");
  6. //waarom zoveel querys :s parstijd word alleen langer...
  7.  
  8. ------------
  9.  
  10. // en houd vars buiten quotes
  11. while ($arr_algmeen = mysql_fetch_assoc($query)) { //assoc gaat sneller
  12. echo "Naam: ".$assoc['row waar naam word opgeslagen']."";
  13. ...
  14. }
  15. ...
  16. ?>
Offline Diewy - 18/08/2005 17:58 (laatste wijziging 20/08/2005 01:01)
Avatar van Diewy PHP interesse ik dacht dat het nogal te lang ging zijn, maar is hij:
  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","something");
  3.  
  4. $nick = $_GET['member'];
  5. $query_algemeen = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep FROM admin WHERE adminnaam=Diewy");
  6. $query_clan = mysql_query("SELECT functie,games,actief FROM admin");
  7. $query_computer = mysql_query("SELECT processor,geheugen,harde_schijf,grafische_kaart,extra FROM admin");
  8. $query_andere = mysql_query("SELECT commentaar,lievelingscitaat FROM admin");
  9. ?>
  10. <html>
  11. <head>
  12.  
  13. <title>NGC - Netwerk Gaming Clan</title>
  14.  
  15. <!-- meta -->
  16. <meta name="author" content="Wyns Dieter">
  17. <meta name="robots" content="index">
  18.  
  19. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  20. <meta http-equiv="imagetoolbar" content="no">
  21. <meta http-equiv="Content-Language" content="nl-be">
  22.  
  23. <!-- stylesheets -->
  24. <link rel="stylesheet" href="../../../_styles/screen.css" type="text/css" media="screen">
  25.  
  26. </head>
  27.  
  28. <body>
  29. relevant ?
  30. </body>
  31. </html>
Offline Ibrahim - 18/08/2005 18:00 (laatste wijziging 18/08/2005 18:01)
Avatar van Ibrahim PHP expert je probleem is dat je veel querys gebruikt gebruik gewoon eentje. En dan moet je ook nog eens variabelen buiten quotes houden. En dan moet je ook bij de where adminnaam='".$nick."' en niet deway ofzo 

en niet te veel HTML echoen
Offline Diewy - 18/08/2005 18:09 (laatste wijziging 20/08/2005 01:02)
Avatar van Diewy PHP interesse ja kweetet, die html is idd nogal veel ge'echo't  

er was oorspronkelijk maar 1 query, maar omdat grafische_kaart, zonder T was geschreven en ik die fout maar niet vond heb ik het allemaal opgesplitst en zo de fout ondekt.
En dat kan normaal toch geen kwaad? 

ja kweetet da daar $nick moet komen, maar dat was nu ff om is te testen, want in $nick staat toch Diewy dus ja... 


/// edit ///

Ik heb dus alles zitten aanpassen 
en nu heb ik de volgende code:
  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","");
  3.  
  4. $nick = $_GET['member'];
  5. $query = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep,functie,games,actief,processor,geheugen,harde_schijf,grafische_kaart,extra,commentaar,lievelingscitaat FROM admin WHERE adminnaam=".$nick."");
  6. ?>
  7. <html>
  8. <head>
  9.  
  10. <title>NGC - Netwerk Gaming Clan</title>
  11.  
  12. <!-- meta -->
  13. <meta name="author" content="Wyns Dieter">
  14. <meta name="robots" content="index">
  15.  
  16. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  17. <meta http-equiv="imagetoolbar" content="no">
  18. <meta http-equiv="Content-Language" content="nl-be">
  19.  
  20. <!-- stylesheets -->
  21. <link rel="stylesheet" href="../_styles/screen.css" type="text/css" media="screen">
  22.  
  23. </head>
  24.  
  25. <body>
  26. relevant ?
  27. </body>
  28. </html>

maar nu krijg ik deze error:
Citaat:
Parse error: parse error, unexpected $ in /opt/www/landuytb/web/ngc.itim.be/members/profiel_admin.php on line 144

en ik snap dus echt ni wat er mis is met de $ in mijn script... 
Offline Simon - 18/08/2005 20:57
Avatar van Simon PHP expert gebruik eens elseif 

  1. <?php
  2. if($arr_clan[2] == ja)
  3. {
  4. echo "<img src=\"../_images/actief.png\">";
  5. }
  6. elseif($arr_clan[2] == beetje)
  7. {
  8. echo "<img src=\"../_images/actief_beetje.png\">";
  9. }
  10. elseif($arr_clan[2] == nee)
  11. {
  12. echo "<img src=\"../_images/actief_niet.png\">";
  13. }
  14. ?>
Offline Diewy - 19/08/2005 11:17
Avatar van Diewy PHP interesse done

de error van het $ is ondertussen ook opgelost

dus nu gebruik ik de volgende code:
  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","");
  3.  
  4. $nick = $_GET['member'];
  5. $query = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep,functie,games,actief,processor,geheugen,harde_schijf,grafische_kaart,extra,commentaar,lievelingscitaat FROM admin WHERE adminnaam=".$nick."");
  6. ?>
  7. <html>
  8. <head>
  9.  
  10. <title>NGC - Netwerk Gaming Clan</title>
  11.  
  12. <!-- meta -->
  13. <meta name="author" content="Wyns Dieter">
  14. <meta name="robots" content="index">
  15.  
  16. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  17. <meta http-equiv="imagetoolbar" content="no">
  18. <meta http-equiv="Content-Language" content="nl-be">
  19.  
  20. <!-- stylesheets -->
  21. <link rel="stylesheet" href="../_styles/screen.css" type="text/css" media="screen">
  22.  
  23. </head>
  24.  
  25. <body>
  26.  
  27. <table class="screen" cellspacing="0">
  28. <tr>
  29. <td class="zijden"></td>
  30. <td class="overganglinks"></td>
  31. <td valign="top" width="700" bgcolor="#5C390A">
  32. <!-- begin main -->
  33. <table class="main" cellspacing="0">
  34. <tr>
  35. <td class="top">
  36. <!-- begin header -->
  37. <img name="header" src="../_images/header.png" usemap="#m_header">
  38. <map name="m_header">
  39. <area shape="rect" coords="29,47,252,131" href="../index.php">
  40. <area shape="rect" coords="361,18,409,33" href="../info/index.php">
  41. <area shape="rect" coords="420,18,520,33" href="index.php">
  42. <area shape="rect" coords="531,18,603,33" href="games/index.php">
  43. <area shape="rect" coords="615,18,686,33" href="http://www.netwerk.be/forum/list/topics?categoryid=2076" target="_blank">
  44. </map>
  45. <!-- einde header -->
  46. </td>
  47. </tr>
  48. <tr>
  49. <td class="text">
  50. <!-- begin tekst -->
  51. <table height="100%" width="700" cellpadding="0" cellspacing="0" border="0">
  52. <!-- begin overzicht van members -->
  53. <tr>
  54. <td height="80%" valign="top">
  55. <p><img src="../_images/members.png"></p>
  56. <blockquote>
  57. <div align="right"><h1><?php echo $nick; ?></h1></div>
  58. <?php
  59. while ($arr = mysql_fetch_row($query))
  60. {
  61. ?>
  62. <table width="100%">
  63. <tr>
  64.  
  65. <td valign="top" width="120px">
  66. <!-- hier komt pic -->
  67. </td>
  68. <td valign="top">
  69. <b>Persoonlijke Info</b><br />
  70. Naam: <?php echo $arr[2]; ?><br />
  71. Van: <?php echo $arr[3]; ?><br />
  72. Leeftijd:
  73. <?php
  74. if($arr[4] != null)
  75. {
  76. $geboortedatum == $arr[4];
  77. $geboortejaar = substr($geboortedatum, 0, 4);
  78. $geboortemaand = substr($geboortedatum, 5, 2);
  79. $geboortedag = substr($geboortedatum, 8, 2);
  80. $dag = date("d"); $maand = date("m");
  81. $jaar = date("Y");
  82. if ($maand < $geboortemaand)
  83. {
  84. $leeftijd = ($jaar - $geboortejaar) -1;
  85. }
  86. elseif ($maand == $geboortemaand)
  87. {
  88. if ($dag<$geboortedag)
  89. {
  90. $leeftijd = ($jaar - $geboortejaar) -1;
  91. }
  92. else
  93. {
  94. $leeftijd = $jaar - $geboortejaar;
  95. }
  96. }
  97. else
  98. {
  99. $leeftijd = $jaar - $geboortejaar;
  100. }
  101. }
  102. echo "$leeftijd";
  103. ?>
  104. <br />
  105. </td>
  106. </tr>
  107. <tr>
  108. <td valign="top"></td>
  109. <td valign="top">
  110. <b>Clan Info</b><br />
  111. Functie: <?php echo $arr[7]; ?><br />
  112. Games: <?php echo $arr[8]; ?> <br />
  113. Actief: &nbsp;&nbsp;
  114. <?php
  115. if($arr_clan[2] == ja)
  116. {
  117. echo "<img src=\"../_images/actief.png\">";
  118. }
  119. elseif($arr_clan[2] == beetje)
  120. {
  121. echo "<img src=\"../_images/actief_beetje.png\">";
  122. }
  123. elseif($arr_clan[2] == nee)
  124. {
  125. echo "<img src=\"../_images/actief_niet.png\">";
  126. }
  127. ?><br />
  128. <br />
  129. </td>
  130. </tr>
  131. <tr>
  132. <td valign="top"></td>
  133. <td valign="top">
  134. <b>Systeem Info</b><br />
  135. Processor: <?php echo $arr[10]; ?> <br />
  136. Geheugen: <?php echo $arr[11]; ?> <br />
  137. Harde Schijf: <?php echo $arr[12]; ?> <br />
  138. Grafische kaart: <?php echo $arr[13]; ?> <br />
  139. <br />
  140. </td>
  141. </tr>
  142. <tr>
  143. <td valign="top"></td>
  144. <td valign="top">
  145. <b>Extra Commentaar:</b><br />
  146. <?php echo nl2br($arr[15]); ?>
  147. </td>
  148. </tr>
  149. </table>
  150. <?php
  151. }
  152. ?>
  153. </blockquote>
  154. </td>
  155. </tr>
  156. <!-- einde overzicht members -->
  157. <tr>
  158. <td valign="top"></td>
  159. </tr>
  160. </table>
  161. <!-- einde tekst -->
  162. </td>
  163. </tr>
  164. </table>
  165. <!-- einde main -->
  166. </td>
  167.  
  168. <td class="overgangrechts" valign="bottom"><img src="../_images/copyright.gif" width="13" height="85"></td>
  169. <td class="zijden"></td>
  170. </tr>
  171. </table>
  172.  
  173. </body>
  174. </html>


http://www.ngc....mber=Diewy
zoals je voor het moment kunt zien wilt die where dus niet werken! 
Offline Ibrahim - 19/08/2005 11:23
Avatar van Ibrahim PHP expert geef eens je tabellen dan zal ik eens zien wat er fout is
Offline Rens - 19/08/2005 11:23
Avatar van Rens Gouden medaille

Crew algemeen
Nu heb je nog steeds niet gedaan, wat ik in mijn eerste post al zei:
Gebruik error handling.

Die error is gewoon omdat je query niet goed word uitgevoerd.
Als je error handling gebruikt (or die(MySQL_Error());) of dat script dat ik je gaf, had je hem waarschijnlijk al opgelost.

Ik heb al een vermoeden waar dit door komt:
  1. $query = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep,functie,games,actief,processor,geheugen,harde_schijf,grafische_kaart,extra,commentaar,lievelingscitaat FROM admin WHERE adminnaam=".$nick."");
  2. ?>


En dan het stukje bij adminnaam=".$nick."".

Probeer de volgende query eens:
  1. $query = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep,functie,games,actief,processor,geheugen,harde_schijf,grafische_kaart,extra,commentaar,lievelingscitaat FROM admin WHERE adminnaam='".$nick."'");
  2. ?>


Onthoud dat strings altijd tussen quotes (' en ') moeten.
Getallen hoeven dat niet per sé (liever niet).
Offline Ibrahim - 19/08/2005 11:25 (laatste wijziging 19/08/2005 11:27)
Avatar van Ibrahim PHP expert en aangezien je erg veel rijen uit je database haalt is het beter om een sterretje in de plaats daarvan te zetten hoef je ook niet zoveel querys te maken.

dus SELECT * FROM ....
Offline Rens - 19/08/2005 11:29
Avatar van Rens Gouden medaille

Crew algemeen
Ligt er maar net aan, als dat nog niet de helft van de tabel "admin" is zou ik dat zeker niet doen.
Hij haalt dan een hoop onnodige waarden op waar je toch niks mee kunt.
Dus dan is het het beste om alles apart op te halen.

Maar als je ruim over de helft zit, of dat is alles uit de tabel "admin", zou je inderdaad een * kunnen gebruiken.
Offline Diewy - 19/08/2005 11:38 (laatste wijziging 19/08/2005 17:12)
Avatar van Diewy PHP interesse het is gelukt met jouw code Rensjuh!
bedankt!!!! 
en die error handeling staat er nu ook in 

//// edit ////

btw: wat is er hier mis mee?
  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","");
  3.  
  4. mysql_query("UPDATE admin SET naam='WD' WHERE id=1") or die("Ongeldige query: " . mysql_error());
  5.  
  6. echo "updated";
  7. ?>

hij geeft gewoon updated, mar er is niks veranderd 
Offline BigBug - 19/08/2005 19:32
Avatar van BigBug PHP expert Wat wil je aanpassen? je laad niks in en je kan niks veranderen??
Offline Diewy - 19/08/2005 23:31
Avatar van Diewy PHP interesse http://www.site...amp;id=169

zoals in het voorbeeld daar
Offline Xtent - 19/08/2005 23:46
Avatar van Xtent Onbekend
  1. <?php
  2. mysql_connect("mysql-1.priorweb.be","ngcadmin","");
  3.  
  4. $query = "UPDATE admin SET naam='WD' WHERE id=1";
  5. mysql_query($query) or die (mysql_error());
  6.  
  7. echo "updated";
  8. ?>


* Denk dat je dat nodig hebt.
Offline Diewy - 20/08/2005 00:40 (laatste wijziging 20/08/2005 12:53)
Avatar van Diewy PHP interesse ja dat werkt, maar wat is er nu anders aan mijn code? 


en wat is er mis met dit?
srr dat ik maar blijf vragen!
  1. <?php
  2. if(isset($_POST['submiter'])) {
  3. mysql_connect("mysql-1.priorweb.be","ngcadmin","");
  4.  
  5. $snaam = addslashes($_POST['naam']);
  6. $svan = addslashes($_POST['van']);
  7.  
  8. $query = "UPDATE admin SET naam='".$snaam."' WHERE id=1";
  9. mysql_query($query) or die (mysql_error());
  10.  
  11. echo "updated";
  12. }
  13. else {
  14. echo "Mislukt";
  15. }
  16. ?>

hij geeft terug updated, maar als ik
echo $_POST['naam'];
doe dan geeft ie niks...

mijn form:
  1. <form name="profiel" method="POST" action="profiel_updater.php">
  2. <?php
  3. while ($arr = mysql_fetch_row($query)) {
  4. ?>
  5. <table width="100%">
  6. <tr>
  7. <td valign="top" width="50%"><b>Algemeen</b></td>
  8. <td></td>
  9. </tr>
  10. <tr>
  11. <td valign="top" width="50%">Naam</td>
  12. <td><input type="text" name="naam" value="<?php echo $arr[2]; ?>" maxlength="255"></td>
  13. </tr>
  14. <tr>
  15. <td valign="top">Van</td>
  16. <td><input type="text" name="van" value="<?php echo $arr[3]; ?>" maxlength="255"></td>
  17. </tr>
  18. </table>
  19. <?php
  20. }
  21. ?>
  22. <input type="submit" name="submiter" value="Veranderen">
  23. </form>


IK heb google, en jullie zoekfunctie al gebruikt!
Offline Thomas - 20/08/2005 11:27 (laatste wijziging 20/08/2005 11:28)
Avatar van Thomas Moderator Hoeveel query-resultaten heeft $query in je tweede code-fragment ? Als je meerdere query-resultaten hebt, worden namelijk de formulier-velden "naam" en "van" dubbel gebruikt, en dat lijkt mij niet de bedoeling. Als $query maar één resultaatrij heeft, is dit geen probleem (maar waarom gebruik je dan een while ? ).

Als de tekst "updated" wordt afgedrukt, dan is je query uitgevoerd (want als je query niet goed was, dan zou er een mysql_error() gegenereerd zijn). Kijk maar in de database-tabel admin bij de rij met id 1.

Waarom $_POST['naam'] niet afgedrukt wordt weet ik niet. Probeer je dit te doen nadat er een formulier is verstuurd met een veld getiteld "naam" er in ? Of probeer je dit op een willekeurige pagina ?

PS: Probeer die inspring er eens uit te slopen voordat je code-fragmenten hier plaatst aub, dat lijkt mij een kleine moeite.
Offline Diewy - 20/08/2005 12:57 (laatste wijziging 20/08/2005 12:58)
Avatar van Diewy PHP interesse inspring is weg,

en dit is mijn query:
  1. <?php
  2. $query = mysql_query("SELECT adminnaam,email,naam,van,geboortedatum,geslacht,beroep,functie,games,actief,processor,geheugen,harde_schijf,grafische_kaart,extra,commentaar,lievelingscitaat FROM admin WHERE adminnaam='".$nick."'")
  3. or die("Ongeldige query: " . mysql_error());
  4. ?>

het is een lange

Ik gebruik while omdat ze dat hier doen:
http://www.site...&id=16

Ik denk dat mijn probleem enkel ligt aan dat $_POST['naam']; niks geeft! want dat wilt zeggen dat ie niks moet opgeven voor "naam". 
Offline Ibrahim - 21/08/2005 00:27 (laatste wijziging 21/08/2005 00:30)
Avatar van Ibrahim PHP expert
  1. <?php
  2. if(isset($_POST['submiter'])) {
  3. mysql_connect("mysql-1.priorweb.be","ngcadmin","");
  4.  
  5. $snaam = addslashes($_POST['naam']);
  6. $svan = addslashes($_POST['van']);
  7.  
  8. $query = "UPDATE admin SET naam='".$snaam."' WHERE id=1";
  9. mysql_query($query) or die (mysql_error());
  10.  
  11. echo "updated";
  12. }
  13. else {
  14. echo "Mislukt";
  15. }
  16. ?>


in dit script doe je iets raars als $_POST['submitter'] bestaat doe je al die mysql dingen maar als ie niet bestaat moet weergeven mislukt ?
Offline Diewy - 21/08/2005 11:19
Avatar van Diewy PHP interesse ja, een "beveiliging"
als je op de knop submitter geduwt hebt, mag hij dat doen
anders: mislukt

als je gaat kijken naar mij form, mij submit knop noemt: submitter 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.437s