Zoekscript met enkel resultaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jeroen Breur

Jeroen Breur

25/11/2014 14:26:20
Quote Anchor link
Wat klopt er niet aan deze code?
Alles lijkt te werken maar ook resultaten die WEL bestaan krijgen een lege output.

Databasetabel bestaat uit:

Naamtabel: lijstgemeente

ID
gemeente
hardheid

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
<?
//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
 
PHP hulp

PHP hulp

27/04/2024 09:59:21
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 14:35:19
Quote Anchor link
je gebruikt mysql_fetch_object, dus zou je $records->gemeente en $record->hardheid moeten gebruiken.

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 -
 
- SanThe -

- SanThe -

25/11/2014 14:42:23
Quote Anchor link
$_POST[trefwoord] moet zijn $_POST['trefwoord'] (dit geldt voor al de arraykeys).
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.
 
Jeroen Breur

Jeroen Breur

25/11/2014 14:44:39
Quote Anchor link
Dank.

Krijg alleen nogsteeds geen resultaat, ookal is deze wel aanwezig...
 
- SanThe -

- SanThe -

25/11/2014 14:46:16
Quote Anchor link
Tja.
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 14:46:51
Quote Anchor link
Mja, dan zal de veldnaam niet kloppen na het -> pijltje.
Gewijzigd op 25/11/2014 14:47:14 door - Ariën -
 
Jeroen Breur

Jeroen Breur

25/11/2014 14:48:59
Quote Anchor link
Als ik dit aanpas:

$_POST[trefwoord] moet zijn $_POST['trefwoord']

Krijg ik een witte pagina?
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 14:52:56
Quote Anchor link
- 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 -
 
Jeroen Breur

Jeroen Breur

25/11/2014 14:54:21
Quote Anchor link
Door een paar testen zie ik waar de fout ligt.

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..
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 14:58:59
Quote Anchor link
Variabelen buiten quotes, en let daarop welke quotes je string gebruikt.
Dus i.c.m. met mysqli_real_escape_string en MySQLi wordt het:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'])."'";
?>


Plaats je MySQLi_connect() (!!) ook tevens in $con.
Gewijzigd op 25/11/2014 14:59:17 door - Ariën -
 
Jeroen Breur

Jeroen Breur

25/11/2014 15:01:20
Quote Anchor link
Oke bedankt...ik ben een heel eind verder maar nu krijg ik nog ondanks dat er een resultaat aanwezig is,
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 {
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 15:11:36
Quote Anchor link
Blijkbaar is er niks gevonden dan?
 
Jeroen Breur

Jeroen Breur

25/11/2014 15:15:20
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 15:22:22
Quote Anchor link
Wat heb je nu aan code dan? En heb je al de tips doorgevoerd?
 
Jeroen Breur

Jeroen Breur

25/11/2014 15:25:32
Quote Anchor link
Niet de veiligheidstips de rest wel.
Code momenteel:

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
<?

 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>
<? } ?>
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 15:27:31
Quote Anchor link
mysql-functies, en mysqli_real_escape-string(). Dat gaat niet werken....
Plus dat $con niet bestaat.

Hmmm, lees mijn posts nog eens goed door anders.
 
Jeroen Breur

Jeroen Breur

25/11/2014 15:30:56
Quote Anchor link
Sorry ik begrijp het niet wat ik ook lees..
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 15:32:25
Quote Anchor link
Er staan voorbeelden bij, en in enkele gevallen linkjes. Wat begrijp je niet dan?
 
Jeroen Breur

Jeroen Breur

25/11/2014 15:34:37
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

25/11/2014 15:42:30
Quote Anchor link
Je hebt drie functiebibliotheken voor MySQL. Dit zijn MySQL_*(), Mysqli_() en PDO. De laatste houd ik even buiten beschouwing.

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 -
 
Jacco Engel

Jacco Engel

25/11/2014 15:42:54
Quote Anchor link
Je gebruikt nu mysql en mysqli door elkaar. Dat gaat hoe dan ook niet werken
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.