Hallo,

Ik ben nieuw met php en mysql begonnen, en heb dus geen ervaring. Graag zou ik een formuliertje maken voor mijn website die gegevens toont met voorwaarden, bvb als de postcode ingegeven wordt, toon de gemeente.

Mijn script die ik al heb, heb ik op localhost getest, maar krijg een foutmelding :
http://localhost/$PHP_SELF
Hieronder staat mijn script, kan iemand eens kijken wat eraan scheelt ?

alvast bedankt.

<form action="$PHP_SELF" method="post" name="Zoek gemeente">
<input name="pc" type="text" maxlength="5">
<input name="zoek" type="submit" value="Zoek">
</form>
<?php
if (isset($_POST['zoek'])){
$zoekpc = $_REQUEST[pc];
// SQL-query opstellen:
$sql = "SELECT `gemeente`"; // Selecteer 'gemeente' en 'prijs' ...
$sql .= "FROM `gemeenten` "; // uit de tabel 'gemeenten' ...
$sql .= "WHERE `postcode` = '$zoekpc'"; // waar de postcode = 'zoekpc'.
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD)
or die("Verbinding mislukt: " . mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die("Kon de database niet openen: " . mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die("Query mislukt: " . mysql_error());
// Alle records in de resultaatset weergeven als een tabelrij
// door het resultaat te verwerken als een associatieve array:
$rij = mysql_fetch_assoc($resultaat);
echo $rij["gemeente"];
// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);
}
?>
Het is na het ingeven en enter dat ik die string krijg in de url ??????
Zie jouw html-broncode, daarin staat bij de action vast en zeker een verkeerde waarde.

Tip: Laat de action in eerste instantie gewoon leeg, dan zal de browser keurig het script aanroepen waar het formulier in staat. Dan kun je het formulier gaan verwerken en de juiste (fout-) meldingen gaan geven.
Aan Klaasjan,

Eveneens dank voor uw snelle tussenkomst, maar het probleem blijft zich voordoen.

voor alle duidelijkheid: als ik de pagina in de browser aanroep: http://localhost/post.php is dit Ok . Na het invoeren van de postcode en Enter, krijg ik

http://localhost/$PHP_SELF

Hieronder plaats ik de gewijzigde code, hopelijk kan iemand mij verder helpen, waarvoor dank.

<html>
<head> <title> Gegevens opvragen uit een databank met een formulier</title>
</head>
<body>
<h1>Zoek een gemeente op basis van postcode.</h1>

<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="POST" name="Zoek gemeente"><input name="pc" type="text" maxlength="5">
<input name="zoek" type="submit" value="Zoek">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] =="POST"){
$zoekpc = $_REQUEST[pc];
// SQL-query opstellen:
$sql = "
SELECT
gemeente
FROM
gemeenten
WHERE
postcode = '".mysql_real_escape_string($zoekpc)."'
";

// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD)
or die("Verbinding mislukt: " . mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die("Kon de database niet openen: " . mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die("Query mislukt: " . mysql_error());
// Alle records in de resultaatset weergeven als een tabelrij
// door het resultaat te verwerken als een associatieve array:
$rij = mysql_fetch_assoc($resultaat);
echo $rij["gemeente"];
// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);
}
?>

</body>
</html>
Aan pcFrank,

Hallo, ik heb de "action" eens weggelaten en kreeg nu deze foutmelding:

Notice: Use of undefined constant pc - assumed 'pc' in C:\wamp\www\post.php on line 13

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\post.php on line 21

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\post.php on line 21

Dank
Van de Putte schreef op 21.12.2008 15:44
Aan pcFrank,

Hallo, ik heb de "action" eens weggelaten en kreeg nu deze foutmelding:

Notice: Use of undefined constant pc - assumed 'pc' in C:\wamp\www\post.php on line 13

Heel goed, het is ook dan ook fout.

$zoekpc = $_REQUEST[pc];

mag worden: $_POST['pc']

POST omdat je het formulier met POST verstuurd en pc hoort tussen quotes te staan omdat het een string betreft en géén constante (zie de foutmelding)

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\post.php on line 21

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\post.php on line 21

Dank
Blijkbaar is er (nog) geen connectie met de MySQL-database, de functie mysql_real_escape_string() probeert nu zonder juiste logingegevens zelf een connectie op te zetten, wat jammerlijk mislukt.

Maak dus eerst een connectie en ga pas daarna mysql_real_escape_string() toepassen. Geef in mysql_real_escape_string() ook ALTIJD de connectie op!!! Ook al laten de meeste mensen dit weg, het zorgt voor onverwachte problemen en bugs.

mysql_real_escape_string($connectie, $waarde);

Waarbij $connectie de door jou aangemaakte connectie moet voorstellen.
Hallo,

Hier de php code zoals ze er nu uitziet, terug "action" geplaatst:

Dit is de foutmelding nu:


Notice: Use of undefined constant pc - assumed 'pc' in C:\wamp\www\post.php on line 14

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\post.php on line 22

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\post.php on line 22

CODE:

<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="POST" name="Zoek gemeente">
<input name="pc" type="text" maxlength="5">
<input name="zoek" type="submit" value="Zoek">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] =="POST"){
$zoekpc = $_REQUEST[pc];
// SQL-query opstellen:
$sql = "
SELECT
gemeente
FROM
gemeenten
WHERE
postcode = '".mysql_real_escape_string($zoekpc)."'
";

// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD)
or die("Verbinding mislukt: " . mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die("Kon de database niet openen: " . mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die("Query mislukt: " . mysql_error());
// Alle records in de resultaatset weergeven als een tabelrij
// door het resultaat te verwerken als een associatieve array:
$rij = mysql_fetch_assoc($resultaat);
echo $rij["gemeente"];
// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);
}
?>
Regel 11: mysql_real_escape_string
Regel 17: connectie met de server

Logisch dat op regel 11 de connectie mislukt. Maak dus eerst een connectie en ga pas later met je query en je veilige input klooien.
Hallo,

Alvast beiden bedankt voor de moeite, maar ik ga eerst maar de cursus volgen, en zie dan wel verder.

nog een fijne zondag
Dat is redelijk vlot opgeven maar je moet het zelf weten natuurlijk
Goeieavond,

Ik geef niet vlug op, maar wilde jullie zondag niet voortdurend onderbreken met mijn probleem, kan u wel zeggen dat ik het ondertussen wel gevonden heb. De code van jullie beiden nog eens goed bekeken en de tips van jullie nogmaals ingebracht . En één van mijn fouten was het gebruik vergeten van F5, zodat ik een aangepaste code kreeg in de browser.

Alvast beiden dank voor jullie hulp, de volledige werkende code geef ik hieronder:


<html>
<head> <title> Gegevens opvragen uit een databank met een formulier</title>
</head>
<body>
<h1>Zoek een gemeente op basis van postcode.</h1>

<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="POST" name="Zoek gemeente">
<input name="pc" type="text" maxlength="5">
<input name="zoek" type="submit" value="Zoek">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] =="POST"){
$zoekpc = $_REQUEST['pc'];
// SQL-query opstellen:
$sql = "SELECT `gemeente`"; // Selecteer 'gemeente' en 'prijs' ...
$sql .= "FROM `gemeenten` "; // uit de tabel 'gemeenten' ...
$sql .= "WHERE `postcode` = '$zoekpc'"; // waar de postcode = 'zoekpc'.
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD)
or die("Verbinding mislukt: " . mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die("Kon de database niet openen: " . mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die("Query mislukt: " . mysql_error());
// Alle records in de resultaatset weergeven als een tabelrij
// door het resultaat te verwerken als een associatieve array:
$rij = mysql_fetch_assoc($resultaat);
echo $rij["gemeente"];
// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);
}
?>

</body>
</html>


Pas je post even aan en gebruik [ignore]
 en 
[/ignore] tags om je code heen. Om php code zet je uiteraard dit:<?php en ?>Gebruik je knop om dit te doen.

SanThe.

Reageren