Insert klappt nicht richtig

10/10/2013 23:24 ~ JWonderpig ~#1
Hallo,
ich habe ein Problem: Ich möchte, dass ein Text in eine Datenbank gespeichert wird. Jedoch funktioniert das "INSERT" nicht richtig. bzw. Ich weiß nicht, wie der Fehler zustande kommt.

Code aus der Datei mit dem Formular:
Code:
                    <p>
                        <h1>Erstellen - Links</h1>
                        <form method="post" action="includes/eintrag_l.php">
                            <input type="hidden" name="date" value="<? echo date("Y-m-d H:i:s") ?><br />
                            <p>Überschrift<br /><input type="text" name="head"><br /></p>
                            <p>Eintrag<br /><textarea name="main" cols="50" rows="8"></textarea><br /></p>
                            <p><input type="submit" value="Eintrag erstellen"></p>
                        </form>
                    </p>
Code aus eintrag_l.php:
Code:
<?php
	error_reporting(-1);
	ini_set('display_errors', true);
	/*$dbconfig = array();
	$dbconfig['host'] = "localhost";
	$dbconfig['user'] = "root";
	$dbconfig['pwd'] = "";
	$dbconfig['db'] = "cms";*/
	
    DEFINE('DB_USER', 'root');
    DEFINE('DB_PASSWORD', '');
    DEFINE('DB_HOST', 'localhost');
    DEFINE('DB_NAME', 'cms');
	
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    if (mysqli_connect_error()) {
        die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
    }
	
	
?>
<html>
	<head>
		<title>Eintrag wird erstellt</title>
	</head>
	<body>
		<?php
			$date = $_POST['date'];
			$head = $_POST['head'];
			$main = $_POST['main'];
			
			$main = nl2br($main);
			
			$connect = new mysqli("localhost", "root", "", "cms")
			    or die("MySQL-Error: " . mysql_error());

			$eintrag="INSERT INTO tbl_eintrag_links (eintrag_header, eintrag_main, eintrag_datetime)
						VALUES
							('$head','$main','$date')";
		
			echo "<p>Der Eintrag wurde erstellt.</p>";
			/*echo '<meta http-equiv="refresh" content="3; ../admin.php" />';*/
		?>
	</body>
Wenn ich es so mache, passiert nichts. Die Namen der Spalten habe ich richtig angegeben.
10/11/2013 08:55 mhaendler#2
Hey, was gibt dir ein var_dump($_POST); aus?
Du benutzt mischst das ganze zuviel, in der eintrag_l.php brauchst du keinen HTML Code

