MySQL online Probleme

Gottesauge

Grünschnabel
Hallo, ich bin hantiere seit einer relativ kurzen Zeit mit der MySQL Datenbank und habe sogleich ein Problem bei folgendem Code:


PHP:
session_start();
$head = $_POST[head];
$eintrag = $_POST[eintrag];
$kat = $_POST[kat];
if (!isset($_SESSION[id]))
{
die('kein Zugriff');
header ("Location: index.php");
}
else
{
$ip = $_SERVER[REMOTE_ADDR];
$date = date("d.m.Y");  
$time = date("H:i"); 

include ("connect.php");
$db = mysql_connect($host, $user, $pw);
if (!@mysql_select_db(gottesauge, $db))
{
die('Konnektivität nicht vorhanden');
}
else
{
$query = "INSERT INTO `news_ga` ( id, head, preview, eintrag, date, time, name, kat, ip )
VALUES
( '$id', '$head', '$eintrag', '$eintrag', '$date', '$time', '$_SESSION[username]', '$kat', '$ip' )";
mysql_query($query);
header ('Location: index.php");
}
}


So, mein Problem ist folgender:
Offline funktioniert alles, er trägt die Daten in die Tabelle vernünftig ein etc.

Online funktioniert nur der erste Eintrag, das bedeutet, dass der nach dem 1. Eintrag nichts mehr in die MySQL Tabelle eintragen will. Evtl. liegt es ja am host, jedoch funktioniert mein Gästebuchsystem in dieser Hinsicht eigentlich wunderbar.

Host: ohost.de

vielen Dank schonmal für eure Hilfe/Vorschläge etc

mfg Gottesauge
 
Funktioniert es denn auf dem phpMyAdmin online?
Oder kommt da eine Fehlermeldung?

Tobee
 
Ja, phpmyadmin online zeigt auch keine Fehler an, also theoretisch sollte es funktionieren .. bin nun echt ein bischen konfus ..
 
Hast du schonmal error_reporting auf E_ALL gestellt?

PHP:
error_reprting ( E_ALL );

Tobee
 
Änder dass mal um:

PHP:
$query = "INSERT INTO `news_ga` ( id, head, preview, eintrag, date, time, name, kat, ip ) 
VALUES 
( '$id', '$head', '$eintrag', '$eintrag', '$date', '$time', '" . $_SESSION[username] . "', '$kat', '$ip' )"; 
mysql_query($query);

Ich habe gehört bei Array muss man dass machen

Tobee
 
mh, werde ich mal ausprobieren .. Morgen :)

aber das ist Konfus, beim Gästebuch habe ich es genauso gelöst und es scheint da problemlos zu funktionieren .. merkwürdig..


aber danke für deine Hilfe, soweit :)
 
Warum ist $eintrag in der query doppelt?

Oder soll der Insert so lauten?

PHP:
$query = 'INSERT INTO 
                        `news_ga` 
          SET
          
                        `id` = "'.mysql_real_escape_string($id).'",
                        `head` = "'.mysql_real_escape_string($head).'",
                        `preview` = "'.mysql_real_escape_string($preview).'",
                        `eintrag`= "'.mysql_real_escape_string($eintrag).'",
                        `date` = "'.mysql_real_escape_string($date).'",
                        `time` = "'.mysql_real_escape_string($time).'",
                        `username]` = "'.mysql_real_escape_string($_SESSION['username']).'",
                        `kat` = "'.mysql_real_escape_string($kat).'",
                        `ip` = "'.mysql_real_escape_string($ip).'"
          ';
mysql_query($query)or die(mysql_error));
 
Hi,

erstmal wird nach einem header ein exit(); gesetzt.

PHP:
<?php
session_start();
// empfehlung für alle deine Scripte binde folgendes ein:
// error_reporting(E_ALL);
// einfach // am Anfang von error_reporting(E_ALL); entfernen und es ist aktiv

// hier sollte auf jedenfall eine Prüfung erfolgen, ob $_POST[head] vorhanden.


// if(isset($_POST['head'])) { $head = $_POST['head']; } else { $head = ""; }
// if(isset($_POST['eintrag'])) { $eintrag = $_POST[eintrag]; } else { $eintrag = ""; }
// if(isset($_POST['kat'])) { $kat = $_POST['kat']; } else { $kat = ""; }

