Das halte ich auch für selbstverständlich - aber wenn die Problembeschreibung nicht über “wird irgendwie nicht übermittelt” hinausgeht, dann gehe ich davon aus, dass sowas wie eine halbwegs sinnvolle Debugstrategie kaum vorhanden ist, und dann muss auch erst mal nach solchen Basics gefragt werden.
Nö - du etwa?
“Tippfehler”, die die Funktionsweise des Scriptes beeinträchtigen, sollte im Normalfall error_reporting E_ALL schon ans Licht bringen (bspw. falsch geschriebene Variablennamen, Zugriff auf nicht vorhandene Werte, etc.)
Und vom “ankucken” wird sich der Code vermutlich nicht selbst korrigieren …
Also muss man da mit ein bisschen Strategie und Logik an die Sache rangehen.
Dass bedeutet erst mal, das Ansprechen der Datenbank um eine vernünftige Erfolgskontrolle und ggf. Fehlerbehandlung zu ergänzen - zeig bitte, wie weit du da inzwischen nachgebessert hast.
Und dann sind auch Kontrollausgaben essentiell, um zu kontrollieren, ob die vermuteten Variableninhalte auch der Realität entsprechen.
P.S.; Weitere Code-Beispiele bitte hier im Thread posten. Das “Auslagern” an externe Quellen, die irgendwann ggf. nicht mehr verfügbar sind, macht solche Diskussionen für die Nachwelt nämlich wertlos.
so damit ihr euch wieder lieb habt hab ich ma fix ne lösung gemacht hoffe ich zumindest
if(logged_in())
{
echo '
<div class="commentbox">
<form method="post">';
$sql= "SELECT UserName,UserId FROM users WHERE UserSession='".session_id()."' LIMIT 1";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
if(is_object($row))
{
echo '
<input type="hidden" name="submitusername" value="'.$row->UserName.'">
<input type="hidden" name="submituserid" value="'.$row->UserId.'">
<input type="text" name="title" class="commenttitle"><br />
<textarea class="comment" name="comment"></textarea><br />
<input type="submit" value="Post" name="send">
<input type="reset" value="Reset"> ';
}
else echo 'Es ist ein unerwarteter Fehler aufgetreten oder so ;)';
echo '
</form>
</div>';
}
if(isset($_POST['send']))
{
$sqlcom = sprintf(
"INSERT INTO comment (ref, reftype, title, comment, author, authorid, date) VALUES ('%d','%s','%s','%s','%s','%d',NOW())",
mysql_real_escape_string($_GET['article']),
mysql_real_escape_string($_GET['section']),
mysql_real_escape_string($_POST['title']),
mysql_real_escape_string($_POST['comment']),
mysql_real_escape_string($_POST['submitusername']),
mysql_real_escape_string($_POST['submituserid'])
);
//MySQL Query nicht ausführen sondern zum Test ausgeben lassen...
#mysql_query($sqlcom);
echo $sqlcom;
//Wofür machst du diese ausgabe und nach einer Sekunde eine weiterleitung ?
//leite doch direkt weiter mit: header("location: PFAD");
//um die Ausgabe der Query anzuzeigen wird die weiterleitung erstmal auskommentiert...
echo ' <div class="error">Comment posted.</div>';
#echo ' <meta http-equiv="refresh" content="1">';
}
Wie im Quelltext markiert verstehe ich den Sinn der Weiterleitung nicht…
der Text “Comment posted” wird unter dem wieder angezeigten Formular stehen und
dann kommt eine Weiterleitung auf das selbe Formular, mit dem einzigen Unterschied
das nicht mehr “Comment posted” drunter steht … naja^^
Eigentlich sollte das aber so funktionieren wie du es hattest…
Wenn die Ausgabe korrekt angezeigt wird, kann es noch sein das die Struktur deiner Tabelle falsch ist und beim einfügen evtl was verloren geht, aber normalerweise kommt dann eine Fehlermeldung.
error_reporting hast du hoffentl. nicht deaktiviert ?
[/quote]
in die Db zu übertragen, was folgendermaßen passiert:
[quote]if(isset($_POST['send'])){
$sqlcom = sprintf("INSERT INTO comment (ref, reftype, title, comment, author, authorid, date) VALUES ('%d','%s','%s','%s','%s','%d',NOW())",
mysql_real_escape_string($_GET['article']),
mysql_real_escape_string($_GET['section']),
mysql_real_escape_string($_POST['title']),
mysql_real_escape_string($_POST['comment']),
[color=#40FF00]mysql_real_escape_string($_POST['submitusername']),[/color]
[color=#FF0000]mysql_real_escape_string($_POST['submituserid']));[/color]
$querycom = mysql_query($sqlcom);
echo ‘
Comment posted.
’;
echo ‘’;
}[/quote]
Das Problem:
Es wird nur submituserid, also die Ziffer in die DB übertragen.
[quote=“pumba1111”]Also nochmal Neuanfang:
Mein Ziel: [/quote]
Dein Ziel ist klar - das brauchst du nicht wiederholen.
Aber die Hinweise, die du jetzt schon mehrfach bekommen hast - die setze jetzt bitte langsam mal um!
Da sind keine “Werte vorhanden”, das ist PHP-Code - und der interessiert den Client herzlich wenig.
Das, was den Client interessiert, hast du laut eigener Aussage ja bereits geprüft … das mal wortwörtlich per Copy&Paste zu sehen zu bekommen, wäre für die Problemanalyse wesentlich interessanter, als die Wiederholung deiner Beschreibung, was du mit dem Script erreichen willst.
Ich habe dir bereits einiges an Hilfreichem gesagt - aber du ignorierst das bisher grösstenteils.
Und ganz davon abgesehen wäre dann auch noch interessant, wieso du überhaupt Nutzername und -ID beim Kommentar mit abspeichern willst.
Wenn ein beliebiger, freier Name verwendet kann - dann brauchst du nur diesen zu speichern.
Wenn der Nutzername jedoch festgelegt ist (durch ein darum befindliches System) - dann ist es unsinnig, ihn als Klartext per Formular zu übergeben, denn dann kann ich ihn ohne weiteres ändern, und dann passt er nicht mehr zur ID. Diese Zusammengehörigkeit müsste also auch noch abgeprüft werden.
Besser wäre es dann natürlich, nur die ID abzuspeichern, und bei der Ausgabe aus der Datenbank den Namen hinzuzulesen.
[quote]
Dass bedeutet erst mal, das Ansprechen der Datenbank um eine vernünftige Erfolgskontrolle und ggf. Fehlerbehandlung zu ergänzen - zeig bitte, wie weit du da inzwischen nachgebessert hast.[/quote]
Fällt weg, da ja ein Wert übermittelt wird.
s.o.
In dem Punkt stimme ich dir zu, aber mich wurmt es, dass das Script nicht vollständig funktioniert und ich nicht weiß warum.
Nein, deshalb fällt eine vernünftige Fehlerbehandlung noch lange nicht weg.
Dein Script gibt nach dem Versuch(!), die Daten in die Datenbank einzutragen, “Comment posted” aus - ohne dass du das auch nur im geringstenüberprüft hast. Ob irgendein Fehler aufgetreten ist, der dafür sorgte, dass der Kommentar eben doch nicht eingetragen werden konnte, interessiert dich also kein bisschen …?
s.o.[/quote]
Ich weiss nicht, wie du auf diese Art das Problem lösen willst …
Na und jetzt …?
Wie soll sich an diesem Zustand etwas ändern, wenn du nicht bereit bist, auf die Vorschläge, die dir gemacht werden, einzugehen?
Einer der beiden Werte wird in die Datenbank eingetragen und da beide Werte mit einer Anfrage behandelt werden, dürften die beiden Punkte ja wegfallen.