Ankündigung

Einklappen
Keine Ankündigung bisher.

Update mit Variablen

Einklappen

Neue Werbung 2019

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

  • Update mit Variablen

    Ich würde gerne einen Datensatz updaten per mysql_query("UPDATE...

    So nun habe ich hier etwas :

    PHP-Code:
        if(isset($_POST['submit2'])){
            if(isset(
    $_POST['ierstellenid']) && isset($_POST['ierstellentitel']) && isset($_POST['ierstellentitel']) && isset($_POST['ierstellentitel'])){
                
    $id $_POST['ierstellenid'];            
                
    $titel $_POST['ierstellentitel']; 
                
    $autor $_POST['ierstellenautor'];
                
    $nachricht $_POST['ierstellennachricht'];        
                if(
    $id != "" && $titel != "" && $autor != "" && $nachricht != ""){
                
                    include 
    'include/db_verbindung.php';                    
                    
                    
    mysql_query("UPDATE beitrag SET titel = '$titel', autor = '$autor', nachricht = '$nachricht' WHERE id = '$id'");
                    echo 
    $id;
                }
            }    
        } 
    Und wenn ich das teste bekomme ich keiner Fehlermeldung aber eintragen tut er auch nichts... Wo ist mein Fehler? könnt ihr das schon so sehen?

  • #2
    Hi,

    ein paar Anmerkungen:

    if($id != "" && $titel != "" && $autor != "" && $nachricht != ""){
    Arbeite mit empty() (http://php.net/manual/de/function.empty.php) besser.

    mysql_query("UPDATE beitrag SET titel = '$titel', autor = '$autor', nachricht = '$nachricht' WHERE id = '$id'");
    mysql_* ist veraltet. Nutze PDO mit Prepared Statements (dann musst Du dir auch keinen kopf wegen SQL Injections machen).

    mfg wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      hmm...
      Also ich habe nun z.B. diese Seite gefunden : http://www.phpeveryday.com/articles/...ment-P552.html

      Aber wirklich klar kommen tue ich damit nicht...
      Ich kann gerne dieses PDO nutzen aber es wäre auch super wenn du/ihr mir sagen könntest was ich den falsch gemacht habe, also bei dem anderen Code.

      Kommentar


      • #4
        Update mit Variablen

        Mal abgesehen der Anmerkungen von wolf29 ( womit er Recht hat ) solltest du deinen Code nochmal genauer anschauen.

        Du prüfst mehrfach das Gleiche ab.
        PHP-Code:
        if(isset($_POST['ierstellenid']) &&
           isset(
        $_POST['ierstellentitel']) &&
           isset(
        $_POST['ierstellentitel']) &&
           isset(
        $_POST['ierstellentitel'])){ 
        Ist das gesetzt gehst du weiter.
        PHP-Code:
        $id $_POST['ierstellenid'];            
        $titel $_POST['ierstellentitel']; 
        $autor $_POST['ierstellenautor'];
        $nachricht $_POST['ierstellennachricht']; 
        Bis hier ist nur geprüft, ob "ierstellentitel" gesetzt ist, weder "ierstellenautor", noch "ierstellennachricht" sind geprüft werden aber zugewiesen.

        Und anschließend passiert das.
        PHP-Code:
        if($id != "" && $titel != "" && $autor != "" && $nachricht != ""){ 
        Wieder eine Prüfung ohne zu wissen, ob diese überhaupt gesetzt sind.

        Zitat von VogelMitF
        Ich kann gerne dieses PDO nutzen aber es wäre auch super wenn du/ihr mir sagen könntest was ich den falsch gemacht habe, also bei dem anderen Code.
        Siehe Signatur.
        Delirius

        PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

        Kommentar


        • #5
          Zitat von Delirius Beitrag anzeigen
          Bis hier ist nur geprüft, ob "ierstellentitel" gesetzt ist
          Wenn es sich um die Verarbeitung eines Formulares handelt, reicht das auch, solange diese Felder keine Checkboxen und Radiobutton sind, denn die sind dann garantiert gesetzt.
          Zitat von Delirius Beitrag anzeigen
          Und anschließend passiert das.
          Wieder eine Prüfung ohne zu wissen, ob diese überhaupt gesetzt sind.
          Natürlich sind die gesetzt! Viel blöder ist doch, dass die Variablen erst umgeschrieben werden und dann geprüft wird, ob sie leer sind. Außerdem werden die Daten nicht escaped, und ein eventueller MySQL-Fehler wird nicht überprüft.
          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

          Kommentar


          • #6
            Update mit Variablen

            Zitat von uha
            Wenn es sich um die Verarbeitung eines Formulares handelt, reicht das auch (...)
            Schau´ dir den Rest von seinem Code an. Prinzipiell hast du Recht, für das was der TE damit vor hat reicht es aber nicht. Da er genau das später wieder als Voraussetzung sieht, um eine SQL-Anweisung zu schreiben.
            Zitat von uha
            Natürlich sind die gesetzt! Viel blöder ist doch, dass die Variablen erst umgeschrieben werden und dann geprüft wird, ob sie leer sind.
            Genau das habe ich damit gemeint. Nichts anderes. Vielleicht sollte ich das anders ausdrücken. Deutsche Sprache und so...
            Delirius

            PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

            Kommentar


            • #7
              Ergänzend: ansich haben meine vorredner bereits alles wichtige soweit geschrieben.

              PHP-Code:
              $dbUpdate mysql_query("UPDATE beitrag SET titel = '".$titel."', autor = '".$autor."', nachricht = '".$nachricht."' WHERE id = '".$id."'") or die("Error: ".mysql_error()); 
              du kannst es (zum testen) mal so probieren und schauen, ob ein Fehler ausgegeben wird. Hier im forum gibt es ein gutes Grundlagentutorial + wie man richtig debuggt.

              Zu PDO findest du eine Menge guter Tut's, ich würde Dir das von Peter Kropff empfehlen.

              mfg wolf29
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Auf die Schnelle:
                PHP-Code:
                if(isset($_POST['submit2']))
                {
                   
                $id        trim($_POST['ierstellenid']);
                   
                $titel     trim($_POST['ierstellentitel']);
                   
                $autor     trim($_POST['ierstellenautor']);
                   
                $nachricht trim($_POST['ierstellennachricht']);
                   
                   if (! empty(
                $id) && !empty($titel) && !empty($autor) && !empty($nachricht))
                   {
                       include 
                'include/db_verbindung.php';
                       
                       
                $query "Update
                                    `beitrag`
                                   SET 
                                    `titel`     = '" 
                mysql_real_escape_string($titel)     . "', 
                                    `autor`     = '" 
                mysql_real_escape_string($autor)     . "', 
                                    `nachricht` = '" 
                mysql_real_escape_string($nachricht) . "
                                   WHERE 
                                    `id` = 
                $id";

                       
                mysql_query($query)
                          or die (
                "MySQL-Error: " mysql_error());
                                  
                       echo 
                $id;       
                    }

                Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                Kommentar


                • #9
                  Also ich würde da Gleichheitszeichen hinschreiben......
                  <- beantwortet am liebsten Oracle-Fragen

                  Kommentar


                  • #10
                    Zitat von Delirius Beitrag anzeigen
                    Mal abgesehen der Anmerkungen von wolf29 ( womit er Recht hat ) solltest du deinen Code nochmal genauer anschauen.

                    Du prüfst mehrfach das Gleiche ab.
                    PHP-Code:
                    if(isset($_POST['ierstellenid']) &&
                       isset(
                    $_POST['ierstellentitel']) &&
                       isset(
                    $_POST['ierstellentitel']) &&
                       isset(
                    $_POST['ierstellentitel'])){ 
                    Ist das gesetzt gehst du weiter.
                    PHP-Code:
                    $id $_POST['ierstellenid'];            
                    $titel $_POST['ierstellentitel']; 
                    $autor $_POST['ierstellenautor'];
                    $nachricht $_POST['ierstellennachricht']; 
                    Oh... ich habe das 1x geschrieben kopiert und dann 3x eingefügt (weniger Schreibarbeit )

                    Natürlich sind die gesetzt! Viel blöder ist doch, dass die Variablen erst umgeschrieben werden und dann geprüft wird, ob sie leer sind.
                    Stimmt... Danke für den Hinweis!

                    Gut also der Code funktioniert jetzt. Aber ich werde ihn nun wieder umbauen, also mit PDO.
                    Danke Danke!

                    Kommentar


                    • #11
                      Update mit Variablen

                      Zitat von VogelMitF
                      Aber ich werde ihn nun wieder umbauen, also mit PDO.
                      Finde ich gut das du dich dran versuchen möchtest. Ist vom Prinzip her gar nicht so schwer.
                      PHP-Code:
                      $db = new PDO"mysql:host=$dbhost;dbname=$dbname"$dbuser$dbpass );
                      $query "UPDATE
                                    beitrag
                                SET
                                    titel = :titel,
                                    autor = :autor,
                                    nachricht = :nachricht
                                WHERE
                                    id = :id"
                      ;
                      $sql $db->prepare$query );
                      $sql->execute( array(
                                      
                      ':titel' => $titel,
                                      
                      ':autor' => $autor,
                                      
                      ':nachricht' => $nachricht,
                                      
                      ':id' => $id
                                     
                      ));
                      if( 
                      $sql->errorCode() != ){
                           
                      print_r$sql->errorInfo() );

                      Delirius

                      PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

                      Kommentar

                      Lädt...
                      X