Ankündigung

Einklappen
Keine Ankündigung bisher.

update multi row

Einklappen

Neue Werbung 2019

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

  • update multi row

    Guten Tag ihr lieben,
    ich habe eine Gästebuch-Datei die viele Rows auf einmal updaten soll.
    Der Code tut das nicht.
    Es gibt keine Fehlermeldung!
    Ich danke euch sehr für eure Hilfe.

    PHP-Code:
    <?php
    $hoster
    ="db.mkq.de";
    $username="db123abc";
    $password="password";
    $db_name="db123abc";
    mysql_connect("$hoster""$username""$password")
    or die(
    "cannot connect");
    mysql_select_db("$db_name")
    or die(
    "cannot select DB");
    $sql="SELECT * FROM gbook";
    $result=mysql_query($sql);
    $count=mysql_num_rows($result);
    ?>
    <table width="500" border="0" cellspacing="1" cellpadding="0">
    <form name="form1" method="post" action="">
    <tr>
    <td>
    <table width="500" border="0" cellspacing="1" cellpadding="0">
    <tr>
    <td align="center"><strong>Id</strong></td>
    <td align="center"><strong>Name</strong></td>
    <td align="center"><strong>PLZ</strong></td>
    <td align="center"><strong>ORT</strong></td>
    <td align="center"><strong>Komentar</strong></td>
    </tr>

    <?php
    while($rows=mysql_fetch_array($result)){
    ?>

    <tr>
    <td align="center">
    <? $id[]=$rows['id']; ?><? echo $rows['id']; ?>
    </td>
    <td align="center">
    <input name="name[]" type="text" id="name" value="<? echo $rows['name']; ?>">
    </td>
    <td align="center">
    <input name="plc[]" type="text" id="plc" value="<? echo $rows['plc']; ?>">
    </td>
    <td align="center">
    <input name="place[]" type="text" id="place" value="<? echo $rows['place']; ?>">
    </td>
    <td align="center">
    <input name="comment[]" type="text" id="comment" value="<? echo $rows['comment']; ?>">
    </td>
    </tr>

    <?php
    }
    ?>

    <tr>
    <td colspan="4" align="center"><input type="submit" name="submit" id="submit" value="update"></td>
    </tr>
    </table>
    </td>
    </tr>
    </form>
    </table>

    <?php

    if($submit)
    {
    for(
    $i=0;$i<$count;$i++)
    {
    $sql1="UPDATE gbook SET name='$name[$i]', plc='$plc[$i]', place='$place[$i]', comment='$comment[$i]' WHERE id='$id[$i]'";
    $result1=mysql_query($sql1);
    }
    }

    if(
    $result1)
    {
    header("location:editmulti3.php");
    }
    mysql_close();
    ?>

  • #2
    Error Reporting einschalten.

    Ach und die mysql_* Extension ist veraltet. Es wäre besser, wenn du PDO (http://php.net/manual/de/book.pdo.php) oder mysqli (http://php.net/manual/de/book.mysqli.php)

    und <? zu nutzen ist imo keine gute Idee. Bleibe doch bei <?php oder nutze <?=

    des weiteren solltest du dich mal an einen ordentlichen Coding Standard halten, das zu lesen muss auf dauer fürchterlich sein: ich persönlich achte darauf, den PSR-2 einzuhalten: https://github.com/php-fig/fig-stand...style-guide.md

    LG
    https://github.com/Ma27
    Javascript Logic is funny:
    [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

    Kommentar


    • #3
      Besser pdo

      Kommentar


      • #4
        darüber könnten wir uns lange streiten (ich nutze ja selber PDO und kein mysqli) aber ich denke, dass besser ist, ihm alle Alternativen zu zeigen

        LG
        https://github.com/Ma27
        Javascript Logic is funny:
        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

        Kommentar


        • #5
          vielen dank ihr lieben.
          ich schätze euere hinweise sehr, und werde mich damit beschäftigen.
          habt ihr eine Idee warum der Code die Rows nicht updatet?
          vielen Dank
          Rafal

          Kommentar


          • #6
            Ja. Stichwort REGISTER_GLOBALS

            Kommentar


            • #7
              Danke rkr, aber das hilft mir nicht.
              diese funktion "register_globals" ist seit php 5.0 veraltet.

              Kommentar


              • #8
                Genau. Eben das scheint ja dein Problem zu sein. Dein Code wurde wohl zu einer Zeit geschrieben, als es noch register_globals gab. Wenn deine Input-Elemente also Namen wie name[] haben, dann sind diese nicht automatisch nach einem Fom-Submit als gleichbenannte Variable im PHP Kontext vorhanden. Quickfix wäre extract($_POST); an einer frühen Stelle. Ich würde dir jedoch raten deinen Code zu fixen.

                Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
                Choosing an API
                Warum man mysql* generell nicht (mehr) nutzen sollte.
                Wie man von mysql* auf PDO umsteigt
                Wissenswertes zum Thema SQL-Injection

                Kommentar


                • #9
                  kein überprüfen der rückgabe werte, keinje ausgabe (abfangen) eventueller mysql_errors, ein header() nachdem eine masse an page content ausgegeben wurde, etc. pp.

                  code neu schreiben.

                  Kommentar


                  • #10
                    im übrigen birgt der Code noch mindestens eine weitere Stolperstelle ...

                    wenn irgendwann mal die Bedingung für das unten stehende if erfüllt wird, hagelt es eine Headers already sent Fehlermeldung, weil in jedem Falle vorher Ausgaben erfolgt sind und damit ist der Headers-Zug abgefahren
                    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                    Kommentar


                    • #11
                      vielen dank rkr, moma und eagle.
                      euere gute ratschläge lösen mein problem nicht.

                      Kommentar


                      • #12
                        würde es aber, beherzigst du sie.
                        achja und dann gibts noch den debugging leitfaden auf:
                        php-de.githup.io

                        Kommentar

                        Lädt...
                        X