ich habe ein einfaches Forum erstellt, welches beim meinem alten Webhoster wunderbar funktioniert hat. Nach dem Umzug kann ich leider keine Antworten mehr geben bzw. keien neuen Threads erstellen. Ich erhalte immer die ensprechende Fehlermeldung, das snicht alle Felder ausgefüllt sind. (Also die vorgegebene Fehlermelung). Also wa sist falsch?
<?php
...
if(isset($username) && isset($eintrag)){
$date=date("d.m.Y");
$time=date("H:i");
@mysql_query("Update forum_threads set thread_replys=thread_replys+1 where thread_id='".$threadid."'");
$query="Insert into forum_replys
VALUES(
'',
'".$title."',
'".$username."',
'".$date."',
'".$time."',
'".$eintrag."',
'".$boardid."',
'".$threadid."'
)";
@mysql_query($query);
echo"<b>Die Antwort wurde erfolgreich erstellt!<br><a href=\"replys.php?boardid=".$boardid."&threadid=".$threadid."\">Weiter</a></b>";
} else {
echo"<b>Bitte füllen Sie alle Felder aus.<br><a href=\"javascript:history.go(-1)\">Zurück</a></b>";
}
?>
Zunächst war ein schreibfehler im Absendeformular SCHULD, dass die Variablen nicht mit POST übermittelt wurden. Nun kann ich einen EIntrag erstellen (Dieser bekommt die reply_id 0) aber dann keinen weiteren mehr. Es kommt nichts in der Datenbank an. Außerdem kenne ich die Befehle für die Zeit und das Datum nicht.
<?php
...
if(isset($_POST['username']) && isset($_POST['eintrag'])){
$date=date("d.m.Y");
$time=date("H:i");
@mysql_query("Update forum_threads set thread_replys=thread_replys+1 where thread_id='".$_POST['threadid']."'");
$query="Insert into forum_replys
(reply_id,reply_title,reply_username,reply_date,reply_time,reply_message,reply_boardid,reply_threadid)
VALUES(
[color=#FF0000]''[/color],
'".$_POST['title']."',
'".$_POST['username']."',
[color=#FF0000]NOW()[/color],
[color=#FF0000]NOW()[/color],
'".$_POST['eintrag']."',
'".$_POST['boardid']."',
'".$_POST['threadid']."'
)";
@mysql_query($query);
echo"<b>Die Antwort wurde erfolgreich erstellt!<br><a href=\"replys.php?boardid=".$_POST['boardid']."&threadid=".$_POST['threadid']."\">Weiter</a></b>";
} else {
echo"<b>Bitte füllen Sie alle Felder aus.<br><a href=\"javascript:history.go(-1)\">Zurück</a></b>";
}
?>
reply_id ist warscheinlich der Primary Key, daher kann reply_id = 0 nur ein mal vorkommen. mit ‚‘ weißt du aber immer 0 zu.
Eine effektive Lösung ist es reply_id auf auto_increament zu setzen, und aus der Insert-Liste komplett herauszunehmen, bzw NULL zu senden
Zeiten sind in MySQL extrem leicht einzufügen. Entweder du sendest einfach einen Timestamp als Integer, oder einen String der ein gültiges Datumsformat enthält. MySQL erkennt dann automatisch welches Format es ist
<?php
...
if(isset($_POST['username']) && isset($_POST['eintrag'])){
$date=date("d.m.Y");
$time=date("H:i");
@mysql_query("Update forum_threads set thread_replys=thread_replys+1 where thread_id='".$_POST['threadid']."'");
$query="Insert into forum_replys
(reply_title,reply_username,reply_date,reply_time,reply_message,reply_boardid,reply_threadid)
VALUES(
'".$_POST['title']."',
'".$_POST['username']."',
'".$date."',
'".$time."',
'".$_POST['eintrag']."',
'".$_POST['boardid']."',
'".$_POST['threadid']."'
)";
@mysql_query($query);
echo"<b>Die Antwort wurde erfolgreich erstellt!<br><a href=\"replys.php?boardid=".$_POST['boardid']."&threadid=".$_POST['threadid']."\">Weiter</a></b>";
} else {
echo"<b>Bitte füllen Sie alle Felder aus.<br><a href=\"javascript:history.go(-1)\">Zurück</a></b>";
}
?>
Damit funktioniert das Eintragen und das Datum. ABER. Alle Sonderzeichen werden codiert in die Datenbank gesendet und auch codiert ausgegeben. Wie kann ich dafür sorgen, dass ein „Ü“ wieder als ein „Ü“ in die Datenbank geht und nicht als „Ü“?
[quote=“moneymeyer”]Also im head meiner Dokumente steht:
Dies war nätig, damit alle Sonderzeichen nach dem Umzug richtig dargestellt wurden.
Die Kollation meiner Datenbank steht überall auf utf8_general_ci. Müsste doch gleich sein, oder?[/quote]
Nein, ISO-8859-1 ganz und gar nicht “das gleiche” wie UTF-8.
Die Überlegung, welche Kodierung man verwenden will, und wo diese dann überall einzustellen ist, sollte vorher erfolgen (und durchdacht sein) - dann muss man nachher nicht so viel rumbasteln, um es irgendwie “wieder hin zu kriegen”.
Jetzt wirst du schauen müssen, wo überall du noch Angaben zur Kodierung machen musst (HTTP-Header, Verbindung zur Datenbank, …).
Okay, langsam mag ich echt nicht mehr. Vor dem Umzug auf diesem Webspace hatte ich nie darauf geachtet (Ich hatte auch keine Codierung im head meiner Dokumente angegeben) und es hatte komischerweise immer funktioniert.
Kann mir bitte jemand sagen, wie ich meine alten Daten exportieren und hier bei bplaced importieren kann, damit ich nicht überall eine unterschiedliche Codierung habe und alle Zeichen (sowohl die alten aus der übernommenen Datenbank und die neu hinzugefügten) richtig dargestellt werden?
Was muss ich wo einstellen (phpmyadmin, html-head, sql-befehle, etc.). Es muss doch auch einen einfachen Weg geben!
(Hätte nicht gedacht, dass ein Webspacewechsel so kompliziert werden kann)