PHP Datenbankeintrag ändern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
benutzername
code
dank
datenbank
datum
eingabe
eintragen
ergebnis
fehler
formular
frage
header
profil
set
sex
stellen
update
url
vergessen
-
Hey Leute,
ich möchte in einer Datenbank meine Einträge ändern, aber es funktioniert nicht! Ich hatte schon gegoogelt, hatte meine Vorlage von php-einfach.de, aber egal wie ich an dem Code rumbastle, es will einfach nich das tun was es soll =D Jetzt wollte ich euch mal Fragen ob ihr da ein Fehler entdeckt =)
<?php $sex = $_POST['sex']; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $id = $_SESSION["id"]; echo $firstname; $db_link = mysql_connect ( localhost,USERNAME,'PASSWORT' ); $db_sel = mysql_select_db( ni112011_2sql3 )or die("Auswahl der Datenbank fehlgeschlagen"); $eintragen = mysql_query("UPDATE user Set (firstname, lastname, sex) = ('$firstname', '$lastname', '$sex') WHERE id = '$id'"); echo "<meta http-equiv='refresh' content='3; URL=options.php?action=profile'>"; ?>
die Daten kommen auf jeden Fall in diese Datei rein, ich werde danach auch weitergeleitet, aber wen ich dann nachgucke wurden keine Dateien geändert >.<
Danke im Voraus
LG
Michael
Beitrag zuletzt geändert: 25.12.2012 22:46:09 von giga-score -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
giga-score schrieb:
yo mey! das möchten hier noch einige ;)
... ich möchte in einer Datenbank meine Einträge ändern,aber es funktioniert nicht!
das passiert dann auch einigen ;)Ich hatte schon gegoogelt,
im internet????hatte meine Vorlage von php-einfach.de,
das ist aber kein mysql-tut! hier nachgucken: dev.mysql.comaber egal wie ich an dem Code rumbastle,
an codes 'bastellt' man nicht rum! man schreibt sie, man testet sie, man editiert sie und dann funzen die meistens ;)es will einfach nich das tun was es soll =D Jetzt wollte ich euch mal Fragen ob ihr da ein Fehler entdeckt =)
ja! aber trotzdem, schöne feiertage noch.
ahhh yo! die hilfe ;) (ich bin gerade beim auspacken der geschenke :)
<?php // variablen einrichten // connect 2 db // folgende schreibweise ist wegen mysql-fehlermeldungen wichtig! // dort steht dann nicht 'fehler in zeile 1' sondern in 'zeile n' // was das interpretieren erleichtert ;) // nachlesen unter 'http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc' $query = <<< EOT UPDATE user SET firstname='$firstname', lastname='$lastname', sex='$sex' WHERE id='$id' EOT; if(mysql_query($query)) { // statt meta refresh lieber http://php.net/manual/de/function.header.php } else { // da ist ein murks :( exit('<pre>'.print_r(array(mysql_errno(), mysql_error()), true)); }
Beitrag zuletzt geändert: 25.12.2012 7:25:55 von czibere -
Du hast
$eintragen = mysql_query("UPDATE user Set (firstname, lastname, sex) = ('$firstname', '$lastname', '$sex') WHERE id = '$id'");
richtig ist
$eintragen = mysql_query("UPDATE user SET firstname='$firstname', lastname= '$lastname, sex='$sex WHERE id = '$id'");
ausserdem solltest Du die User-Eingaben vor dem Eintragen richtig escapen (Sicherheit)
also Variablen vor dem Speichern in Datenbank immer mit mysql_real_escape_string() behandeln
(nachdem die Verbindung zur Datenbank aufgebaut wurde)
<?php // ---------------------------------------------------- session_start(); // ---------------------------------------------------- // --- Formular Eingabe komplett und SESSION vorhanden ? --- if ( !empy($_POST['sex']) && !empy($_POST['firstname']) && !empy($_POST['lastname']) && isset($_SESSION["id"]) ) { // ---------------------------------------------------- // --- Daten aus der Formular Eingabe zu Variablen --- $sex = $_POST['sex']; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $id = $_SESSION["id"]; // ---------------------------------------------------- // --- Verbindung zur Datenbank --- $db_link = mysql_connect ( localhost, USERNAME, PASSWORT ); // ---------------------------------------------------- // --- Variablen vor Eintrag escapen --- $sex = mysql_real_escape_string($sex); $firstname = mysql_real_escape_string($firstname); $lastname = mysql_real_escape_string($lastname); // ---------------------------------------------------- // --- der SQL Befehl zum Eintrag (UPDATE) --- $query = " UPDATE user SET firstname = '$firstname', lastname = '$lastname, sex = '$sex' WHERE id = '$id' "; // ---------------------------------------------------- // --- den SQL Befehl an die Datenbank senden --- $result = mysql_query($query); // ---------------------------------------------------- // --- Prüfen ob Ergebnis OK (true) --- if($result) { print "<p>MySQL Fehler Nr: " . mysql_errno() . "</p>\n"; print "<pre>" . mysql_error() . "</pre>\n"; exit; } else { ## print "<p>Alles OK :) \n"; header ('Location: options.php?action=profile'); } // ---------------------------------------------------- } else { // --- hier das Eingabe Formular --- ## print $formular; } // ---------------------------------------------------- ?>
Beitrag zuletzt geändert: 25.12.2012 12:18:27 von gospielen -
Hey ^^ schöne Feiertage
@gospielen
ich habe jetzt meinen Code editiert und habe immer noch kein Ergebnis! Also ich werde immer noch auf options.php?action=profile weitergeleitet, aber wen ich dann unter PHPMyAdmin nachgucke hat sich nichts geändert!
Das was du als // --- Formular Eingabe komplett und SESSION vorhanden ? --- bezeichnest, habe ich raus genommen und dementsprechend am ende das else auch entfernt, aus dem einfachen Grund falls jemand nichts in das Feld eingegeben hat. Es sollen trotzdem die Daten gespeichert werden, auch wen nichts eingegeben wurde.
<?php session_start(); $sex = $_POST['sex']; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $id = $_SESSION["id"]; $db_link = mysql_connect ( localhost, USERNAME, 'PASSWORD' ); $sex = mysql_real_escape_string($sex); $firstname = mysql_real_escape_string($firstname); $lastname = mysql_real_escape_string($lastname); $query = "UPDATE user SET firstname = '$firstname', lastname = '$lastname, sex = '$sex' WHERE id = '$id'"; $result = mysql_query($query); if($result) { print "<p>MySQL Fehler Nr: " . mysql_errno() . "</p>\n"; print "<pre>" . mysql_error() . "</pre>\n"; exit; } else { header ('Location: options.php?action=profile'); } ?>
Beitrag zuletzt geändert: 25.12.2012 22:46:31 von giga-score -
giga-score schrieb:
... ich habe jetzt meinen Code editiert und habe immer noch kein Ergebnis! Also ich werde immer noch auf options.php?action=profile weitergeleitet, aber wen ich dann unter PHPMyAdmin nachgucke hat sich nichts geändert!
man wird mit dir hier leider paar probleme haben:
1. dein provider für den code ist nicht lima-city, daher müssen wir alle blind fliegen;
2. du liest nicht einmal alle ratschläge;
3. du fliegst selbst blind, das heißt, du gibst keine meldungen von php aus.
du wirst weitergeleitet, weil du - wahrscheinlich - einen mysql fehler hast:$result = mysql_query($query); if($result) { print "<p>MySQL Fehler Nr: " . mysql_errno() . "</p>\n"; print "<pre>" . mysql_error() . "</pre>\n"; exit; } else { header ('Location: options.php?action=profile'); }
was du damit sagst ist schlicht und ergreifen das:
'wenn $result true ist (also kein mysql fehler), dann gib mysql fehlermeldungen aus, sonst weiterleiten (also genau dann, wenn fehler aufgetreten ist)'.
... Es sollen trotzdem die Daten gespeichert werden, auch wen nichts eingegeben wurde. ...
was für daten? brainf...ck!
mein letzter versuch (gegen windmühlen zu kämpfen):<?php error_reporting(E_ALL | E_STRICT); session_start(); $sex = $_POST['sex']; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $id = $_SESSION["id"]; $db_link = mysql_connect(localhost, USERNAME, 'PASSWORD'); echo '<h4>$db_link: '.(int)($db_link).'</h4>'; $sex = mysql_real_escape_string($sex); $firstname = mysql_real_escape_string($firstname); $lastname = mysql_real_escape_string($lastname); $query = <<< EOT UPDATE user SET firstname='$firstname', lastname='$lastname', sex='$sex' WHERE id='$id' EOT; if(mysql_query($query)) { // dein header ist falsch! das hier lesen!!!! http://php.net/manual/de/function.header.php // und ich kann den richtigen auch nicht einfügen! URL ist unbekannt! header ('Location: options.php?action=profile'); } else { // da ist ein murks :( exit('<pre>'.print_r(array(mysql_errno(), mysql_error()), true)); }
zu diesem code solltest nichts hinzufügen, nur die zugangsdaten editieren. dann ausführen und hier die meldung(en) zeigen. sollte es keine fehlermeldungen geben, möchtest bitte deinen provider die frage stellen, wie du sie auf deinem server sichtbar machen kannst. sonst ist dir hier nicht zu helfen :(
wenn due das aber auf dem eigenen server (dein tisch-pc) betreibst, dann möchtest du bitte selbst dahinter kommen, wie ein webserver mit php und mysql funktioniert. -
Hey, danke erstmal
ich kriege eine Fehllermeldung:
Notice: Use of undefined constant localhost - assumed 'localhost' in /var/customers/webs/ni112011_2/BG/optionsProfileWork.php on line 53 Notice: Use of undefined constant [i]USERNAME[/i] - assumed '[i]USERNAME[/i]' in /var/customers/webs/ni112011_2/BG/optionsProfileWork.php on line 53 $db_link: 1 Array ( [0] => 1046 [1] => No database selected )
in "line 53" steht das Datenbank-Connect:
$db_link = mysql_connect(localhost, [i]USERNAME[/i], '[i]PASSWORT[/i]'); /* Steht erst in 53 weil ich alles davor auskommentiert habe habe */
Ich weiß zwar nicht warum "USERNAME" angeblich "undefiniert" sein soll, aber USERNAME und PASSWORT stimmen auf jeden Fall über ein.
Ich habe meine Domain und Webspace bei Nitrado, ich guck bei denen mal im Forum/Hilfe und schreibe Notfalls die an. -
giga-score schrieb:
Schreib doch einfach das hin was hingehört, also deinen Benutzernamen und dein Passwort
Ich weiß zwar nicht warum "USERNAME" angeblich "undefiniert" sein soll, aber USERNAME und PASSWORT stimmen auf jeden Fall über ein.
Also in etwa so:$db_link = mysql_connect('localhost', 'dein-mysql-benutzername', 'dein-mysql-passwort');
Deinen Benutzernamen und dein Passwort musst du allerdings schon selbst wissen -
ich bin ja auch nicht dumm -.-*
natürlich habe ich da mein Benutzername und mein Passwort! Nur ich denke mir das ob ich dein-mysql-benutzername und dein-mysql-passwort oder USERNAME und PASSWORT schreibe kommt beim selben raus!
Was war das den jetzt für eine Bauer Antwort von dir, hackyourlife? -
giga-score schrieb:
Wenn er dir sagt, dass das "undefined" ist hast du die Anführungszeichen vergessen!
natürlich habe ich da mein Benutzername und mein Passwort! Nur ich denke mir das ob ich dein-mysql-benutzername und dein-mysql-passwort oder USERNAME und PASSWORT schreibe kommt beim selben raus!
Ansonsten hast du noch vergessen eine DB auszuwählen, was mitmysql_select_db('datenbankname', $db_link);
passieren sollte…
Reicht dir das als Antwort?
Beitrag zuletzt geändert: 26.12.2012 14:09:31 von hackyourlife -
giga-score schrieb:
das besagt ganz genau das was du falsch machst:
...
...Notice: Use of undefined constant localhost - assumed 'localhost' in /var/customers/webs/ni112011_2/BG/optionsProfileWork.php on line 53 Notice: Use of undefined constant [i]USERNAME[/i] - assumed '[i]USERNAME[/i]' in /var/customers/webs/ni112011_2/BG/optionsProfileWork.php on line 53 $db_link: 1 Array ( [0] => 1046 [1] => No database selected )
$db_link = mysql_connect(localhost, USERNAME, 'PASSWORD');
alle drei parameter von mysql_connect gehören in single quotations, weil sie String_literal und nicht constnts sind. und so gehört es also:$db_link = mysql_connect('localhost', 'USERNAME', 'PASSWORD');
(habt ihr da bei nitrado.net kein suppert, dass wir das hier erledigen müssen ???? )
==== edit ====
*ohtutleid* ich habe die vorige eintragung komplett übersehen :(
Beitrag zuletzt geändert: 26.12.2012 14:35:27 von czibere -
Danke euch allen erst mal
ich habe jetzt den Support angefragt, aber falls ich noch eine Frage stellen darf, jetzt habe ich immer noch die Folgende Ausgabe:
$db_link: 1 Array ( [0] => 1046 [1] => No database selected )
LG
Michael -
giga-score schrieb:
Zitier ich mich mal selbst:
… jetzt habe ich immer noch die Folgende Ausgabe:
$db_link: 1 Array ( [0] => 1046 [1] => No database selected )
hackyourlife schrieb:
Klingt logisch?
Ansonsten hast du noch vergessen eine DB auszuwählen, was mitmysql_select_db('datenbankname', $db_link);
passieren sollte. -
Danke,
ich habe das nicht vergessen, ich habe den Code so gekriegt! Aber trotzdem Danke ;D
LG
Michael -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage