Pagina's: [1]
Print
Auteur Topic: Problemen met phpscript  (gelezen 488 keer)
laura1992
Newbie
*
Berichten: 1


Bekijk profiel E-mail
« Gepost op: Maart 01, 2010, 21:08:51 »

hallo allemaal,
Ik probeer een webwinkel te bouwen, maar ik loop tegen een probleem aan. Ik heb al redelijk wat scripts die werken, maar het lukt me gewoon niet om een pagina werkend tekrijgen, die ervoor zorgt dat er nieuwe gegevens in de database worden toegevoegd (soort formulier). Dit heb ik op dit moment:

<html>
<head>
<title>Artikelen toevoegen</title>
</head>

<?php
if (!empty($_POST)){   // als de pagina zichzelf heeft aangeroepen
   // variabelen initialiseren
   $server = "localhost"; // naam van de MySQL-databaseserver
   $user = "root";   // inlognaam
   $wachtwoord = "usbw";   //wachtwoord voor dit account
   $database = "makro"; // naam van de database die we gebruiken
   $query = "";
   $bedankt = "bedankt.php"; // adres van de bedankt-pagina.

   // Database openen. Denk zelf weer aan foutcontrole-routines!
   $db = mysql_connect($server, $user, $wachtwoord); // verbinding maken
   mysql_select_db($database); // database selecteren

   // stel een SQL-query op met de gegevens uit het formulier
   $query = "INSERT INTO artikel (artikelid, artikelomschrijving, prijs_per_stuk) ";
   $query .= "VALUES ('', '"; // lege id invoegen, let daarna goed op de positie van de aanhalingstekens!
   $query .= $_POST["artikelomschrijving"] . "', '";
   $query .= $_POST["prijs_per_stuk"] . "', '";
   // query afsluiten met haakje-sluiten
   if (!mysql_query($query)){ // probeer de query uit te voeren
      // er is een fout opgetreden
      echo "Er is een fout opgetreden met foutnummer " . mysql_errno() . " : " .  mysql_error();
      // eventueel: met header("location:...") doorsturen naar gedetailleerde foutbericht-pagina.
      mysql_close($db); // database afsluiten
      exit;
   }
   else{
      // invoegen is geslaagd, doorsturen naar bedankt-pagina
      // geef het id van de zojuist ingevoegde gegevens mee als querystring
      $bedankt .= "?id=" . mysql_insert_id($db);
      mysql_close($db); // database afsluiten
      header("location:$bedankt");
   }
}

else{
?>

<body>
<h2>Artikelgegevens toevoegen</h2>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
Artikelomschrijving : <input type="text" name="artikelomschrijving"><br>
Prijs per stuk : <input type="text" name="prijs_per_stuk"><br>
<input type="submit" name="verzenden" value="Verzenden">
<input type="reset" name="leegmaken" value="Leegmaken">
<hr>
</form>
</body>
</html>
<?php
} // het else-blok afsluiten
?>

en de bedanktpagina ziet er zo uit:
<html>
<head>
<title>Voorbeeld 10.1 - Gegevens toegevoegd!</title>
<?
$server = "localhost"; // naam van de MySQL-databaseserver
$user = "root";   // inlognaam
$wachtwoord = "usbw";   //wachtwoord voor dit account
$database = "makro"; // naam van de database die we gebruiken
$resultaat = ""; // hierin wordt het resultaat van de query opgeslagen

// stel een query op die alle gegevens voor het meegegeven leerling-id ophaalt
// LET OP: zelf weer controle inbouwen voor het geval geen id is meegegeven in querystring!
$query = "SELECT * FROM artikel WHERE artikelid=" . $_GET["artikelid"];

$db = mysql_connect($server, $user, $wachtwoord); // verbinding maken
mysql_select_db($database); // database selecteren
$resultaat = mysql_query($query, $db); // query uitvoeren
mysql_close($db); // database afsluiten
?>
</head>

<body>
<h2>Bedankt voor het invoegen van de volgende gegevens:</h2>
<?php
// de array zal nu maar het resultaat voor één leerling bevatten.
while(list($artikelid, $artikelomschrijving, $prijs_per_stuk) = mysql_fetch_row($resultaat)){
   echo "artikel-id: <b>$id</b><br>
            Artikelomschrijving: <b>$artikelomschrijving</b><br>
            Prijs per stuk in euro: <b>$prijs_per_stukl</b><br>
            <hr>
            <a href=\"voorbeeld_1001.php\">Meer gegevens invoegen</a>";
}
?>   
</body>
</html>

Ik krijg steeds de volgende foutmelding:
Er is een fout opgetreden met foutnummer 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

Wie o wie kan mij helpen met dit probleem?
Alvast bedankt!
Gelogd
marcel
Global Moderator
Member
*****
Berichten: 229


Bekijk profiel
« Antwoord #1 Gepost op: Maart 02, 2010, 23:00:34 »

Hoi laura,

Je hebt in je comments '// query afsluiten met haakje-sluiten' staan maar ik zie het haakje niet....

Tip: Echo je query naar de PHP pagina en je ziet wat er uitkomt en naar MySQL verzonden wordt. Je kan dan ook zelf debuggen via bijvoorbeeld phpmyadmin.

Nog een tip: Er staat '$query .= $_POST["prijs_per_stuk"] . "', '";'. Controleer altijd of je userinput geldig is en/of escape de input. Zie ook http://http://php.net/manual/en/function.mysql-real-escape-string.php.

Groet, Marcel
Gelogd

Je eigen domein registreren? EUR 15,- per jaar: http://http://www.citruz.eu
Pagina's: [1]
Print
 
Ga naar: