Ik ben een releatieve leek en kan nergens op internet antwoord op deze vraag vinden.
Als ik informatie uit een database opvraag via
$sql = "SELECT * FROM `students` WHERE id=1";
dan komt keurig de info van id1 in beeld.

Maar eigenlijk wil ik de bezoeker zelf kan aangeven van wie hij de informatie wil zien.
Hij kent alle ID's
Ik zou denken dat er dan toch iets mogelijk is in de trant van
$sql = "SELECT * FROM `students` WHERE id=(VRAAG: WELKE ID WILT U ZIEN)";

Al onderzoekend denk ik dat het via een kleine omweg moet.
Eerst een fomuliertje en dan een resultaat gebruiken.
Dus iets als:

<!-- begin form -->
<form method=post>
<ul>
<li">
<label class="formFieldQuestion">
ID
</label>
<input class=mainForm type=text name=id id=id size='50' value=''>
</li>
<li class="mainForm">
<input id="saveForm" class="mainForm" type="submit" value="Submit" />
</li>
</form>
<!-- end of form -->
En dan lager op dezelfde html-pagina:
$sql = "SELECT * FROM `students` WHERE id=$id";

Wat doe ik fout?
Als je een formulier via de post methode verstuurt, komen de ingevoerde waarden in de $_POST array terecht. Het betreffende id kun je dus uitlezen met behulp van $_POST['id'].

Voordat je deze waarde in een query gebruikt, zul je in het geval van een id (dat een integer is) nog wel moeten controleren of dat ook daadwerkelijk het geval is:


<?php
if(ctype_digit($_POST['id']) {
  // Gebruik $_POST['id'] nu veilig in een query
}
?>
Beste Blanche PHP,
Bedankt voor je snelle reactie.
Toch zit er ergens nog een fout. komma, haakje of andere want het werkt nog niet.
Hier de hele code.


<?php
/*	
Vanaf hier de kode om iets op te halen uit de database
*/
?>


<!-- begin form -->
<form method=post>
<ul>
<li">
<label class="formFieldQuestion">
ID
</label>
<input class=mainForm type=text name=id id=id size='50' value=''>
</li>
<li class="mainForm">
<input id="saveForm" class="mainForm" type="submit" value="Submit" />
</li>
</form>
<!-- end of form -->

<?php
if(ctype_digit($_POST['id']) {
// Gebruik $_POST['id'] nu veilig in een query
}
?> 


<table border="1"> 

<?php

/* Verbinding met de MySQL database maken.*/

$db = mysql_connect("localhost" , "deb3986_E8Mthwor" , "MNfTjun33Oed0") or die (mysql_error());

/* Selecteer de database waarop de query gedraaid moet worden.*/

mysql_select_db("deb3986_E8Mthwor", $db);

/* Uitvoeren van de query.*/


$sql = "SELECT *  FROM `students`  WHERE id=$_POST['id']"; 



/* Het resultaat van de query in een array variabele stoppen, zodat

we deze later uit kunnen lezen.*/

$result = mysql_query($sql);
?>


[modedit="Mod edit: Blanche"]Gebruik [ignore]
[/ignore] tags om je code leesbaar te houden.[/edit]
Ja, je kunt ook niet simpelweg die regels in je script kopiëren. Je zult er wel iets meer mee moeten doen. Zo zul je je query uiteraard binnen dat if statement moeten plaatsen, anders heeft het geen nut. Verder zul je ook wel moeten controleren of er een formulier verzonden is, anders zullen de $_POST variabelen echt niet bestaan:


<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  // Er is een formulier verzonden
}
?>
Sorry Blanche,
Ik geloof dat ik toch net niet genoeg snap om jouw opmerking te kunnen uitvoeren.
Ik denk namelijk dat er niet echt gepost owrdt. Er hoeft toch niets opgeslagen te worden in een database? Het ingevoerde gegeven wordt direct gebruikt.
Ik heb wat zitten hanesen met jouw opmerkinge maar blijf foutmeldingen krijgen.

Doe ik een bot verzoek als ik je vraag mijn kode aan te passen?

Alvast bedankt.
Dat is geen bod verzoek, maar mijn reactie zou dan zijn: 'wat heb je ervoor over?' ;-)

Je kunt natuurlijk ook een andere weg inslaan en wat meer PHP kennis opdoen. Kijk bijvoorbeeld naar deze PHP beginnershandleiding...
Oké je hebt gelijk en dan leer ik er ook meer van.
Kan je me nog een hint geven?
Kan het wel in één html pagina kombineren of heb ik altijd twee pagina's nodig?
Eén waarin ik een vraag aan de bezoker stel en één waarin het resultaat te zien is?
En dat dan met een tussentijdse opslag in een database?
Uiteraard kan dat. Maar het is van groot belang voor zowel jezelf als anderen (bijv. mensen hier op het forum) dat je even de moeite neemt om de beginnershandleiding (link door Blanche gepost) gaat doorwerken. Het is zeker niet verkeerd bedoeld, maar zoals het nu lijkt heb je nog totaal geen idee hoe de structuur van php werkt. Dan kunnen wij wel paar voorbeelden geven maar zolang je geen idee hebt wat het doet heb je er weinig aan. Nogmaals, niet verkeerd bedoeld, en iedereen wordt er vrolijk en blij van :)
Bedankt allebei, en hiermee mag dit item afgesloten worden en ga ik verder met studeren!

Reageren