Hallo

Ik probeer al enige tijd een formulier te maken waarbij de ingeputte gegevens naar een MySQL-database gezonden worden. Ondanks enkele tutorials lukt het me niet want ik krijg blijkbaar geen verbinding met de database.
Hieronder post ik de twee files die beide op de wampserver staan.

Wat doe ik fout?

Misschien moet ik aanpassingen doen in phpMyAdmin? Ik gebruik de gewone comm.server met als referenties localhost, root en zonder paswoord. Ik maakte een database jvdatabase met een tabel met twee kolommen.

Het invulformulier (.php)

<head>
<title></title>
</head>
<body>
<h1>A small example page to insert some data in to the MySQL
database using PHP</h1>
<form action="send.php" method="post">
Firstname: <input type=
"text" name="Firstname" value=""><br>
<br>
Lastname: <input type="text" name="Lastname" value=""><br>
<br>
<input type="submit" name="submit"></form>
</body>
</html> 


PHP-file voor de aansluiting met de database (.php)

<?php

$hostname="localhost";
$database="jvdatabase";
$username="root";
$password="";

$link = mysql_connect($hostname, $username, $password);
if (!$link) {
die('Connection failed: ' . mysql_error());
}
else{
     echo "Connection to MySQL server " .$hostname . " successful!
" . PHP_EOL;
}

$db_selected = mysql_select_db($database, $link);
if (!$db_selected) {
    die ('Can\'t select database: ' . mysql_error());
}
else {
    echo 'Database ' . $database . ' successfully selected!';
}


if (isset($_POST['submit']))(

$sql="INSERT INTO formulier1 (FirstName, LastName)
VALUES ('$_POST'[Firstname]','$_POST'[Lastname]')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysql_close($link);

?>



Hopelijk kan iemand me helpen.
Bedankt en groetjes!
je geeft nu vooral aan wat er niet gebeurt, maar nauwelijks wat er wel gebeurt.

Je hebt een form voor je staan.

laten we zeggen dat je in de url ziet staan
http://localhost/formulier.php

vraag 1: lijkt je url daar op, of is het iets als c:\data\website\formulier.php

dan vul je iets in, en klik je op de knop.

Wat staat er nu in de urlbalk van de browser?
Wat staat er nu op het scherm?

Ah zo ok dat is dus het probleem niet.

Ik heb de tutorial geraadpleegd en bovenaan een stuk code toegevoegd.
Nu krijg ik volgende foutmelding (eronder zet ik nogmaals mijn volledige code).

Error: ' . $error . '
' . $sql . ''; } else { return $text; } } $username = "root"; $password = ""; $hostname = "localhost"; //connection to the database $dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL"); echo "Connected to MySQL
"; //select a database to work with $selected = mysql_select_db("jvdatabase",$dbhandle) or die("Could not select examples"); $sql="INSERT INTO probeersel (FirstName, LastName, Age) VALUES ($_POST['firstname'], $_POST['lastname'], $_POST['age'])"; // escape variables for security $firstname = mysqli_real_escape_string($con, $_POST['firstname']); $lastname = mysqli_real_escape_string($con, $_POST['lastname']); $age = mysqli_real_escape_string($con, $_POST['age']); if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "1 record added"; mysql_close($dbhandle); ?>

send.php-file

<?php

ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);


define('DEBUG_MODE',false); // true == aan, false == uit


function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}

$username = "root";
$password = "";
$hostname = "localhost";

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";

//select a database to work with
$selected = mysql_select_db("jvdatabase",$dbhandle)
or die("Could not select examples");

$sql="INSERT INTO probeersel (FirstName, LastName, Age)
VALUES ($_POST['firstname'], $_POST['lastname'], $_POST['age'])";

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);

if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysql_close($dbhandle);
?>

form.php-file

<html>
<body>

<form action="send.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit" name="submit">
</form>

</body>
</html>

Mvg
waar is nu de foutmelding?

Verder:
je bouwt een query op op regel 35/36
daarna escape je een paar vars die vervolgens natuurlijk nooit meer in de query-string terecht komen.

Daarna voer je de query uit.
Escapen en uitvoeren doe je via mysqli

De verbinding met de database is gebouwd met mysql. (zonder i)

dus waar komt $con vandaan.

Ook heel handig trouwens om bovenaan je error reporting uit te zetten.....

[size=xsmall]Toevoeging op 20/08/2014 13:15:31:[/size]

heb je nog een antwoord op mijn vraag over "localhost"?

Ik heb het idee dat je php helemaal niet uitgevoerd wordt.
Wat is dit?

Error: ' . $error . '
' . $sql . ''; } else { return $text; } } $username = "root"; $password = ""; $hostname = "localhost"; //connection to the database $dbhandle..............

Dat komt uit de function en is pure php. De function wordt niet eens aangeroepen. Staat php wel aktief?



Or die() is geen foutafhandeling maar een sterfgeval.

Je gebruikt in het begin mysql_ functies en opeens stap je over op mysqli_ dat gaat natuurlijk niet.

Regel 39 t/m 41 slaan nergens op. Je probeert iets te beveiligen terwijl het in de vorige regel al in een variabele is gezet die zo de database in gaat. Daarbij zet je het beveiligde in nieuwe variabelen die je nooit meer gebruikt.



Ivo

Er staat het volgende:

file:///C:/wamp/www/form.php

Wanneer ik klik komt het volgende in de URL-balk:

file:///C:/wamp/www/send.php
Type in je browser eens gewoon alleen localhost.
Jasper Verelst op 20/08/2014 13:23:58

Ivo

Er staat het volgende:
file:///C:/wamp/www/form.php



dan hoef je dus niet verder te zoeken.
Die vraag stel ik natuurlijk niet voor niets.

Je roept nu in je browser gewoon een stuk tekst aan vanaf je harde schijf.

PHP vereist dat het uitgevoerd wordt. Dat regelt een webserver (apache) voor je.

via het hyper text transfer protocol (http) spreek je die webserver aan.

http://servernaam/
en als de server op de pc zelf staat, voldoet "localhost" vaak als servername
Ok geweldig, ik zie het idd, er komen nu ook errors tevoorschijn. Dan probeer ik het script verder juist te krijgen. Zoals jullie al gemerkt hebben ben ik volop in de leerfase.

Mag ik jullie alvast bedanken voor jullie hulp en razendsnelle feedback.
Van harte! 'En mss tot snel ;)

Mvg

Reageren