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);
}
?>
<?php
// 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'.
?>
Dit mag je voortaan schrijven als:
<?php
// SQL-query opstellen:
$sql = "
SELECT
gemeente
FROM
gemeenten
WHERE
postcode = '".mysql_real_escape_string($zoekpc)."'
";
?>
100x eenvoudiger en veiliger omdat je nu onveilige data correct gaan escapen.

$PHP_SELF bestaat overigens niet, dat zal $_SERVER['PHP_SELF'] moeten zijn. Deze kun je uiteraard niet via de url aanroepen, het is een PHP-variabele.

Hallo,

Alvast dank voor de snelle reactie, ik heb de codes gewijzigd zoals u hier neerschreef, maar krijg nog steeds de gemeente niet te zien. Krijg nog steeds dezelfde fout.
Hieronder zet ik de volledige pagina , misschien heb ik toch nog iets fout geschreven.

<html>
<head> <title> Gegevens opvragen uit een databank met een formulier</title>
</head>
<h1>Zoek een gemeente op basis van postcode.</h1>
<form action=<?php $_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 (isset($_POST['zoek'])){
$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>
<?php $_SERVER['PHP_SELF']?>
Dit doet niks, dat had je zelf ook gezien? Je zou echo eens kunnen gebruiken...

Verder zie ik nergens een foutmelding, blijkbaar gaat het allemaal van een leien dakje. Of ben je soms vergeten om de foutmelding hier neer te zetten?
Misschien is het handig dat je ons verteld welke fout je krijgt?
Tevens wil ik je adviseren de beginners tutorials eens door te nemen zodat je een idee krijgt van netjes programmeren
Hallo,

De fout blijft steeds dezelfde : http://localhost/$PHP_SELF

Ik gebruik reeds een echo onderaan in de code op lijn 26, hierboven.

echo $rij["gemeente"];

Geen lachertje blijkbaar, PHP. HTML heb ik onder de knie, weinig problemen mee, maar dit ???

DANK
Wanneer ik naar localhost ga, zie ik geen enkele foutmelding, gaat perfect.

Maar dat is ook niet zo gek, dat is namelijk mijn eigen computer...

Wat doet de string $PHP_SELF trouwens in de url? Die kan niks doen, het is maar een string.
Hallo,

Om te antwoorden op Klaasian Boven, ik heb me ingeschreven voor een curusus php, die start in januari, dus dat belooft.

De string $PHP_SELF in de url begrijp ik evenmin als u, de mysql draait, en werkt, daar heb ik een eerste script op toegepast, gewoon "toon de gegevens uit de databank" en dat was OK, maar nu zit ik vast.

Aan beide leden, alvast bedankt.
Ok, om met het begin te beginnen:
1) Heb je een webserver met PHP op je pc geinstalleerd? Bv. WAMP of Xampp.
2) Wanneer je lokaal wilt testen, zul je via localhost naar het juiste script moeten gaan, dus bv. localhost/jouwscript.php
3) $PHP_SELF bestaat niet, vergeet die zooi. Zet het dan ook niet in een url, het bestaat niet en dus kun je er niets mee.
4) Wanneer je SQL wilt leren en met database wilt leren omgaan, dan is MySQL redelijk ***beeeep***, het is van A tot Z onbetrouwbaar. Installeer bv. PostgreSQL en leer daarmee SQL. Wanneer je dat onder de knie hebt, is het vrij eenvoudig om over te stappen naar een andere database, bv. MySQL. Dan zul je ook vrij snel inzien waarom MySQL zo ***beeeep*** is, SQL die hardstikke fout is, wordt door MySQL gewoon goedgekeurd en levert gewoon "resultaten" op. Dat deze resultaten fout zijn, dat zie je alleen wanneer je kennis van zaken hebt. Vele prutsers zien dat niet en gaan er rustig mee aan de slag...

<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="POST" name="Zoek gemeente"> 

checken of er is gepost doe je met

<?php
if($_SERVER['REQUEST_METHOD'] =="POST"){
?>

ipv met

<?php
if (isset($_POST['zoek']))
?>

vervang dat en de andere door mij gegeven regel eens. Ik vermoed dat het script $_GET gebruikt omdat je daar niets over opgeeft.

Groeten
Klaasjan

succes met de cursus alvast
Hallo,

Ik heb Wamp server draaien, en mijn script heb ik dreamweaver gemaakt, opgeslagen als "post.php", deze staat in de map /www.
Als ik de browser http://localhost/post.php ingeef krijg ik een keurige pagina waar ik een postcode kan ingeven, tot zover loopt alles ok.

Het is na het ingeven en enter dat ik die string krijg in de url ??????

Wat betreft mysql, wil ik u graag volgen, maar een mens moet met iets beginnen, en heb in die zaken nog geen ervaring. Ik ga alvast naar PostgreSQL op zoek, en leer graag bij, zo ben ik in de tijd ook met html begonnen. Maar daarmee draait dit simpel formuliertje nog niet natuurlijk, enfin simpel !!!

Dank

Reageren