Hallo Allemaal

Via een form in mijn PHP website zou ik de gegevens willen wegschrijven in mijn database maar ik krijg telkens een foutmelding.

namelijk

Error: INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES (Atheneum Maasland - Campus Dilsen, 209, hoog, Wed Jun 01, Tilly, 5, computer_probleem, jfsldfds, Gert Molemans, test, Gert Molemans)
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Maasland - Campus Dilsen, 209, hoog, Wed Jun 01, Tilly, 5, computer_probleem, j' at line 1
lokaal: 209

soort probleem: computer_probleem

toestel: 5

onderwerp: test

beschrijving: jfsldfds

urgentie: hoog

mijn colde is

<html>
<head>


</head>
<body>
	<?php
		$conn = new mysqli('localhost', 'root', '', 'db_helpdesk')
		or die ('Cannot connect to db');
		$datum = date("D M d");
		
		$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES (Atheneum Maasland - Campus Dilsen, ".$_POST['ddmlokaal'].", ".$_POST['ddmurgentie'].", ".$datum.", Tilly, ".$_POST['txttoestel'].", ".$_POST['ddmsoort_probleem'].", ".$_POST['txtbeschrijving'].", Gert Molemans, ".$_POST['txtonderwerp'].", Gert Molemans)";
		
		if ($conn->query($sql) === TRUE) {
			echo "New record created successfully";
		} else {
			echo "Error: " . $sql . "<br>" . $conn->error;
		}
		
		$conn->close();
    ?>
	<p>lokaal: <?php echo $_POST["ddmlokaal"]; ?> </p>
	<p>soort probleem: <?php echo $_POST["ddmsoort_probleem"]; ?> </p>
	<p>toestel: <?php echo $_POST["txttoestel"]; ?> </p>
	<p>onderwerp: <?php echo $_POST["txtonderwerp"]; ?> </p>
	<p>beschrijving: <?php echo $_POST["txtbeschrijving"]; ?> </p>
	<p>urgentie: <?php echo $_POST["ddmurgentie"]; ?> </p>
</body>
</html>


Ziet iemand wat ik fout doe?
Alvast bedankt

Groeten Gert
De tekst moet tussen (enkele) quotes staan.
Bedankt voor de snelle reactie.
Nu krijg ik nog een andere fout


Notice: Undefined index: txttoestel in C:\xampp\htdocs\helpdesk\ticketopslaan.php on line 12
Error: INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES ('Atheneum Maasland - Campus Dilsen', 209, hoog, Wed Jun 01, 'Tilly', , computer_probleem, jfsldfds, 'Gert Molemans', test, 'Gert Molemans')
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Jun 01, 'Tilly', , computer_probleem, jfsldfds, 'Gert Molemans', test, 'Gert Mo' at line 1
lokaal: 209

soort probleem: computer_probleem

toestel:
Notice: Undefined index: txttoestel in C:\xampp\htdocs\helpdesk\ticketopslaan.php on line 24
onderwerp: test

beschrijving: jfsldfds

urgentie: hoog


<html>
<head>


</head>
<body>
	<?php
		$conn = new mysqli('localhost', 'root', '', 'db_helpdesk')
		or die ('Cannot connect to db');
		$datum = date("D M d");
		
		$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it) VALUES ('Atheneum Maasland - Campus Dilsen', ".$_POST['ddmlokaal'].", ".$_POST['ddmurgentie'].", ".$datum.", 'Tilly', ".$_POST['txttoestel'].", ".$_POST['ddmsoort_probleem'].", ".$_POST['txtbeschrijving'].", 'Gert Molemans', ".$_POST['txtonderwerp'].", 'Gert Molemans')";
		
		if ($conn->query($sql) === TRUE) {
			echo "New record created successfully";
		} else {
			echo "Error: " . $sql . "<br>" . $conn->error;
		}
		
		$conn->close();
    ?>
	<p>lokaal: <?php echo $_POST["ddmlokaal"]; ?> </p>
	<p>soort probleem: <?php echo $_POST["ddmsoort_probleem"]; ?> </p>
	<p>toestel: <?php echo $_POST["txttoestel"]; ?> </p>
	<p>onderwerp: <?php echo $_POST["txtonderwerp"]; ?> </p>
	<p>beschrijving: <?php echo $_POST["txtbeschrijving"]; ?> </p>
	<p>urgentie: <?php echo $_POST["ddmurgentie"]; ?> </p>
</body>
</html>


Groeten en bedankt
Gert
$_POST['txttoestel'] zal niet bestaan.
Je hebt nog steeds tekst in de query zonder (enkele) quotes.
Data uit een formulier is gevaarkijk.
Altijd userinput beveiligen.
Ook je POST variabelen moeten nog tussen quotes staan. Daarnaast moet je ze ook escapen.

dus:[code]<?php
$sql = "INSERT INTO tb_ticket (school, lokaal, urgentie, datum, leerkracht, toestel, soortprob, beschijving, berichtnaar, onderwerp, it)
VALUES (
'Atheneum Maasland - Campus Dilsen'
, '".mysqli_real_escape_string($conn, $_POST['ddmlokaal'])."'
, '".mysqli_real_escape_string($conn, $_POST['ddmurgentie'])."'
, '".mysqli_real_escape_string($conn, $datum)."'
, 'Tilly'
, '".mysqli_real_escape_string($conn, $_POST['txttoestel'])."'
, '".mysqli_real_escape_string($conn, $_POST['ddmsoort_probleem'])."'
, '".mysqli_real_escape_string($conn, $_POST['txtbeschrijving'])."'
, 'Gert Molemans'
, '".mysqli_real_escape_string($conn, $_POST['txtonderwerp'])."'
, 'Gert Molemans'
)";
Wat @Ramon hierboven doet lijkt mij ook verstandig uit oogpunt van leesbaarheid: schrijf je query over meerdere regels uit.

Deze hoef je trouwens niet eerst in een aparte variabele op te slaan, maar kan rechtstreeks in je query, bijvoorbeeld als volgt:
<?php
$conn->query(
    "INSERT INTO table (
        a, b, c, d
    ) VALUES (
        '".$conn->real_escape_string($_POST['a'])."',
        '".$conn->real_escape_string($_POST['b'])."',
        '".$conn->real_escape_string($_POST['c'])."',
        '".$conn->real_escape_string($_POST['d'])."'
    )"
);
?>

En als je 3x real_escape_string() hebt uitgetypt heb je hier waarschijnlijk ook genoeg van en schrijf je een klein wrappertje voor MySQLi om hier sneller mee te werken.
Thomas van den Heuvel op 01/06/2016 12:50:47

En als je 3x real_escape_string() hebt uitgetypt heb je hier waarschijnlijk ook genoeg van en schrijf je een klein wrappertje voor MySQLi om hier sneller mee te werken.
CTRL+C en CTRL+V?

Ctrl+D met de D van duplicate en dupliceren: maakt in sommige editors een kopie van de huidige regel. :D
Ja dat werkt Ward (in Notepad++). Handig!
Heel fel bedankt allemaal
ik ga het morgen eens uit proberen.

Groeten Gert
Het is gelukt

Allemaal heel erg bedankt

Groeten Gert

Reageren