Formulardaten aus while ändern

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

  • Formulardaten aus while ändern

    moin!
    also ich habe eine while schleife die userdaten ausliest
    name|listenmenu|

    sind 2 daten daraus.im listenmenu kann man "ja" und "nein" einstellen.
    so,ich möchte jetzt diese daten per formular drumherum ändern(daten kommen aus datenbank und sollen wieder in die datenbank "geupdatet" werden.bin jetzt soweit gekommen :
    PHP-Code:
    <?php $sql mysql_query("SELECT ID,Nick,news_write FROM deadline_user ORDER BY Nick ASC");
            while(
    $row mysql_fetch_array($sql)){?>
            <tr>
              <td height="30" class="datum" width="310" background="inhalt_tab.jpg">
                <?php echo $row['Nick'];?><input type="hidden" value="<?php echo $row['ID'];?>">
              </td>
    <td height="30" class="datum" width="50" background="inhalt_tab.jpg">
                <select class="textfeld2" name="news_write[]">
                  <option>
                  <?php echo $row['news_write'];?>
                  </option>
                  <option value="ja">ja</option>
                  <option value="nein">nein</option>
                </select>
              </td>
    </tr>
    <?php ?>
    ----------------
    <?php
    if(isset($_POST['news_write'])){
    mysql_query("UPDATE deadline_user 
    SET news_write = '"
    .$_POST['news_write']."' 
    WHERE ID = '"
    .$_POST['ID']."'");?>
    weiss nicht genau ob das mit "[]" richtig ist,oder ob das überhaupt der richtige weg ist.im forum hab ich leider auch nix gefunden.weiss jemand wie das geht ?
    Zuletzt geändert von vizor; 10.10.2005, 19:26.

  • #2
    was klappt, was klappt nicht?
    fehlermeldungen?
    testausgaben?
    ...?

    Kommentar


    • #3
      ja also wenn ich ganz normales formular habe mit einer userID und einem dropdownmenu ist ja klar das man das so macht :
      PHP-Code:
      mysql_query("UPDATE tabelle
      SET dropmenuwert = '"
      .$_POST['dropmenuname']."' WHERE ID = '".$_POST['ID']."') 
      so,nu habe ich aber per while schleife mehrere UserID,s und dropmenus untereinander.
      nu möchte ich bei jedem user die daten halt ändern im dropdownmenu und per form speichern.naja und dazu muss ja irgendwie der UPDATE befehl geändert werden damit er die ganze while schleife updatet.ich krieg das bloss nicht hin.
      z.Z. heisst das dropdownmenu noch so in der while schleife:
      PHP-Code:
      <select class="textfeld2" name="news_write">
                    <option>
                    <?php echo $row['news_write'];?>
                    </option>
                    <option value="ja">ja</option>
                    <option value="nein">nein</option>
                  </select>
      ich weiss das man hinter dem namen [] setzen muss um ein array zu haben.nur wie nu der UPDATE befehl aussehen muss krieg ich nicht hin.plz help.hofef jetzt ists besser erklärt
      achja die ID in der while hab ich einfach per hiddeninput eingesetzt:
      PHP-Code:
      <input type="hidden" value="<?php echo $row['ID'];?>">
      Zuletzt geändert von vizor; 11.10.2005, 11:49.

      Kommentar


      • #4
        Also, du brauchst mindestens zwei updates.

        einen für die datensätze, die ein nein bekommen.
        einen für die datensätze, die ein ja bekommen.

        jetzt bist du wieder dran.

        Kommentar


        • #5
          hm du meinst also ich soll einmal mit SET dropdownmenu = "ja" WHERE '".$_POST['menuwert']."' = "ja"
          und das gleiche nochmal mit nein...
          oder so ähnlich ?

          gibts da nicht noch ne andere möglichkeit ? bei checkboxen kann man ja implode anwenden,gibts bei dropdownmenus nicht was ähnliches ?

          Kommentar


          • #6
            hm nochmal drüber nachgedacht...kann doch garnicht gehen mit WHERE...
            wenn doch,sag mal wie ?
            UPDATE tabelle SET dropdownmenu = '".$_POST['menuwert']."'.... und dann ? öhm ? WHERE sucht ja in der datenbank und nicht im POST..hm sag mal wie du es gedacht hast sonst ? komm nicht ganz dahinter...

            Kommentar


            • #7
              habe es jetzt mal so versucht :
              PHP-Code:
              if(isset($_POST['mem_rights'])){
              mysql_query("UPDATE deadline_user 
              SET mem_rights = '"
              .$_POST['mem_rights']."' 
              WHERE ID IN ("
              .implode(","$_POST['ID']).")");

              und
              PHP-Code:
              <input type="hidden" name="ID[]" value="<?php echo $row['ID'];?>">
                          </td>
                          <td height="30" class="datum" width="50" background="inhalt_tab.jpg">
                            <div align="center">
                              <select class="textfeld2" name="mem_rights">
                                <option>
                                <?php echo $row['mem_rights'];?>
                                </option>
                                <option value="ja">ja</option>
                                <option value="nein">nein</option>
                              </select>
                            </div>
                          </td>
              geht nur leider nicht wirklich,wenn ich die oberen änder passiert nix,er stellt wieder auf den alten wert zurück.wenn ich den letzten wert änder ,ändert er alles.wie kann man das umgehen ? thx
              Zuletzt geändert von vizor; 10.10.2005, 23:58.

              Kommentar


              • #8
                hab mir mal das hier
                http://www.php-resource.de/forum/sho...hlight=foreach
                durchgelesen,steht was von foreach schleife.habe damit leider noch nicht wirklich mit gearbeitet.wie müsste das denn bei mir aussehn ?

                Kommentar


                • #9
                  ähm übrigens ein tipp: man kann beiträge editieren.

                  Kommentar


                  • #10
                    schon ich weiss,aber dann kann man doch besser das thema
                    verfolgen auch wenn ich bischen viel mit mir selbst rede

                    naja ok,habs mal mit foreach versucht,bin soweit gekommen :
                    PHP-Code:
                    <?php
                    if(isset($_POST['mem_rights'])){
                    $key $_POST['ID'];
                    foreach(
                    $_POST['mem_rights'] as $key => $value){
                    mysql_query("UPDATE deadline_user
                    SET mem_rights = '
                    $value' WHERE ID = '$key'");
                    }
                    }
                    ?>
                     <?php
                            $sql 
                    mysql_query("SELECT ID,Nick,mem_rights
                                               FROM deadline_user
                                               ORDER BY Nick ASC"
                    );
                            while(
                    $row mysql_fetch_array($sql)){?>
                    <input type="hidden" name="ID" value="<?php echo $row['ID'];?>">
                    <select class="textfeld2" name="mem_rights[]">
                                      <option>
                                      <?php echo $row['mem_rights'];?>
                                      </option>
                                      <option value="ja">ja</option>
                                      <option value="nein">nein</option>
                                    </select>
                    <?php ?>
                    naja geht nur nicht da er wie gehabt alle werte
                    ändert wenn ich den letzten veränder und bei den anderen darüber passiert garnix.
                    vielleicht weiss ja jetzt jemand rat

                    Kommentar


                    • #11
                      PHP-Code:
                      $key $_POST['ID'];
                      foreach(
                      $_POST['mem_rights'] as $key => $value){
                      mysql_query("UPDATE deadline_user
                      SET mem_rights = '
                      $value' WHERE ID = '$key'"); 
                      ohne es im detail gelesen zu haben:
                      die variable $key wird ja so überschrieben, teste es mal so und sag mir wie es dann aussieht.

                      PHP-Code:
                      $post_key $_POST['ID'];
                      foreach(
                      $_POST['mem_rights'] as $key => $value){
                      mysql_query("UPDATE deadline_user
                      SET mem_rights = '
                      $value' WHERE ID = '$post_key'"); 

                      Kommentar


                      • #12
                        hm stimmt $key definition war verkehrt rum geschrieben.aber so wie du es jetzt gebaut hast lässt sich nur der letzte eintrag verändern,die darüber bleiben gleich,kann man nicht verändern.hm...irgendwas muss an der schleife falsch sein.

                        Kommentar


                        • #13
                          alle werden verwendet wenn du nicht $post_key sondern nur $key verwendest, dann werden alle geändert die in dem POST array stehen.

                          Kommentar


                          • #14
                            ich hab natürlich erst deine variante ausprobiert,geht aber auch nicht.aber wo wird $key überhaupt definiert ? darum versteh ich die foreach schleife immer noch nicht

                            achja,hier n link wie es eigentlich aussieht :
                            http://www.cs-deadline.de/newpage/in...section=rights

                            im moment bau ich nur am "userrechte" rum.wie gesagt z.Z. geht nur der untere,die oberen lassen sich nicht ändern
                            Zuletzt geändert von vizor; 11.10.2005, 17:04.

                            Kommentar


                            • #15
                              hm,wurde denn noch nie sowas umgesetzt mit mehrfachen update bei verschiedenen tabelleneinträgen gleichzeitig ? ich zerbrech mir schon seit 2 tagen den kopf

                              Kommentar

                              Lädt...
                              X