Daten ändern in MYSQL mit PHP

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

  • Daten ändern in MYSQL mit PHP

    Hallo zusammen
    ich habe drei Script mit den Namen datenauswahl.php, datenaendern.php und datenaendernschreiben.php.

    Script datenauswahl.php:
    PHP-Code:
    <html>
    <head>
    </head>
    <body>
    <?php
    include('inc/mysql.inc');
    $query "SELECT anz, kategorie FROM herrenrace ORDER BY name";
    $sql mysql_query($query)or die ("Fehler in der sqlab!".$query."");
    $anzahl mysql_num_rows($sql);
    //***************************Tabellenbeginn*********************************** 
    echo "<table width ='100%' align='center' BORDER=1 CELLSPACING=0 CELLPADDING=5 BGCOLOR='#FF9966'>";
    //***************************Ueberschrift************************************** 
    echo "<tr bgcolor='#CCCCCC' align ='center'>";
    echo 
    "<td> <colspan='8'>Datensatz<br>wählen";
    echo 
    "</tr>";
    echo 
    "<td>ID</td>";
    echo 
    "<td>Kategorie</td>";
    echo 
    "</tr></td>";
    for(
    $ii=0$ii <$anzahl$ii++){
    $anz=mysql_result($sql$ii"anz");
    $kategorie=mysql_result($sql$ii"kategorie");
    echo 
    "<tr>";
    echo 
    "<td><input type='radio' name='auswahl' value='$anz'></td>";
    echo 
    "<td>$anz</td>";
    echo 
    "<td>$kategorie</td>";
    echo 
    "</tr >";
    }
    echo 
    "</table>";
    echo 
    "<table width ='100%' align='center' BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR='#CCCCCC'>";
    echo 
    "<tr >";
    echo 
    "<td><input type ='submit' name='aend' value='ändern'></td>";
    echo 
    "</tr >";
    echo 
    "</table>";
    ?>
    </form>
    </body>
    </html>
    Die Daten werden gut ausgelesen und aufgelistet. Wie übergeb die Daten nun dem Script datenaendern.php?

    Script datenaendern.php:
    PHP-Code:
    <html>
    <head>
    </head>
    <body>
    <?php
    if($auswahl){
    if(
    $aend){
    include(
    'inc/mysql.inc');
    $sqlab "SELECT anz, kategorie FROM herrenrace
    WHERE anz = 
    $auswahl";
    $res mysql_query($sqlab);
    $num mysql_num_rows($res);
    $altekategorie=mysql_result($res0"kategorie");
    echo 
    "<form action='datenaendernschreiben.php' method='post'>";
    echo 
    "<table width ='70%' align='center' BORDER=0 CELLSPACING=0 CELLPADDING=5 BGCOLOR=#F17D32>";
    echo 
    "<tr bgcolor='#CCCCCC' align ='center'>";
    echo 
    "<td colspan='10'>
    führe die Änderung durch, und betätige anschliessend den Button</td>"
    ;
    echo 
    "</tr>";
    echo 
    "<tr>";
    echo 
    "<td><input name='neuekategorie' value='$altekategorie'> Kategorie</td>";
    echo 
    "</tr>";
    echo 
    "</table>";
    echo 
    "<table width ='70%' align='center' BORDER=0 CELLSPACING=0 CELLPADDING=5 BGCOLOR='#CCCCCC'>";
    echo 
    "<tr>";
    echo 
    "<td width=1%><input type='submit' name='send' value='senden'></td>";
    echo 
    "<td width=20%><input type='reset' value='zurücksetzen'></td>";
    echo 
    "</tr>";
    echo 
    "</table>";
    echo 
    "<input type='hidden' name='oriid' value='$auswahl'>";
    echo 
    "</form>";
    mysql_close;
    }
    //ende aend
    }
    else{
    echo 
    "Es wurde keinen Datensatz ausgewählt!";
    }
    ?>
    </body>
    </html>
    Habe die Script für mich angepasst und komme leider nicht mehr weiter :-(

    Script datenaenderschreiben.php:
    PHP-Code:
    <html>
    <head>
    </head>
    <body>
    <?php
    include('inc/mysql.inc');
    if(
    $neuekategorie){
    $sqlab"UPDATE herrenrace SET kategorie='$neuekategorie' WHERE id = '$oriid'";
    mysql_query($sqlab);
    $num=mysql_affected_rows();
    }
    if(
    $num>0){
    echo 
    "Der Datensatz wurde geändert!";
    }
    //if($num>0){
    else{
    echo 
    "Der Datensatz wurde nicht geändert!";
    }
    ?>
    </body>
    </html>
    Wäre genau was ich benötige. Kann mir jemand helfen?
    Danke Gruss Andreas
    Zuletzt geändert von andreas0063; 22.07.2005, 23:46.

  • #2
    in datenauswahl.php fehlt das
    <form action="datenaendern.php">, damit die Variable $auswahl übergeben wird...

    Kommentar


    • #3
      mööööööööööööööööööööööööööööööp!

      Vorsichtig, bitte NICHT so programmieren! bitte DRINGEND die superglobals $_POST, $_GET etc. benutzen!

      Bitte schlau machen: register_globals

      Am Anfang erscheint es mehr arbeit zu sein, aber es ist a) sicherer b) sauberer und c) kompatibler, da der Zugriff auf Formulare per $aendern o.Ä. nicht überall funktioniert...!

      Also, bitte mal meinen Link oben lesen
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Das war mir doch das so etwas noch fehlt.
        Ich bekomme jetzt das Formular datenaendern.php dargestellt.
        Mache eine Änderung und sende das Formular ab.
        Es führt die Änderung noch nicht durch. Irgendwo bei datenaendernschreiben.php ist noch ein Fehler drin sch..... :-)

        Kommentar


        • #5
          @Shurakai: Recht haste, aber die Frage war, wie das Ding erstmal funktioniert.

          Wenn ich andreas0063 richtig verstehe, ist er froh überhaupt ein Script gefunden zu haben, das sein Problem löst.

          Und nach ein paar kleinen Anpassungen geht es plötzlich nicht mehr.

          Erstmal zum Laufen kriegen und verbessern kann man später immer noch.

          Kommentar


          • #6
            in datenaendern.php erscheint die richtige Kategorie mit altem Namen?
            oder hakt da schon was?

            Irgendwelche Fehlermeldungen?

            Kommentar


            • #7
              Da erscheinen die alten alten Daten in den Feldern die ich gerne ändern möchte.
              Ich kann die Daten im Feld auch überschreiben.
              Bis hier funktioniert alles. Fehlermeldung erscheint nur diese aus dem Script datenaendernschreiben.php

              Der Datensatz wurde nicht geändert!

              Kommentar


              • #8
                gib mal in der datenaendernschreiben.php hinter

                $sqlab= "UPDATE herrenrace SET kategorie='$neuekategorie' WHERE id = '$oriid'";
                mysql_query($sqlab);

                ein
                echo $sqlab;
                echo mysql_errno() . ": " . mysql_error(). "\n";

                und poste, was da erscheint.

                Kommentar


                • #9
                  Da habe ich Meldung:

                  UPDATE herrenrace SET kategorie='Herren' WHERE id = '115'
                  Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in C:....\datenaendernschreiben.php on line 14

                  Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:....\datenaendernschreiben.php on line 14
                  : Der Datensatz wurde nicht geändert!

                  Kommentar


                  • #10
                    Das sollte es sein:

                    Du hast id in anz umbenannt.

                    Statt
                    $sqlab= "UPDATE herrenrace SET kategorie='$neuekategorie' WHERE id = '$oriid'";

                    Sollte es mit
                    $sqlab= "UPDATE herrenrace SET kategorie='$neuekategorie' WHERE anz = '$oriid'";

                    funktionieren.

                    Kommentar


                    • #11
                      [COLOR=red]**** SUPER **** es funktioniert alles. Ich bedanke mich!!!![/COLOR]

                      Noch eine kleine Frage. Was müsste ich ändern um den Script zu verbessern?

                      Kommentar


                      • #12
                        Du übergibst Variablen über ein Formular mit der Methode POST.
                        Damit diese sicher ankommen und nicht über eine Änderung der URL plötzlich verändert werden können (das wäre GET), empfiehlt es sich die benötigten Variablen aus den richtigen Methoden auszulesen, also Variablen, die per POST übermittelt wurden auch nur durch empfangene POST-Variablen zu akzeptieren, sonst kann Dir jemand anders mit ein wenig Geschick die Seite zerschießen.

                        Wenn Du das Script auf einem Server laufen lässt, der aus Sicherheitsgründen register_globals ausgeschaltet hat, geht das Script nicht mehr, weil die Variablen nicht zugeordnet werden - auch unschön.

                        Also liest Du die Variablen, die übergeben werden erstmal ein, um sicherzustellen, dass diese auch per POST übermittelt wurden.

                        Das vorhin eingefügte <form action="datenaendern.php"> änderst Du in <form action="datenaendern.php" method="POST">

                        in datenaendern.php liest Du die benötigten Variablen 'auswahl' und 'aend' ein:
                        $auswahl=$_POST['auswahl'];
                        $aend=$_POST['aend'];

                        analog in datenaenderschreiben.php ('neuekategorie' und 'oriid')

                        $neuekategorie=$_POST['neuekategorie'];
                        $oriid=$_POST['oriid'];

                        jeweils ganz oben im Script.

                        Kommentar


                        • #13
                          Das method=POST hatte ich bereits so eingetragen.
                          Das andere mit $neuekategorie=$_POST['neuekategorie']; werde ich auch versuchen so einzubauen.

                          Nochmals vielen Dank!

                          Kommentar


                          • #14
                            Habe das Script mal so abgeändert:

                            PHP-Code:
                            <html>
                            <head>
                            </head>
                            <body>
                            <?php
                            $auswahl
                            =$_POST['auswahl'];
                            $aend=$_POST['aend'];
                            include ....
                            So funktioniert es wenn Datensätze ausgewählt wurden.
                            Jetzt ist nur noch das Problem wenn keine Datensätze ausgewählt wurden. Da sollte die Meldung kommen das keine Datensätze ausgewählt wurden. Da müsste ich noch etwas abändern.....
                            Zuletzt geändert von andreas0063; 22.07.2005, 23:44.

                            Kommentar


                            • #15
                              Hmmm, ist eigentlich in dem Script enthalten.

                              Poste doch nochmal Deine aktuelle datenaendern.php, da muss was durcheinander gekommen sein.

                              Kommentar

                              Lädt...
                              X