// hier in diesem Bereich fehlten überall ''
$head = $_POST['head'];
$eintrag = $_POST['eintrag'];
$kat = $_POST['kat'];

// !isset ist das gleiche wie empty und auch hier wieder '' innerhalb der Sess-Vars. fehlten
if(empty($_SESSION['id'])) {
	die('kein Zugriff');
	header ("Location: http://www.domain.de/index.php");
	exit(); // nach header ein exti();
}
else {
	// index fehlt
	$ip = $_SERVER[REMOTE_ADDR];
	$date = date("d.m.Y");  
	$time = date("H:i"); 

	// include wird für Schleifen verwendet. Besser ist require
	require("connect.php");
	$db = mysql_connect($host, $user, $pw);
	// hierzu sage ich nichts. Gibts Tuts ohne Ende.
	if (!@mysql_select_db(gottesauge, $db)) {
		die('Konnektivität nicht vorhanden');
	}
	else {
		// da du eine Sessionvars für den DB eintrag verwendest, solltest du auf jedenfall prüfen ob
		// die Vars vorhanden. Also

		if(isset($_SESSION['username'])) {
			$usernameindb = $_SESSION['username'];
		}
		else { 
			header("Location: http://www.domain.de/index.php?info_error=fehlender_username");
			exit();
		}

		// im folgenden fehlten die Klammern nach $query = und am Ende nach ") des Querystring.
		$query = ("INSERT INTO `news_ga` (
						id, 
			     		head, 
			     		preview, 
			     		eintrag, 
			     		date, 
			     		time, 
			     		name, 
			     		kat, 
			     		ip
			     	)
			     	VALUES (
			     		'$id', 
			     		'$head', 
			     		'$eintrag', 
			     		'$eintrag', 
			     		'$date', 
			     		'$time', 
			     		'$usernameindb', 
			     		'$kat', 
			     		'$ip'
			     	)");
		mysql_query($query) or die(mysql_error());
		// ein weiterer Fehler war in der SessionVars. Es fehlten die ''.
		// dann wäre selbst wenn das korrekt gewesen wäre ein Parserror erfolgt. Weil
		// im Bereich Values folgendes hätte stehen müssen '".$_SESSION['username']."' statt '$_SESSION['username']'
		
		// da es sich um ein insert handelt und du keine weiteren Infos nach dem Query abrufst, kannst du 
		// diesen abkürzen wie folgt:
		// mysql_query("INSERT INTO `news_ga` ( id, head, preview, eintrag, date, time, name, kat, ip ) VALUES ( '$id', '$head', '$eintrag', '$eintrag', '$date', '$time', '$usernameindb', '$kat', '$ip' )") or die (mysql_error());
		//
		header("Location: http://www.domain.de/index.php");
		exit();
		// nach einem header muss ein exit erfolgen, da ansonsten das Prog weiter läuft.
		// dazu kommt, das die Locationanweisung mit der vollen Adressangabe versehen wird also
		// header("Location: http://www.domain.de/index.php");
		// exit();
	}
} 
?>

Damit gehts, wenn sonst keine Fehler in deinen Scripten enthalten sind.
 
RS9999 hat gesagt.:
Warum ist $eintrag in der query doppelt?

Oder soll der Insert so lauten?

PHP:
$query = 'INSERT INTO 
                        `news_ga` 
          SET
          
                        `id` = "'.mysql_real_escape_string($id).'",
                        `head` = "'.mysql_real_escape_string($head).'",
                        `preview` = "'.mysql_real_escape_string($preview).'",
                        `eintrag`= "'.mysql_real_escape_string($eintrag).'",
                        `date` = "'.mysql_real_escape_string($date).'",
                        `time` = "'.mysql_real_escape_string($time).'",
                        `username]` = "'.mysql_real_escape_string($_SESSION['username']).'",
                        `kat` = "'.mysql_real_escape_string($kat).'",
                        `ip` = "'.mysql_real_escape_string($ip).'"
          ';
mysql_query($query)or die(mysql_error));

Weil du den Query nicht korrekt gelesen hast. ;)
 
Zurück