Zoekscript
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");
}
}
?>
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.
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
Nu maak je een verbinding aan en daarna stop je het script.
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?
<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>
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.
Heb je wel pagina's die het wel doen of krijg je overal een wit scherm?
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.
En zet dit bovenaan je script:
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 -
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.