Datenbank-Eintrag funktioniert NICHT MEHR

supercat1510

Erfahrenes Mitglied
Ich habe ein Problem - naja ist gut gesagt, sonst würd ich diesen Eintrag wohl nicht mehr schreiben.

Ich habe mir ein Script gebastelt, mit welchem man Liedtexte in eine Datenbank eintragen kann.
Es hat auch ohne Probleme funktioniert, doch plötzlich...

"Ich habe gerade Liedtexte eingetragen als ich nach ca. 50 Stück gemerkt habe, das er mir nur die ersten 10 eingetragen hat und mehr nicht."

Einfach während der Eingabe hat er aufgehört die Daten in die MySQL zu schreiben, ohne das irgendetwas am Code geändert wurde.

Woran kann das liegen?
 
Ist zwar 'n bißchen viel Text, aber ich versuch's 'n bißchen zu kommentieren

Function zum Lyriceintragen - wird in der zweiten Funktion aufgerufen
PHP:
function lyrinsert(){
require('confic.php');
 global $befehl;

//Aus POST auslesen
$KAT_ID=$_POST['KAT_ID'];
$LYR_NAME=trim(strip_tags($_POST['LYR_NAME']));
$LYR_INFO=trim(strip_tags($_POST['LYR_INFO']));
$LYR_TEXT=trim(strip_tags($_POST['LYR_TEXT']));
$sprache=$_POST['sprache'];
$user=$_POST['USER_NAME'];
$USER_PW=$_POST['USER_PW'];
$LYR_TEXT=str_replace($t1,'<br>',$LYR_TEXT);
$LYR_TEXT=bbcode($LYR_TEXT);
//Sprache &uuml;berpr&uuml;fen
if($sprache=="LYR_J"){$LYR_J="1";}else{$LYR_J="0";}
if($sprache=="LYR_D"){$LYR_D="1";}else{$LYR_D="0";}
if($sprache=="LYR_E"){$LYR_E="1";}else{$LYR_E="0";}
if($sprache=="LYR_S"){$LYR_S="1";}else{$LYR_S="0";}
//Überprüfen ob aus- oder eingeloggt
//und je nachdem Userdaten aus Formular oder Cookie auslesen
if($befehl=="Login"){
$USER_ID=usercontrol($user,$USER_PW);
} else {$USER_ID=usercontrol($_COOKIE['USER_NAME'],$_COOKIE['USER_PW']);}
//Userbonus hochzählen
$meldung.=userbonus($USER_ID, $bonus_lyr);
//testen, ob Felder ausgef&uuml;llt sind
if(!$LYR_NAME){$fehler.=$error_LYR_NAME."<br>\n";}
if(!$LYR_TEXT){$fehler.=$error_LYR_TEXT."<br>\n";}
if($KAT_ID=="0"){$fehler.=$error_KAT_ID."<br>\n";}
//Wenn Fehler vorhanden, die Textausgabe formatieren und $lyrstat zur&uuml;cksetzen, damit das Formular erneut angezeigt wird
if(isset($fehler) && $fehler!=""){
$meldung="<h4><font color=red>".$fehler."</font></h4>";
unset($lyrstat);
}
else {//Es liegt kein Fehler vor, also Speichern der Informationen in der Datenbank
//sql-String zusammenbauen
$sql="INSERT INTO `".$tbllyr."` ( `LYR_ID` , `LYR_NAME` , `USER_ID` , `KAT_ID` , `LYR_DATUM` , `LYR_TIME` , `LYR_KLICK` , `LYR_INFO` , `LYR_TEXT` , `LYR_J` , `LYR_D` , `LYR_E` , `LYR_S` ) VALUES ( '', '".$LYR_NAME."', '".$USER_ID."', '".$KAT_ID."', '".$datum."', '".$time."', '0', '".$LYR_INFO."' , '".$LYR_TEXT."', '".$LYR_J."', '".$LYR_D."', '".$LYR_E."', '".$LYR_S."' )";
mysql_query($sql, $verbindung);
$meldung="Der Liedtext/die Lyric wurde eingetragen<br>\nDu kannst sie dir jetzt unter der Kategorie ansehen - eventuell musst du deinen Browser aktualisieren!";
}
//Ausgeben der Meldung
   echo "<p align=center>$meldung<br>\n<br>\n";
   echo "[<a href=\"?link=lyr&action=lyr&name=erstellen\">weitere Lyric eintragen</a>]</p>\n";

}//Ende function lyrinsert

