Zoekscript met enkel resultaat
Alles lijkt te werken maar ook resultaten die WEL bestaan krijgen een lege output.
Databasetabel bestaat uit:
Naamtabel: lijstgemeente
ID
gemeente
hardheid
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
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
<?
//Connectie begin
CONNECTIE GEGEVENS VERWIJDERD
mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);
//Connectie eind
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$select = "SELECT * FROM lijstgemeente WHERE gemeente = ' .$_POST[trefwoord]. '";
$query = mysql_query($select) or die("Er is iets fout gegaan!");
$record = mysql_fetch_object($query);
if($_POST[trefwoord] == "")
{ echo "Niks ingevuld!<br><br><a href='zoeken.php'>Terug</a>";
} elseif(strlen($_POST[trefwoord]) < 3)
{ echo "Minstens 3 tekens invullen!<br><br><a href='zoeken.php'>Terug</a>";
} elseif ($record == "")
{ echo "Je zocht op <b>$_POST[trefwoord]</b> maar er werd niets gevonden!<br><br><a href='zoeken.php'>Terug</a>";
} else {
echo "<table align='left' border='0' cellspacing='0' cellpadding='4'>\n";
echo "<tr><td><b>Gemeente</b></td></tr>\n";
echo "<tr><td valign='top'>$record[gemeente] - $record[hardheid]</td></tr>";
echo "</table>\n";
}
} else {
?>
<table>
<tr>
<td>
<form name="formulier" action="zoeken.php" method="post">
<input type="text" name="trefwoord">
<input type="submit" name="submit" value="Zoeken"></form>
</td>
</tr>
</table>
<? } ?>
//Connectie begin
CONNECTIE GEGEVENS VERWIJDERD
mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);
//Connectie eind
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$select = "SELECT * FROM lijstgemeente WHERE gemeente = ' .$_POST[trefwoord]. '";
$query = mysql_query($select) or die("Er is iets fout gegaan!");
$record = mysql_fetch_object($query);
if($_POST[trefwoord] == "")
{ echo "Niks ingevuld!<br><br><a href='zoeken.php'>Terug</a>";
} elseif(strlen($_POST[trefwoord]) < 3)
{ echo "Minstens 3 tekens invullen!<br><br><a href='zoeken.php'>Terug</a>";
} elseif ($record == "")
{ echo "Je zocht op <b>$_POST[trefwoord]</b> maar er werd niets gevonden!<br><br><a href='zoeken.php'>Terug</a>";
} else {
echo "<table align='left' border='0' cellspacing='0' cellpadding='4'>\n";
echo "<tr><td><b>Gemeente</b></td></tr>\n";
echo "<tr><td valign='top'>$record[gemeente] - $record[hardheid]</td></tr>";
echo "</table>\n";
}
} else {
?>
<table>
<tr>
<td>
<form name="formulier" action="zoeken.php" method="post">
<input type="text" name="trefwoord">
<input type="submit" name="submit" value="Zoeken"></form>
</td>
</tr>
</table>
<? } ?>
Gewijzigd op 25/11/2014 14:30:34 door Jeroen Breur
Verder nog wat tips:
- Stap over naar de functies van MySQLi of PDO, de functies van MySQL_*() zullen in de volgende versies van PHP ter ziele gaan.
- Gebruik GEEN or die(), maar handel de querie netjes met if-else af, als er iets fout gaat. Een script hoort niet dood te gaan bij een foutje.
- Controleer je invoer met MySQLi_real_escape-string tegen SQL-injection. Veel hackpogingen vinden via deze weg plaats.
- Selecteer in je SELECT-query alleen de nodige velden, en niet alles met een *.
- Zet strings (teksten) welke tussen blokhaken staan tussen single-quotes: $_POST['trefwoord']
- Houd variabelen buiten quotes: echo "Tekst". $variabele. "en zo voorts..";]
- Gebruik tabs om je if-elseif-else statements in te springen. Dat maakt het beter overzichtelijker. Als ik twee accolades onder elkaar zie, dan gaan bij mij de alermbellen af. Een beetje goede PHP-editor kan dit zelfs handmatig.
Gewijzigd op 25/11/2014 14:36:23 door - Ariën -
Query is lek, gebruik mysql_real_escape_string().
Je haalt iets uit de database als object en je gaat een array printen.
Gebruik dubbele quotes bij html en enkele bij php.
Haal de $vars buiten de quotes.
Zet error_reporting(E_ALL) aan dan had je al behoorlijk wat gezien aan meldingen.
Krijg alleen nogsteeds geen resultaat, ookal is deze wel aanwezig...
Tja.
Gewijzigd op 25/11/2014 14:47:14 door - Ariën -
$_POST[trefwoord] moet zijn $_POST['trefwoord']
Krijg ik een witte pagina?
- SanThe - op 25/11/2014 14:42:23:
Zet error_reporting(E_ALL); aan dan had je al behoorlijk wat gezien aan meldingen.
Dit al bovenaan gezet?
Zo ja, wat heb je dan precies nu aangepast?
Gewijzigd op 25/11/2014 14:53:20 door - Ariën -
Als ik in de volgende regel:
$select = "SELECT * FROM lijstgemeente WHERE gemeente = ' .$_POST[trefwoord]. '";
' .$_POST[trefwoord]. ' vervang door 'plaatsnaamdieaanwezigis'
dan krijg ik wel een goede uitput.
Als ik ' .$_POST[trefwoord]. ' verander in ' .$_POST['trefwoord']. ' krijg ik een witte pagina..
Dus i.c.m. met mysqli_real_escape_string en MySQLi wordt het:
Code (php)
1
2
3
4
2
3
4
<?php // deze regel en de afsluitende regel is om het geheel in kleur te brengen
$select = "SELECT gemeente FROM lijstgemeente WHERE gemeente = '".mysqli_real_escape_string($con,$_POST['trefwoord'])."'";
?>
$select = "SELECT gemeente FROM lijstgemeente WHERE gemeente = '".mysqli_real_escape_string($con,$_POST['trefwoord'])."'";
?>
Plaats je MySQLi_connect() (!!) ook tevens in $con.
Gewijzigd op 25/11/2014 14:59:17 door - Ariën -
geen resultaat....
Kan dit liggen aan:
} elseif ($record == "")
{ echo "Je zocht op <b>$_POST[trefwoord]</b> maar er werd niets gevonden!<br><br><a href='zoeken.php'>Terug</a>";
} else {
Blijkbaar is er niks gevonden dan?
Wat heb je nu aan code dan? En heb je al de tips doorgevoerd?
Code momenteel:
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
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
<?
error_reporting(E_ALL);
//Connectie begin
$host = ""; //locatie van db
$user = ""; //gebruikesnaam van db
$pass = ""; //wachtwoord van db
$db = ""; //naam van db
mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);
//Connectie eind
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$select = "SELECT * FROM lijstgemeente WHERE gemeente = '".mysqli_real_escape_string($con,$_POST['trefwoord'])."'";
$query = mysql_query($select) or die("Er is iets fout gegaan!");
$record = mysql_fetch_object($query);
if($_POST['trefwoord'] == "")
{ echo "Niks ingevuld!<br><br><a href='zoeken.php'>Terug</a>";
} elseif(strlen($_POST[trefwoord]) < 3)
{ echo "Minstens 3 tekens invullen!<br><br><a href='zoeken.php'>Terug</a>";
} elseif ($record == "")
{ echo "Je zocht op <b>$_POST[trefwoord]</b> maar er werd niets gevonden!<br><br><a href='zoeken.php'>Terug</a>";
} else {
echo "<table align='left' border='0' cellspacing='0' cellpadding='4'>\n";
echo "<tr><td><b>Gemeente</b></td></tr>\n";
echo "<tr><td valign='top'>$record->gemeente - $record->hardheid</td></tr>";
echo "</table>\n";
}
} else {
?>
<table>
<tr>
<td>
<form name="formulier" action="zoeken.php" method="post">
<input type="text" name="trefwoord">
<input type="submit" name="submit" value="Zoeken"></form>
</td>
</tr>
</table>
<? } ?>
error_reporting(E_ALL);
//Connectie begin
$host = ""; //locatie van db
$user = ""; //gebruikesnaam van db
$pass = ""; //wachtwoord van db
$db = ""; //naam van db
mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);
//Connectie eind
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$select = "SELECT * FROM lijstgemeente WHERE gemeente = '".mysqli_real_escape_string($con,$_POST['trefwoord'])."'";
$query = mysql_query($select) or die("Er is iets fout gegaan!");
$record = mysql_fetch_object($query);
if($_POST['trefwoord'] == "")
{ echo "Niks ingevuld!<br><br><a href='zoeken.php'>Terug</a>";
} elseif(strlen($_POST[trefwoord]) < 3)
{ echo "Minstens 3 tekens invullen!<br><br><a href='zoeken.php'>Terug</a>";
} elseif ($record == "")
{ echo "Je zocht op <b>$_POST[trefwoord]</b> maar er werd niets gevonden!<br><br><a href='zoeken.php'>Terug</a>";
} else {
echo "<table align='left' border='0' cellspacing='0' cellpadding='4'>\n";
echo "<tr><td><b>Gemeente</b></td></tr>\n";
echo "<tr><td valign='top'>$record->gemeente - $record->hardheid</td></tr>";
echo "</table>\n";
}
} else {
?>
<table>
<tr>
<td>
<form name="formulier" action="zoeken.php" method="post">
<input type="text" name="trefwoord">
<input type="submit" name="submit" value="Zoeken"></form>
</td>
</tr>
</table>
<? } ?>
Plus dat $con niet bestaat.
Hmmm, lees mijn posts nog eens goed door anders.
Sorry ik begrijp het niet wat ik ook lees..
Er staan voorbeelden bij, en in enkele gevallen linkjes. Wat begrijp je niet dan?
Jij verteld mij dat ik $con moet gebruiken en vervolgens zeg je $con bestaat niet.. en welke functies werken er precies niet met elkaar dan?
De eerste is verouderd en raad ik niet meer aan om te gebruiken, daarentegen raad ik MySQLi juist wel aan. Let daar wel op dat je dan geen functies met MySQLi en MySQL met elkaar kan mixxen, en dat het toevoegen van een 'i'tje niet altijd werkt als je over wilt stappen.
Je kan voor nu ook de verouderde mysql_real_escape_string gebruiken() als je niet met MySQLi wilt werken.
Anyway, een tutorial voor MySQLi kan je hier vinden:
http://phptuts.nl/view/41/
Dus denk goed na wat je wilt gebruiken: De verouderde MySQL-functies, de vernieuwde MySQLi-functies of PDO.
Gewijzigd op 25/11/2014 15:42:39 door - Ariën -
Je gebruikt nu mysql en mysqli door elkaar. Dat gaat hoe dan ook niet werken