kostenloser Webspace werbefrei: lima-city


PHP Datenbankeintrag ändern

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    g********e

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. giga-score schrieb:
    ... ich möchte in einer Datenbank meine Einträge ändern,
    yo mey! das möchten hier noch einige ;)
    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.com
    aber 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
  4. 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
  5. Autor dieses Themas

    g********e

    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
  6. 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.
  7. Autor dieses Themas

    g********e

    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.
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    giga-score schrieb:
    Ich weiß zwar nicht warum "USERNAME" angeblich "undefiniert" sein soll, aber USERNAME und PASSWORT stimmen auf jeden Fall über ein.
    Schreib doch einfach das hin was hingehört, also deinen Benutzernamen und dein Passwort ;-)

    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 :-P
  9. Autor dieses Themas

    g********e

    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?
  10. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    giga-score schrieb:
    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!
    Wenn er dir sagt, dass das "undefined" ist hast du die Anführungszeichen vergessen!

    Ansonsten hast du noch vergessen eine DB auszuwählen, was mit
    mysql_select_db('datenbankname', $db_link);
    passieren sollte…

    Reicht dir das als Antwort?

    Beitrag zuletzt geändert: 26.12.2012 14:09:31 von hackyourlife
  11. giga-score schrieb:
    ...
    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
    )
    ...
    das besagt ganz genau das was du falsch machst:
    $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
  12. Autor dieses Themas

    g********e

    Danke euch allen erst mal :wink:

    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
  13. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    giga-score schrieb:
    … jetzt habe ich immer noch die Folgende Ausgabe:
    $db_link: 1
    Array
    (
        [0] => 1046
        [1] => No database selected
    )
    Zitier ich mich mal selbst:
    hackyourlife schrieb:
    Ansonsten hast du noch vergessen eine DB auszuwählen, was mit
    mysql_select_db('datenbankname', $db_link);
    passieren sollte.
    Klingt logisch?
  14. Autor dieses Themas

    g********e

    Danke,
    ich habe das nicht vergessen, ich habe den Code so gekriegt! Aber trotzdem Danke ;D

    LG
    Michael
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!