mysql, Datensatz ersetzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql, Datensatz ersetzen

    Ich kapiere nicht wie man das machen könnte:

    Ich hab ein Gästebuch programmiert, was nicht weiter grossartig ist. Nun, ich wollte dazu einen Adminbereich mit editierfunktion machen.

    Wenn ich also zuerst die Daten aus der Datenbank hole und diese in ein Formluar lade, und ich diese dann genau an der gleichen stelle wieder speichern will, also quasi, den Datensatz überschreiben, ... ja eben, wie muss ich das machen??

    danke für den Tip

    - luc
    --
    keep eating carrots!

  • #2
    Prinzip:
    Die Tabelle sollte so aufgebaut werden, daß jedem Eintrag eine eindeutige interne Identifikationsnummer (ID) zugewiesen ist. Diese Zuweisung (=Bestimmung der ID) übernimmt MySQL.

    PHP-Code:
    CREATE TABLE GBook (
      
    id       INT          UNSIGNED NOT NULL AUTO_INCREMENT,
      
    user           CHAR(20NOT NULL,
      
    content      VARCHAR(255NOT NULL,
      ....
      
    PRIMARY KEY (sig_id),
    ); 
    Über diese ID läßt sich der Eintrag eindeutig identifizieren.

    INSERT INTO GBook values (NULL;"HAllo Deine Seite find ich cool", ...);

    Wird der id-Inhalt über den Insert Befehl nicht angegeben oder der Wert NULL angegebn, so wird automatisch von MySQL diese id belegt und jeweils um den Wert 1 inkerementiert (auto_increment):
    1. Record 0
    2. Record 1
    3. Record 3

    Bei Auswahl: SELECT * from GBook WHERE ID = 999
    Bei Update: UPDATE GBook set content = "doch nit cool" WHERE ID = 999

    edit: Zeilenumbruch, Tabs
    Zuletzt geändert von Titus; 11.06.2002, 10:28.

    Kommentar


    • #3
      danke erstmal

      jo, ich hab eine Datenbank mit eindeutiger id,

      also mit insert oder update geht das...

      nun, du hast noch darauf hingewiesen, dass man so auslesen kann:

      SELECT * from GBook WHERE ID = 999

      ok, ich verstehe das, aber wie kann ich jetzt der einzelne Datensatz auslesen. Also zum Bsp. die Email Zeile der id 999?

      irgendwie so:

      $str_1 = mysql_result($result,0); // ID
      $str_2 = mysql_result($result,1); // name
      $str_3 = mysql_result($result,2); // email
      $str_4 = mysql_result($result,3); // homepage
      $str_5 = mysql_result($result,4); // homepagetitel
      $str_6 = mysql_result($result,5); // comment
      $str_7 = mysql_result($result,6); // datum

      geht aber bei mir nicht

      danke

      - luc
      --
      keep eating carrots!

      Kommentar


      • #4
        Also manche Leute verstehe ich nicht ... ich dachte Du hast ein Gästebuch geschrieben ... werden keine Datenangezeigt ... was macht das Gästebuch so die ganze Zeit??


        array mysql_fetch_array ( resource result [, int result_type]) oder
        array mysql_fetch_assoc ( resource result)
        oder
        array mysql_fetch_row ( resource result) oder
        object mysql_fetch_object ( resource result) oder
        mixed mysql_result ( resource result, int row [, mixed field])
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          hmm...

          ok, sorry, es tut mir ja leid, war eine dumme frage. Obwohl, ich staune immer wieder, wenn man eigentlich immer wieder die alten Routinen übernimmt, die man kennt, ja dann kann es vorkommen, dass es anders 1000-mal einfacher gehen würde. Ich habs jetzt über die While schlaufe gemacht. Danke für die Hilfe.

          Ich dachte eben, es würde irgendwie gehen, dass man die id und dann gleich das row anzeigen könnte. Es geht ja auch so, aber eben, vielleicht wäre es einfacher gegangen.

          Trotzdem nochmals eine Frage zum update befehl:

          Ich hab das jetzt so gemacht:

          $conn = mysql_connect($db_server,$db_user,$db_passwort);
          mysql_select_db($db_name,$conn);
          $query = "UPDATE lucbook Set name = '$name' WHERE id = '$id'";
          $query = "UPDATE lucbook Set email = '$email' WHERE id = '$id'";
          $query = "UPDATE lucbook Set comment = '$comment' WHERE id = '$id'";
          //$query = "UPDATE gb Set homepage = '$homepage' WHERE id = '$id'";
          //$query = "UPDATE gb Set homepagetitel = '$homepagetitel' WHERE id = '$id'";

          //$query = "INSERT INTO GBook values ('$id','".addslashes($name)."', '".addslashes($email)."', '".addslashes($homepage)."', '".addslashes($homepagetitel)."', '".addslashes($comment)."' ,'".addslashes($datum)."')";
          $result = mysql_query($query,$conn);

          Das Update funktioniert lustigerweise nur bei comment!

          was mach ich falsch, oder würde es irgendwie einfacher gehen?



          -luc
          --
          keep eating carrots!

          Kommentar


          • #6
            Hallo,

            stat addslashes() würde ich mysql_real_escape_string() verwenden.
            Die Updates kannst Du zusammenfassen:

            PHP-Code:
            mysql_query($query "UPDATE lucbook SET
              name = '"
            .mysql_real_escape_string($name)."',
              email = '"
            .mysql_real_escape_string($email)."',
              comment = '"
            .mysql_real_escape_string($comment)
              . 
            "' WHERE id = '$id'");
            if ( 
            mysql_errno() )
              echo 
            "ERROR[".mysql_errno()."] "
                
            .mysql_error()."<br />$query<br />\n"
            Sowas in der Art sollte Dir auch 'ne Fehlermeldung liefern ...

            edit: Zeilenumbrüche
            Zuletzt geändert von Titus; 11.06.2002, 10:27.
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              ok,

              du hast geschrieben, dass ich besser .mysql_real_escape_string() brauchen soll.

              bei mir kommt diese Fehlermeldung:

              Fatal error: Call to undefined function: mysql_real_escape_string() in c:\inetpub\wwwroot\guestbook\guestbook.php on line 283


              hab ich ne alte php Version?

              danke für die Tips

              - luc
              --
              keep eating carrots!

              Kommentar


              • #8
                anyway..

                es geht, endlich ...


                herzlichen danke dafür!

                es grüsst

                - luc
                --
                keep eating carrots!

                Kommentar


                • #9
                  Nein .. war mein Fehler ... mysql_real_escape_string() ist nur im CVS ... mysql_escape_string() heißt das Ding ...
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar

                  Lädt...
                  X