Diese Funktion unterscheidet ob man ein- oder ausgeloggt ist und handelt dementsprechend.
PHP:
function lyrerstellen(){
require('confic.php');
require('inc/bbcode.php');
require('inc/usercontrol.php');
require('inc/userbonus.php');
require('inc/status.php');
 global $befehl;
 echo "<h2>Lyric eintragen</h2>
 <br>\n<br>\n<br>\n";
//Wenn der Befehl auf Logout steht ist man eingeloggt und kann sich ausloggen
         if($befehl=="Logout"){
//Befehl Logout
//UserID anhand der cookies überprüfen
		$USER_ID=usercontrol($_COOKIE['USER_NAME'],$_COOKIE['USER_PW']);
// Überprüfen ob man einen Eintrag machen darf oder nicht
		$rechte=statustext(statustest($USER_ID,"LYR"),"1");
					if($rechte=="yes"){
//Rechte yes
 if(!$_POST['lyrstat']){
//Includen des Eintrage-Formulars
include "tpl/lyric_erstellen.htm";
 }  //$lyrstat==1, wenn das Formular abgeschickt wurde
if($_POST['lyrstat']=="1"){
//Aufruf der function lyrinsert()
lyrinsert();
} // Ende $lyrstat=1

//Ende Rechte yes
					}
					else {
		echo "<p align=center>Du hast keine Rechte um Lyrics einzutragen oder bist nicht angemeldet.</p>";
                 			}
//Ende Befehl Logout
         }
//Wenn der Befehl auf Login steht, wird im Design der Befehl Login angezeigt
//bzw. hier die Userinput-Felder
         elseif($befehl=="Login"){
//Befehl Login
 if(!$_POST['lyrstat']){
//Includen des Eintrage-Formulars
include "tpl/lyric_erstellen.htm";
 }  //$lyrstat==1, wenn das Formular abgeschickt wurde
if($_POST['lyrstat']=="1"){
//Aufruf der function lyrinsert()
lyrinsert();
} // Ende $lyrstat=1
//Ende Befehl Login
         }
}//Ende function lyrerstellen
 
Ersetze doch bitte einmal den Bereich, in dem Du die Insert-Anweisung an die Datenbank sendest durch folgendes:
PHP:
//sql-String zusammenbauen
$sql="INSERT INTO `".$tbllyr."` ( `LYR_ID` , `LYR_NAME` , `USER_ID` , `KAT_ID` , `LYR_DATUM` , `LYR_TIME` , `LYR_KLICK` , `LYR_INFO` , `LYR_TEXT` , `LYR_J` , `LYR_D` , `LYR_E` , `LYR_S` )
      VALUES ( '', '".mysql_escape_string($LYR_NAME)."', '".mysql_escape_string($USER_ID)."',
               '".mysql_escape_string($KAT_ID)."', '".mysql_escape_string($datum)."',
               '".mysql_escape_string($time)."', '0', '".mysql_escape_string($LYR_INFO)."' ,
               '".mysql_escape_string($LYR_TEXT)."', '".mysql_escape_string($LYR_J)."',
               '".mysql_escape_string($LYR_D)."', '".mysql_escape_string($LYR_E)."',
               '".mysql_escape_string($LYR_S)."' )";
$retval = mysql_query($sql, $verbindung);
if (!$retval) {
  $meldung = 'Fehler: '.mysql_error();
} else {
  $meldung="Der Liedtext/die Lyric wurde eingetragen<br>\nDu kannst sie dir jetzt unter der Kategorie ansehen - eventuell musst du deinen Browser aktualisieren!";
}
Die Werte werden vor dem Einfügen in das SQL-Statement escaped und im Fehlerfall wird eine Meldung ausgegeben.

snuu
 
Dann kann ich Dir auch die Ursache des Fehlers nennen: Mindestens eine
Variable, die Du in das SQL-Statement einfügen wolltest, enthielt ein einfaches
Anführungszeichen. Dadurch wird die Syntax des Statements fehlerhaft und da Du
bisher keine Fehlermeldungen abgefangen hast, hat Dir das Script immer
mitgeteilt, dass die Datensätze erfolgreich eingefügt wurden.

snuu
 
Zurück