Versio

user input tijdens where vraag

Overzicht Reageren

Giel van Dam

Giel van Dam

30/05/2010 18:47:57
Quote Anchor link
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?
 
PHP hulp

PHP hulp

25/05/2012 17:09:40
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Joren de Wit
Beheerder

Joren de Wit

30/05/2010 18:53:43
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(ctype_digit($_POST['id']) {
  // Gebruik $_POST['id'] nu veilig in een query
}
?>
Gewijzigd op 30/05/2010 18:54:09 door Joren de Wit
 
Giel van Dam

Giel van Dam

30/05/2010 19:21:33
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?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);
?>


Mod edit: Blanche:
Gebruik tags om je code leesbaar te houden.[/edit]
Gewijzigd op 30/05/2010 19:24:59 door Joren de Wit
 
Joren de Wit
Beheerder

Joren de Wit

30/05/2010 19:27:29
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  // Er is een formulier verzonden
}
?>
 
Giel van Dam

Giel van Dam

30/05/2010 20:48:22
Quote Anchor link
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.
 
Joren de Wit
Beheerder

Joren de Wit

30/05/2010 21:06:30
Quote Anchor link
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...
 
Giel van Dam

Giel van Dam

30/05/2010 21:29:16
Quote Anchor link
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?
 
Afra ca

Afra ca

30/05/2010 22:08:55
Quote Anchor link
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 :)
Gewijzigd op 30/05/2010 22:09:23 door Afra ca
 
Giel van Dam

Giel van Dam

30/05/2010 22:58:16
Quote Anchor link
Bedankt allebei, en hiermee mag dit item afgesloten worden en ga ik verder met studeren!
 



Overzicht Reageren

Get Adobe Flash player