Code:
<?php
	error_reporting(-1);
	ini_set('display_errors', true);
	/*$dbconfig = array();
	$dbconfig['host'] = "localhost";
	$dbconfig['user'] = "root";
	$dbconfig['pwd'] = "";
	$dbconfig['db'] = "cms";*/
	
    DEFINE('DB_USER', 'root');
    DEFINE('DB_PASSWORD', '');
    DEFINE('DB_HOST', 'localhost');
    DEFINE('DB_NAME', 'cms');
	
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    if (mysqli_connect_error()) {
        die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
    }

   if(isset($_POST){
			$date = $_POST['date'];
			$head = $_POST['head'];
			$main = $_POST['main'];
			
			$main = nl2br($main);
			
			$connect = new mysqli("localhost", "root", "", "cms")
			    or die("MySQL-Error: " . mysql_error());



			$eintrag="INSERT INTO tbl_eintrag_links (eintrag_header, eintrag_main, eintrag_datetime)
						VALUES
							('$head','$main','$date')";
		
$rgw = mysqli_query($eintrag);
if($rgw){
    header('Location: ../admin.php');
    die();
}else{
    die('Fehler beim einfügen');
   }		
?>
Dein Fehler ist du führst dein SQL-Statement nirgends aus, ich hab den Code jetzt mal überarbeitet versuch diesen mal bitte :)

Ansonsten solltest du eventuell deine Struktur nochmal überdenken. Du könntest den Insert auch in deiner "Code aus der Datei mit dem Formular:" reinpacken und via "if(isset($_POST))" überprüfen und dann abschicken.
10/11/2013 11:44 ~ JWonderpig ~#3
Danke, geht nun :D

Ich glaube, dass ich nochmal Hilfe brauche:
Ich möchte die Einträge nun bearbeiten können:
Code:
	
<form action="includes/edit_l.php" method="POST">
    <p>ID des Post's<br /><input type="text" name="id"><br /></p>
    <p><input type="submit" value="Eintrag speichern"></p>
</form>
Code aus der edit_.php
Code:
<form method="POST" action="edit-send.php">
<?php
	include("connect.php");
	$id = $_POST;
	
	$news_SQL = "SELECT * FROM tbl_eintrag_links WHERE eintrag_ID=$id";
	$news_result = mysql_query($news_SQL);
	
	if($news_result === FALSE) {
		die(mysql_error());
	}
	while ($news = mysql_fetch_array($news_result)) {
					echo "<p><h1>Überschrift</h1><br /><input type=\"text\" name=\"header\" value=\"" . $news['eintrag_header'] . "\</p><br />";
					echo "<p><h1>Eintrag bearbeiten</h1><br /><textarea cols=\"50\" rows=\"8\" name=\"main\">" . $news['eintrag_main'] . "</textarea></p><br />";
					echo "<p><span style='font-size: 12px; color:#3B3B3B;'> Post ID: " . $news['eintrag_ID'] . "</span></p><br />";
				}
?>
<input type="submit" value="Eintrag bearbeiten">
</form>
Ich bekomme dort diese Meldung:
Code:
Notice: Array to string conversion in C:\xampp\htdocs\includes\edit_l.php on line 6
Unknown column 'Array' in 'where clause'
10/11/2013 15:38 mhaendler#4
Ersten müsste du in deinr edit_.php eine Fehlermeldung bekommen wenn du auf die Seite kommst da du nicht überprüft ob $_POST gesetzt ist. Hast du vorher nur meinen Code kopiert und nicht gelesen was ich geschrieben habe?

Logik an den Anfang einer Datei...

Ich lege dir ein Grundlagen Tutorial sehr nahe, allerdings liegt dein Fehler hier:
Code:
$id = $_POST;
Wenn du mal ein var_dump($_POST); machst siehst du das dies ein Array ist, somit steht ein Array in $id drinnen. Du möchtest dann das "Array" in dein Mysql-Code einpacken was nicht geht, allerdings sagt dir das ja auch deine Fehlermeldung

Deswegen
Code:
$id = $_POST['id'];
Debugge deinen Code besser, am besten mit einem var_dump($variable);die(); dadurch siehst du was in den einzelnen Variablen steckt und kannst Fehler selber besser und schneller lösen.

Schau dir deine Code-Struktur an, Logik sollte wenn möglich an den Anfang der Datei und nicht zwischen den HTML-Code
Code:
<?php 
	[COLOR="Red"]require("connect.php");[/COLOR]
if(isset($_POST)){
	[COLOR="Red"]$id = $_POST['id'];[/COLOR]
        $news_SQL = "SELECT * FROM tbl_eintrag_links WHERE eintrag_ID=$id";
	$news_result = mysql_query($news_SQL);
	
	if($news_result === FALSE) {
		die(mysql_error());
	}
?>
<form method="POST" action="edit-send.php">
<?php
	while ($news = mysql_fetch_array($news_result)) {
					echo "<p><h1>Überschrift</h1><br /><input type=\"text\" name=\"header\" value=\"" . $news['eintrag_header'] . "\</p><br />";
					echo "<p><h1>Eintrag bearbeiten</h1><br /><textarea cols=\"50\" rows=\"8\" name=\"main\">" . $news['eintrag_main'] . "</textarea></p><br />";
					echo "<p><span style='font-size: 12px; color:#3B3B3B;'> Post ID: " . $news['eintrag_ID'] . "</span></p><br />";
				}
?>
<input type="submit" value="Eintrag bearbeiten">
</form>
Habs mal ein bisschen verbessert / ausgebssert!