user input tijdens where vraag
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?
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)
1
2
3
4
5
2
3
4
5
<?php
if(ctype_digit($_POST['id']) {
// Gebruik $_POST['id'] nu veilig in een query
}
?>
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
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)
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
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);
?>
/*
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);
?>
Gebruik tags om je code leesbaar te houden.[/edit]
Gewijzigd op 30/05/2010 19:24:59 door Joren de Wit
Code (php)
1
2
3
4
5
2
3
4
5
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Er is een formulier verzonden
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Er is een formulier verzonden
}
?>
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.
Je kunt natuurlijk ook een andere weg inslaan en wat meer PHP kennis opdoen. Kijk bijvoorbeeld naar deze PHP beginnershandleiding...
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?
Gewijzigd op 30/05/2010 22:09:23 door Afra ca
Bedankt allebei, en hiermee mag dit item afgesloten worden en ga ik verder met studeren!