Vraag & Antwoord

Webprogrammeren & scripting

Geen gegevens uit mijn mysql database

13 antwoorden
  • Hallo, Ik ben een beginnende PHP-er en heb een scriptje geschreven wat niet uiteraard niet helemaal goed werkt. ik wil gegevens in een database kunnen stoppen (dat lukt nu wel), maar ik krijg ze er niet uit met de onderstaande code. Wat doe ik verkeerd?? [code:1:9a6fdeddd1] <html> <head> </head> <body> <form name='insAgenda' method='post'> <input type='text' name='naam'> <input type='text' name='adres'> <input type='submit' value='voeg toe'> </form> <?php mysql_connect( "localhost", "eric", "vh"); mysql_select_db("test"); if ($_POST["naam, adres"]) { $query = mysql_query("INSERT INTO contact(naam, adres) VALUES('$_POST[naam]','$_POST[adres]')") or die(mysql_error()); } ?> <?php $query = "SELECT * FROM contact" or die(mysql_error()); $naam = mysql_query($query) or die(mysql_error()); $result = mysql_fetch_object($naam) or die(mysql_error()); echo $result; mysql_close; ?> </body> </html> [/code:1:9a6fdeddd1] alvast bedankt. Eric.
  • Je krijgt een object terug met alle kolommen als properties. [url=http://www.php.net/mysql_fetch_object]zie de manual[/url] voor een voorbeeld. Voor jouw zou dus [color=blue:fc9f0bb470]echo $result->naam;[/color:fc9f0bb470] wel een resultaat moeten geven. btw. je laatste regel (mysql_close) klopt ook niet.
  • Dank je. Maar nu krijg ik maar 1 record terug uit de database. hoe kan ik er voor zorgen dat ie alle records terug geeft? Bedankt. Eric.
  • Heb je ook al op de eerder geposte link gekeken? Daar staat een voorbeeld wat exact doet wat jij wil.
  • $query = "SELECT * FROM contact" or die(mysql_error()); Daar kan je van maken, de mysql_error() is niet nodig: $query = "SELECT * FROM contact"; En aanroepen doe je dan met: while($obj = mysql_fetch_object($result)) { print $obj->naam . "<BR />"; } Zo krijg je een rijtje met je gegevens. Let er wel op dat je als naam de naam van een kolom geeft (bv. email, name).
  • oke bedankt psychonetics. Zoals ik al eerder zei ben ik een echte php-beginner. Nu heb de volgende vraag: Hoe controleren of er iets ingevuld is in desbetreffende invoervelden? Dit is de code die ik tot nu toe heb (hij slaat nergens op, maar ik moet toch iets proberen?): [code:1:aee59a3de6] <html> <head> </head> <body> <form name='insAgenda' method='POST'> <input type='text' name='naam'> <input type='text' name='adres'> <input type='submit' value='voeg toe'> </form> </body> </html> <?php mysql_connect("localhost", "username", "password"); mysql_select_db("test"); $naam = '$HTTP_POST_VARS[naam]'; $adres = '$HTTP_POST_VARS[adres]'; $insquery = "INSERT INTO contact(naam,adres) VALUES('$_POST[naam]','$_POST[adres]')" or die(mysql_error()); $insert = mysql_query($insquery); if ($insquery != " ") { echo "leeg"; //return false; } else { $insert; } ?> [/code:1:aee59a3de6] Alvast bedankt kenners. Eric.
  • Leer als eerste af om direct de geposte variabele in de query te zetten. Daarmee maak je het mensen die minder aardige dingen willen doen wel erg makkelijk om er bv nog een extra query aan toe te voegen en je hele database weg te gooien. Zet je geposte waarde in een variabele en die controleer je dan o.a op lengte en je stript eventuele HTMLcode eruit. Daar heeft PHP functies voor die je op php.net kunt vinden. Kijk voor tutorials bv ook eens op phpfreakz.nl. 2 artikelen die ook wel de moeite waard zijn http://phpfreakz.nl/artikelen.php?aid=106 http://phpfreakz.nl/artikelen.php?aid=74
  • [quote:faa5a95afe="Sjoerd Boerhout"]Leer als eerste af om direct de geposte variabele in de query te zetten. Daarmee maak je het mensen die minder aardige dingen willen doen wel erg makkelijk om er bv nog een extra query aan toe te voegen en je hele database weg te gooien. Zet je geposte waarde in een variabele en die controleer je dan o.a op lengte en je stript eventuele HTMLcode eruit. Daar heeft PHP functies voor die je op php.net kunt vinden. Kijk voor tutorials bv ook eens op phpfreakz.nl. 2 artikelen die ook wel de moeite waard zijn http://phpfreakz.nl/artikelen.php?aid=106 http://phpfreakz.nl/artikelen.php?aid=74[/quote:faa5a95afe] Bedankt voor de tip, maar hiermee heb ik helaas nog geen antwoord op mijn vraag :wink: . Daarbij komt dat ik er niks van snapt wat je schrijft, maar ik dan ook maar een prille beginner. Het gaat over beveiliging, dat maak ik er wel uit op. Ik heb ook een stuk van het artikel gelezen op phpfreaks, erg interessant. Maar voor een beginner niet denk ik. k snap wel dat julie als doorgewinterde programmeurs daar op hameren, maar om als beginner gemotiveerd te blijven, is het ook leuk om een werkend script te maken. Beveiliging is iets om over na te denken. groetjes, Eric.
  • Oke, even wat opmerkingen bij je code. Als je begrijpt wat ik vertel, dan moet het mogelijk zijn om je code zo aan te passen dat deze beter werkt. [quote:a3ef6b0752] $naam = '$HTTP_POST_VARS[naam]'; $adres = '$HTTP_POST_VARS[adres]'; [/quote:a3ef6b0752] Op deze plek bepaal je de waarde van de invoervelden. Als je dus wil controleren of deze gevuld zijn, dan lijkt me dat dit de plek is om dat te doen. Afhankelijk van de uitkomst kan je besluiten wat de vervolgacties zijn. Overigens is de manier waarop je de waarden ophaalt geen nette code. Het is niet nodig om de variabelen tussen enkele quotes te zetten (het zijn al strings) en bovendien zou je array indices juist weer wel moeten omsluiten met quotes (zie [url=http://www.php.net/manual/nl/language.types.array.php#language.types.array.donts]arrays sectie van de manual[/url]). En als laatste zou ik willen aanraden om de $_POST superglobal te gebruiken; $HTTP_POST_VARS is verouderd. Beter is dus: [code:1:a3ef6b0752] $naam = $_POST['naam']; $adres = $_POST['adres']; [/code:1:a3ef6b0752] [quote:a3ef6b0752] $insquery = "INSERT INTO contact(naam,adres) VALUES('$_POST[naam]','$_POST[adres]')" or die(mysql_error()); [/quote:a3ef6b0752] Het enige wat je hier doet is een stringwaarde toekennen aan de variabele $insquery. Het heeft dus geen zin om een mysql_error af te vangen. Die kan hier namelijk niet optreden. [quote:a3ef6b0752] $insert = mysql_query($insquery); [/quote:a3ef6b0752] Op deze plek wordt je query pas uitgevoerd. Als je dus iets wil afvangen dan zou het hier wat beter op z'n plek zijn. Het resultaat van de functie [url=http://www.php.net/mysql_query]mysql_query[/url] is, in het geval van een insertquery, [i:a3ef6b0752]true [/i:a3ef6b0752]of [i:a3ef6b0752]false[/i:a3ef6b0752]. Afhankelijk van het succes van het uitvoeren van de query (let op: dit zegt dus niets over het aantal rijen wat aangepast is!). Zie de manual voor meer informatie. [quote:a3ef6b0752] if ($insquery != " ") { echo "leeg"; //return false; } else { $insert; } [/quote:a3ef6b0752] Dit hele stuk heeft geen enkel nut. De variabele $insquery zal altijd ongelijk zijn aan " ", je hebt deze immers zelf al eerder samengesteld. Daarnaast druk je in het else deel de uitkomst van mysql_query af. Zie mijn vorige opmerking. Succes.
  • [quote:a60b84b114="Eric33"]Bedankt voor de tip, maar hiermee heb ik helaas nog geen antwoord op mijn vraag :wink: . Daarbij komt dat ik er niks van snapt wat je schrijft, maar ik dan ook maar een prille beginner. Het gaat over beveiliging, dat maak ik er wel uit op. [/quote:a60b84b114] Het antwoord staat er toch echt in. :wink: Je moet de variabele niet direct in de query zetten, maar eerst testen op een goeie waarde. [quote:a60b84b114="Eric33"]Ik heb ook een stuk van het artikel gelezen op phpfreaks, erg interessant. Maar voor een beginner niet denk ik. k snap wel dat julie als doorgewinterde programmeurs daar op hameren, maar om als beginner gemotiveerd te blijven, is het ook leuk om een werkend script te maken. Beveiliging is iets om over na te denken.[/quote:a60b84b114] Beveiliging is iets waar je vanaf het begin bij stil moet staan vind ik. Dat eerste artikel is ook voor beginners geschikt. Natuurlijk moet je gemotiveerd blijven, maar het kan zeker geen kwaad dat je ook weet wat je maakt en de fouten erin kunt zien. :wink:
  • OKe, bedankt weer voor jullie hulp en op- en aanmerkingen. Dit is wat ik er nu weer van gemaakt hebt. Het controleert of er iets ingevuld is in de twee tekstvelden alvorens het naar de database geschreven wordt. Het Werkt, maar of het netjes is weet ik niet. Vandaar dat ik het hier plaats voor eventuele verbeteringen. [code:1:7c444f5f48] <?php mysql_connect("localhost", "username", "password"); mysql_select_db("test"); $insquery = "INSERT INTO contact(naam,adres) VALUES('$_POST[naam]','$_POST[adres]')" or die(mysql_error()); $naam = $_POST[naam]; $adres = $_POST[adres]; $hello = "Beste "; $string = "$naam,"; if($naam == "") { echo "U hebt geen naam ingevuld"; return true; } elseif($adres == "") { echo "U hebt geen adres ingevuld"; return true; } else { $insert = mysql_query($insquery); echo $hello, $string, "<br><br>Uw naam en adres zijn toegevoegd aan onze database."; } ?> [/code:1:7c444f5f48] En vergeet niet, het is voor mij om veel te oefenen. Volgens mij kon ik door die(mysql_error()) te gebruiken in de Insertquery zien wat er mis ging in mijn query. Vandaar dat ik die erin heb gestopt. Puur voor mezelf ter ondersteuning dus, denk ik :wink: :oops: . Bedankt, Eric.
  • Paar puntjes: - Je hebt die die(mysql_error()) op de verkeerde plek staan. Heeft totaal geen zin daar, want er kan daar helemaal geen mysqlerror optreden. - Je zet nu eerst de waardes in de query en daarna ga je ze pas controleren?!?!? Dat moet dus andersom. [code:1:d5059a61a0] <?php mysql_connect("localhost", "username", "password"); mysql_select_db("test"); $naam = $_POST[naam]; $adres = $_POST[adres]; $hello = "Beste "; $string = "$naam,"; if( trim($naam) == "" ) { echo "U hebt geen naam ingevuld"; return true; } if( trim($adres) == "" ) { echo "U hebt geen adres ingevuld"; return true; } $insquery = "INSERT INTO contact(naam,adres) VALUES('$naam','$adres')"; $insert = mysql_query($insquery) or die(mysql_error()); echo $hello, $string, "<br><br>Uw naam en adres zijn toegevoegd aan onze database."; ?> [/code:1:d5059a61a0]
  • [color=blue:cc3c94e913][b:cc3c94e913]check je PB... t.[/b:cc3c94e913][/color:cc3c94e913]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.