Zoekscript
Goededag,
Ik heb weer een probleempje..
Ik wil graag een zoekfunctie maken. Het script hoeft maar op 1 veld te zoeken van een tabel en dan alle gegevens weer geven op het scherm.
echter krijg ik ik niks in beeld met de error code:
HTTP 500
Most likely causes:
The website is under maintenance.
The website has a programming error.
dus mijn vraag wat er mis is aan dit script. Klantnummer met hoofdletter is de naam van het veld in de tabel. die met kleine letter is de naam van het invulveld in het formulier.
<html>
<head>
<title>Zoeken: de resultaten</title>
</head>
<body>
<h2>U hebt gezocht op: </h2>
Ik heb weer een probleempje..
Ik wil graag een zoekfunctie maken. Het script hoeft maar op 1 veld te zoeken van een tabel en dan alle gegevens weer geven op het scherm.
echter krijg ik ik niks in beeld met de error code:
HTTP 500
Most likely causes:
The website is under maintenance.
The website has a programming error.
dus mijn vraag wat er mis is aan dit script. Klantnummer met hoofdletter is de naam van het veld in de tabel. die met kleine letter is de naam van het invulveld in het formulier.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// verbinding met database invoegen
$conn=odbc_connect('hoogesteen','','');
if (empty($_POST)){
exit();
if (!empty($_POST)){
// query samenstellen
$query="SELECT * FROM TBL_Klant WHERE
Klantnummer LIKE '%". $_POST["klantnummer"] . "%'";
$result = odbc_exec($conn, $query) or die ("FOUT: " . odbc_errormsg());
$aantal = odbc_num_rows($result);
}else{
// hier eventueel statements indien pagina niet correct werd aangeroepen
}
?>
// verbinding met database invoegen
$conn=odbc_connect('hoogesteen','','');
if (empty($_POST)){
exit();
if (!empty($_POST)){
// query samenstellen
$query="SELECT * FROM TBL_Klant WHERE
Klantnummer LIKE '%". $_POST["klantnummer"] . "%'";
$result = odbc_exec($conn, $query) or die ("FOUT: " . odbc_errormsg());
$aantal = odbc_num_rows($result);
}else{
// hier eventueel statements indien pagina niet correct werd aangeroepen
}
?>
<html>
<head>
<title>Zoeken: de resultaten</title>
</head>
<body>
<h2>U hebt gezocht op: </h2>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// controleer eerst of er records werden gevonden
if ($aantal == 0){
// Nee
echo ("Helaas, er werden geen records gevonden
met <b> ". $_POST["klantnummer"]. " </b><br>\n");
}else{
// Ja
echo("<b>query</b> : $query <hr>");
echo("<b>Er werden $aantal records gevonden:</b><br>");
while ($rij = odbc_fetch_array($result)){
echo("ID = " . $rij['Klantnummer'] . "<br>\n");
echo("Naam = ". $rij['Voornaam'] . " " . $rij['Achternaam'] . "<br>\n");
echo("Kamer = ". $rij['Straat'] . "<br>\n");
echo("Toestel = ". $rij['Huisnummer'] . "<br><hr>\n");
}
}
?>
// controleer eerst of er records werden gevonden
if ($aantal == 0){
// Nee
echo ("Helaas, er werden geen records gevonden
met <b> ". $_POST["klantnummer"]. " </b><br>\n");
}else{
// Ja
echo("<b>query</b> : $query <hr>");
echo("<b>Er werden $aantal records gevonden:</b><br>");
while ($rij = odbc_fetch_array($result)){
echo("ID = " . $rij['Klantnummer'] . "<br>\n");
echo("Naam = ". $rij['Voornaam'] . " " . $rij['Achternaam'] . "<br>\n");
echo("Kamer = ". $rij['Straat'] . "<br>\n");
echo("Toestel = ". $rij['Huisnummer'] . "<br><hr>\n");
}
}
?>
Het eerste wat me opvalt is:
Je mist de } om het te sluiten.
En daaronder staat dan if(!empty($_POST)) met een else
Zet verder je code tussen [.code] [./code] (zonder .)
Je mist ook beveiliging tegen SQL injection.
Je mist de } om het te sluiten.
En daaronder staat dan if(!empty($_POST)) met een else
Zet verder je code tussen [.code] [./code] (zonder .)
Je mist ook beveiliging tegen SQL injection.
Ik heb het veranderd naar dit:
Ik krijg echter alleen maar een wit scherm.
de beveiliging is voor nu even niet nodig, bedoeling is voor nu om het alleen eventjes werkend te krijgen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// verbinding met database invoegen
$conn=odbc_connect('hoogesteen','','');
exit();
if (!empty($_POST)){
// query samenstellen
$query="SELECT * FROM TBL_Klant WHERE
Klantnummer LIKE '%". $_POST["klantnummer"] . "%'";
$result = odbc_exec($conn, $query) or die ("FOUT: " . odbc_errormsg());
$aantal = odbc_num_rows($result);
}else{
// hier eventueel statements indien pagina niet correct werd aangeroepen
}
?>
// verbinding met database invoegen
$conn=odbc_connect('hoogesteen','','');
exit();
if (!empty($_POST)){
// query samenstellen
$query="SELECT * FROM TBL_Klant WHERE
Klantnummer LIKE '%". $_POST["klantnummer"] . "%'";
$result = odbc_exec($conn, $query) or die ("FOUT: " . odbc_errormsg());
$aantal = odbc_num_rows($result);
}else{
// hier eventueel statements indien pagina niet correct werd aangeroepen
}
?>
Ik krijg echter alleen maar een wit scherm.
de beveiliging is voor nu even niet nodig, bedoeling is voor nu om het alleen eventjes werkend te krijgen.
Gewijzigd op 25/10/2010 10:54:09 door Roy Jeurissen
Die exit op regel 4 moet weg.
Nu maak je een verbinding aan en daarna stop je het script.
Nu maak je een verbinding aan en daarna stop je het script.
@Roy
wat denk je dat exit doet.
wat denk je dat exit doet.
Gek he, Kijk eens naar regel 4.
Ik heb nu de Exit in regel weg gehaald. Het klinkt logisch om de exit wegtehalen. Maar het probleem blijft het zelfde. Ik heb nog steeds het witte scherm dat weergegeven wordt.
Is bovenstaande alles wat in je bestand staat?
Alles in mijn eerste post is het bestandje zoekscript.php. Verder heb ik nog een formulier zoek.php waar je de gegevens invult die doorverwijst naar zoekscript:
<html>
<head>
<title>Records zoeken</title>
</head>
<body>
<form action="zoekscript.php" method="post">
<input type="text" name="Klantnummer" value="" size="30">
<hr><br>
<input type="Submit" value="Zoeken">
<input type="Button" value="Terug" onclick="javascript:history.back();">
</form>
</body>
</html>
<html>
<head>
<title>Records zoeken</title>
</head>
<body>
<form action="zoekscript.php" method="post">
<input type="text" name="Klantnummer" value="" size="30">
<hr><br>
<input type="Submit" value="Zoeken">
<input type="Button" value="Terug" onclick="javascript:history.back();">
</form>
</body>
</html>
@Roy
Roep je de pagina wel elke keer aan vanaf je formulier, of roep je hem rechtstreeks aan (zoekscript.php)?
Doe anders ook even een echo (voor nu) in de lege else. Wellicht dat je dan wel wat ziet.
Roep je de pagina wel elke keer aan vanaf je formulier, of roep je hem rechtstreeks aan (zoekscript.php)?
Doe anders ook even een echo (voor nu) in de lege else. Wellicht dat je dan wel wat ziet.
Daar was ik ook al aan het denken maar dan zou het stukje dat in de body van zoekscript.php moeten worden weergegeven.
Heb je wel pagina's die het wel doen of krijg je overal een wit scherm?
Heb je wel pagina's die het wel doen of krijg je overal een wit scherm?
@Robert
Ik doe telkens de formulier openen en daar een cijfer invoeren die bestaat in mijn database(het klantnummer dus).
verder heb ik in de lege els een echo("test"); staan wat helaas niet weergeeft.
@Mark Het formulier werkt gewoon en verwijst ook gewoon door naar zoekscript.php wat eerst een wit scherm weergaf, echter krijg ik nu weer een http 500 error.
Ik doe telkens de formulier openen en daar een cijfer invoeren die bestaat in mijn database(het klantnummer dus).
verder heb ik in de lege els een echo("test"); staan wat helaas niet weergeeft.
@Mark Het formulier werkt gewoon en verwijst ook gewoon door naar zoekscript.php wat eerst een wit scherm weergaf, echter krijg ik nu weer een http 500 error.
Plaats eens je volledige code van zoekscript.php (tussen [code.] [./code] tags)
En zet dit bovenaan je script:
En zet dit bovenaan je script:
Is de odbc driver wel (correct) geinstalleerd? Want een http 500 duidt vaak op een server configuratie fout. Een haakje vergeten zal vaak een parse error geven.
Al eens in phpinfo gekeken?
En haal je database functies eens weg en probeer dan de pagina eens aan te roepen. Mocht dat wel goed gaan dan weet je dat het aan de database functies ligt. Dit heet debuggen en is vrij simpel te doen lijkt mij....
Het gegeven dat wanneer je de pagina rechtstreeks aanroept in een lege pagina resulteert en na het submitten een http 500 error geeft aan dat de fout binnen je if condition zit, dus hoogstwaarschijnlijk je de database functies (odbc_exec en / of num rows)
Al eens in phpinfo gekeken?
En haal je database functies eens weg en probeer dan de pagina eens aan te roepen. Mocht dat wel goed gaan dan weet je dat het aan de database functies ligt. Dit heet debuggen en is vrij simpel te doen lijkt mij....
Het gegeven dat wanneer je de pagina rechtstreeks aanroept in een lege pagina resulteert en na het submitten een http 500 error geeft aan dat de fout binnen je if condition zit, dus hoogstwaarschijnlijk je de database functies (odbc_exec en / of num rows)
Gewijzigd op 25/10/2010 12:09:31 door Arjan -
@ Arjen Ik heb even de databasefuncties eruit gehaald. Nadat ik de databasefuncties heb weggehaald krijgen we de meldingen dat hij heeft gezocht op een bepaald klantnummer. (niks gevonden) Als ik het goed begrijp ligt het dus aan de database functies. Hoe kunnen we nu het best de code opstellen?
Toevoeging op 25/10/2010 13:30:30:
Oplossing is gevonden doormijzelf
Ik zag dat er nog voor de error functie het woord FOUT stond tussen aanhalingsteken en daarachter dus de error functie.. door het woord weg te halen kreeg ik de volgende error melding ipv de gebruikelijke http 500 error:
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Deze melding spreekt voorzich en ik heb de rechte aangepast op mijn acces database. Daarna deed het script gewoon zoals hij het hoort te doen.
Alsnog bedankt voor alle hulp en gegeven informatie.
Toevoeging op 25/10/2010 13:30:30:
Oplossing is gevonden doormijzelf
Ik zag dat er nog voor de error functie het woord FOUT stond tussen aanhalingsteken en daarachter dus de error functie.. door het woord weg te halen kreeg ik de volgende error melding ipv de gebruikelijke http 500 error:
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Deze melding spreekt voorzich en ik heb de rechte aangepast op mijn acces database. Daarna deed het script gewoon zoals hij het hoort te doen.
Alsnog bedankt voor alle hulp en gegeven informatie.




