Wo muss ich hier den Fehler suchen

Was mir gleich ins Auge fiel:

Schreib bitte

$sqlab = "insert INTO linkliste";

Auch wenn es jetzt nicht unbedingt mit deinem Problem zu tun hat ;>

€dit: Wenn du sagst du bekommst keine Datensätze rein, dann würd ich schon sagen dass das an dem fehlenden INTO liegt!
Würd dir also folgenden Query ans Herz legen:
PHP:
      $sqlab = "INSERT INTO linkliste";
      $sqlab .= "(name, url, beschr, email, katg, ip, datum)";
      $sqlab .= " VALUES ";
      $sqlab .= "('$name','$url','$beschr','$email','$katg', '" . $_SERVER["REMOTE_ADDR"]. "', NOW()  )";
 
Zuletzt bearbeitet:
Hallo,

das war echt ein guter Tipp mit dem Großschreiben, hatte vorher nämlich deswegen auch schon mal Probleme gehabt, da hat der Server den Datenbanknamen nämlich nicht akzeptiert gehabt weil der klein geschrieben war.

Aber aus dieser dummen Linkliste werde ich zur Zeit echt nicht schlau, ich bekomme einfach keine Daten da rein. Egal wie ich es schreibe nur mein offline Server XMAPP meckert nicht und schreibt alles rein. :rolleyes:
 
[…] das war echt ein guter Tipp mit dem Großschreiben, hatte vorher nämlich deswegen auch schon mal Probleme gehabt, da hat der Server den Datenbanknamen nämlich nicht akzeptiert gehabt weil der klein geschrieben war.
Prinzipiell ignoriert MySQL die Groß- und Kleinschreibung – zumindest bei der Schreibung der syntaktischen Schüsselwörter. Bei der Schreibung von Namen ist dies allerdings nicht so, da hier die Achtung der Groß- und Kleinschreibung vom Betriebssystem abhängt (siehe Groß-/Kleinschreibung in Namen). Allerdings ist es vorteilhaft, die Schlüsselwörter MySQLs von den anderen Wörtern durch Großschreibung hervorzuheben.

Mein Vorschlag:
PHP:
<?php

	ini_set('display_errors', 1);
	ini_set('error_reporting', E_ALL);


	if( isset($_POST['gesendet']) ) {
		$query = '
			INSERT INTO
			        `linkliste`
			  SET
			        `name`   = "'.mysql_real_escape_string($_POST['name']).'",
			        `url`    = "'.mysql_real_escape_string($_POST['url']).'",
			        `beschr` = "'.mysql_real_escape_string($_POST['beschr']).'",
			        `email`  = "'.mysql_real_escape_string($_POST['email']).'",
			        `katg`   = "'.mysql_real_escape_string($_POST['katg']).'",
			        `ip`     = "'.$_SERVER['REMOTE_ADDR'].'",
			        `datum` = NOW()
			';
		mysql_db_query('DB68640', $query)
			or die(mysql_error());
		$affectesRows = mysql_affected_rows();
		if( $affectedRows > 0 ) {
			echo '<p><strong class="stro">Ihr Eintrag wurde hinzugef&uuml;gt</strong></p>';
		} else {
			// Wenn abgeschickt wird und Eintrag schon vorhanden ist.
			echo '<p>Es ist ein <strong class="stro">Fehler</strong> aufgetreten: <strong class="stro">Es wurde kein Datensatz</strong> hinzugef&uuml;gt, der Datensatz ist m&ouml;glicherweise schon vorhanden.</p>';
		}
	}
	if( isset($_POST['gesendet']) && $affectedRows == 0 ) {
		// Wenn einfach so abgeschickt wird oder ein Feld fehlt
         	echo '<p><span class="stro">Fehlgeschlagen!</span> Sie haben vergessen ein Feld auszuf&uuml;llen. Bitte f&uuml;llen Sie alle Felder aus und vermeiden Spam. Ihre IP-Adresse wird zu unserer Sicherheit mit gespeichert.</p>';
	}

?>
 
Ich habe die Definition der Datenbankabfrage in der $query-Variable gespeichert. Ein bisschen Engagement bitte.
 
Hi, das hab ich gar nicht bemerkt das ich die query umbennen musste, sorry, aber bei deinem sauberen Code traut man sich ja kaum was zu ändern :).

Nun bekomme ich aber wieder eine Fehlermeldung, zu der ich sagen muss das ich die noch nie gesehen habe:

Duplicate entry '0' for key 1
 
Das bedeutet, dass du bei einem auto_increment Feld zweimal die geiche Zahl vergeben hast (z.B. bei IDs). hier ist es zweimal die 0
 
Ich hab mal alle Einträge gelöscht und dem Feld id auto_increment hinzugefügt, dannach habe ich es geschaft ein Datensatz hinzuzufügen, aber gleichzeitig bei der Aktion kommen meine eingebauten Fehlermeldungen.

Das kann ich mir nicht erklären, aber das hinzufügen klappt jetzt anscheinend. Warum es aber mit dem auto_increment Befehl klapt würde ich auch gerne verstehen, ohne hat es ja nicht funktioniert.
 
Zuletzt bearbeitet:
Zurück