Inputfeld verarbeiten

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

  • Inputfeld verarbeiten

    Hallo

    ich möchte gern, die mit mysql_fetch_array ausgegebenen, MySQL-Daten über INPUT Felder in der Datenbank ändern, und wieder ins INPUT Feld übergeben.

    Irgendwie scheine ich aber dabei nicht so ganz klar zu kommen.

    hier ein Beispiel:
    PHP-Code:
    <?php
     
    while ($myrow mysql_fetch_array($result)){
    ?>
    <tr>
     <td><?php echo $myrow["MATCHCODE"]; ?></td>
     <td><input type='Text' name='anzahl<?php echo $myrow['tid']; ?>'  value='<?php echo $myrow['anzahl']; ?>' size='1' ></td>
    </tr>
    <?php
    }
    ?>
    Ich habe versucht eine Variable zu setzen, die sich aus anzahl und der eindeutigen TabellenID zusammensetzt.
    Das hat auch wunderbar funktioniert. Die Probleme habe ich, die Daten weiterzuverarbeiten.

    PHP-Code:
    $id=$myrow1['tid'];
    if(isset(
    $_REQUEST['anzahl'.$id]))
    {
        if (
    $_REQUEST['anzahl'].$id != $myrow1['anzahl']){
            
    $aenderung=$_REQUEST['anzahl'.$id];
            
    $updatesql="UPDATE temp SET anzahl='$aenderung' WHERE tid='$id'";
            
    $resultupdatesqlmysql_query($updatesql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );

    Hat jemand eine Idee bzw. einen Vorschlag, wie es besser zu realisieren ist?

  • #2
    Versuch doch mal anstatt name='anzahl<?php echo $myrow['tid']; ?>' einfach name="anzahl[]"

    Damit hast du nach dem senden des Formlulars in $_POST["anzahl"] ein Array das du weiterverarbeiten kannst.
    Zuletzt geändert von hhcm; 15.07.2005, 09:44.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      klingt gut.

      Ich werde es nachher gleich einmal probieren.

      Danke

      Kommentar


      • #4

        Irgendwie komme ich nicht weiter.

        Die Übergabe in ein Array klappt, das Positionieren des Arrayzeigers funktioniert nicht.

        Ich habs wie folgt probiert:

        PHP-Code:
        <?php
        $query    
        "SELECT tid FROM temp";
        $result    mysql_query$query ) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );
        $gesamt =  mysql_num_rows$result );
        $zaehler            =       0;

        while (
        $myrow mysql_fetch_array($result))
        {

             
        $wert $anzahl[$zaehler];
             if (
        $wert != $myrow['anzahl'])
            {  
                 
        $updatesql="UPDATE temp SET anzahl='$wert' WHERE tid='$id'";
                 
        $resultupdatesqlmysql_query($updatesql) or die(sprintf($error,'SQL-ERROR: ').mysql_error() );  
             }
        ?>
        <tr>
         <td><?php echo $myrow["MATCHCODE"]; ?></td>
         <td><input type='Text' name='anzahl<?php echo $myrow['tid']; ?>'  value='<?php echo $myrow['anzahl']; ?>' size='1' ></td>
        </tr>
        <?php
         $zaehler
        ++;
        }
        ?>
        Da das MySQL_FETCH_ARRAY die gleiche Größe wie das Array Anzahl[] aus dem InputFeld hat, sollte es doch so funktionieren?

        Aber es funktioniert nur, wenn nur ein Datensatz vorhanden ist, und auch nur, wenn das Formular zweimal aufgerufen wurde.

        Das heisst, im Prinzip das gleiche Problem, wie vorher auch.

        Weiss jemand eine Lösung?

        Kommentar


        • #5
          Ich versuch mal kurz nachzuvollziehen was du machst - korrigier mich wenn ich falsch liege

          Du selectest nur die Spalte "tid" aus deiner Datenbank.
          ...
          Du greifst per $myrow auf die Spalte "anzahl" zu die nicht existiert.
          ...
          Du greifst per $myrow auf die Spalte "MATCHROW" zu die nicht existiert.
          ...
          Du erstellst ein neues Imput-Element mit Namen "anzahl{tid}" und nicht anzahl[{tid}] (fals du das machen wolltest)
          ...
          Du setzt in value eine leere Variable ($myrow['anzahl'])

          So ganz stimmig ist es nicht....

          ---
          PS: benutz bitte mysql_fetch_array($result, MYSQL_ASSOC) um speicher zu sparen, wenn du die numerischen zeiger nicht brauchst...

          PSS: Schreib bitte $array['key'] und nicht $array[key] - weil sonst php versucht eine Konstante namens key zu benutzen und dann im Fehlerfall den String 'key' benutzt

          Kommentar


          • #6
            Ok, ich hatte den Code etwas abgekürzt.

            Ich selektiere die Spalte tid und anzahl aus der Tabelle temp.
            Dann suche ich in einer anderen Tabelle tab_art nach id, welche den Wert von tid haben soll, um diese Zeilen auszugeben.

            In den ausgegebenen Zeilen möchte ich, über ein INPUT-Feld, die Werte für Anzahl, in der Tabelle temp, ändern.

            PHP-Code:
            <?php
            $sql1
            ="SELECT tid,anzahl from temp where 1";
            $result1 mysql_query($sql1);
            $gesamt =  mysql_num_rows$result1);
            $zaehler            =       0;

            while (
            $myrow1 mysql_fetch_array($result1MYSQL_ASSOC))
            {
                 
            $IDD=$myrow1["tid"];
                 
            $sql="SELECT id,MATCHCODE,BEZEICHNUN,BILD FROM tab_art WHERE id = '$IDD'";
                 
            $result mysql_query($sql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );
                 while (
            $myrow mysql_fetch_array($resultMYSQL_ASSOC))
                 {
                 
            $wert $anzahl[$zaehler];
                 if (
            $wert != $myrow1['anzahl'])
                {  
                     
            $updatesql="UPDATE temp SET anzahl='$wert' WHERE tid='$id'";
                     
            $resultupdatesqlmysql_query($updatesql) or die(sprintf($error,'SQL-ERROR: ').mysql_error() );  
                 }
                 
            ?>
                 <tr>
                  <td><?php echo $myrow["MATCHCODE"]; ?></td>
                  <td><input type='Text' name='anzahl[]'  value='<?php echo       $myrow1['anzahl']; ?>' size='1' ></td>
                 </tr>
                 <?php
                  $zaehler
            ++;
                 }
            }
            ?>
            Du erstellst ein neues Imput-Element mit Namen "anzahl{tid}" und nicht anzahl[{tid}] (fals du das machen wolltest)
            ich bin dem Rat von hhcm gefolgt und habe für das das Inputfeld ein Array erstellt.

            Das auslesen des Arrays über
            PHP-Code:
            if (isset($_REQUEST["anzahl"]))
            {
                foreach(
            $_REQUEST["anzahl"] as $wert)
                {
                    echo 
            $wert."<br>";
                }

            klappt super.

            Die schwierigkeiten habe ich, die Werte des Arrays,richtig positioniert, in die Datenbank zu bekommen.
            Zuletzt geändert von computiger; 16.07.2005, 17:02.

            Kommentar


            • #7
              welche Reihnenfolge brauchst du denn? versteh dein Problm nicht so ganz

              Kommentar


              • #8
                @newphp
                welche Reihnenfolge brauchst du denn? versteh dein Problm nicht so ganz
                OK, ich versuche mich besser auszudrücken.

                Ich habe eine Tabelle tab_art und eine namens temp.
                In der Tabelle temp speichere ich, in einem anderen Formular, bestimmte Zeilen (nur die ID der Zeilen) der Tabelle tab_art und eine Stückzahl Anzahl.

                Jetzt gebe ich die Zeilen der Tabelle tab_art, mit der als Filter fungierenden Tabelle temp, aus, sowie die Stückzahl, welche ich evtl. über ein Input-Feld ändern und den geänderten Wert zurück in die Tabelle temp schreiben möchte.

                Kommentar


                • #9
                  OK, ich hatte einen Denkfehler.

                  Die Werte für Anzahl müssen geändert werden, bevor ich MYSQL_FETCH_ARRAY für die Listendarstellung aufrufe und nicht darin.
                  Das heisst, erst das Array des INPUT-Feldes verarbeiten
                  PHP-Code:

                  if (isset($_REQUEST["anzahl"]))
                  {
                       
                  $sqlaendern="SELECT tid,anzahl from temp";
                       
                  $resultaendern mysql_query($sqlaendern);
                          
                       while (
                  $myrowaendern mysql_fetch_array($resultaendernMYSQL_ASSOC))
                        {     
                              
                  $id=$myrowaendern['tid'];
                              
                  $wert $anzahl[$zaehler];
                              echo 
                  $wert."<BR>";
                               
                              
                  $updatesql="UPDATE temp SET anzahl='$wert' WHERE tid='$id'";
                              
                  $resultupdatesqlmysql_query($updatesql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );  
                              
                  $zaehler++;
                         }   
                   } 
                  und dann die Ausgabe generieren

                  PHP-Code:
                  <?php
                  $sql1
                  ="SELECT tid,anzahl from temp where 1";
                  $result1 mysql_query($sql1);
                  $gesamt =  mysql_num_rows$result1);
                  $zaehler            =       0;

                  while (
                  $myrow1 mysql_fetch_array($result1MYSQL_ASSOC))
                  {
                       
                  $IDD=$myrow1["tid"];
                       
                  $sql="SELECT id,MATCHCODE,BEZEICHNUN,BILD FROM tab_art WHERE id = '$IDD'";
                       
                  $result mysql_query($sql) or die( sprintf($error,'SQL-ERROR: ').mysql_error() );
                       while (
                  $myrow mysql_fetch_array($resultMYSQL_ASSOC))
                       {
                       
                       
                  ?>
                       <tr>
                        <td><?php echo $myrow["MATCHCODE"]; ?></td>
                        <td><input type='Text' name='anzahl[]'  value='<?php echo       $myrow1['anzahl']; ?>' size='1' ></td>
                       </tr>
                       <?php
                       
                  }
                  }
                  ?>
                  Jetzt werden die Daten korrekt angezeigt und auch in Die Tabelle temp übernommen.

                  Gibt es jetzt noch eine Möglichkeit, per Link, ein INPUT-Feld zu übertragen?

                  Kommentar


                  • #10
                    Gibt es jetzt noch eine Möglichkeit, per Link, ein INPUT-Feld zu übertragen?
                    ohne js - nur manuell:
                    Code:
                    <a href="foo.php?foo=bar">link</a>

                    Kommentar


                    • #11
                      @penizillin
                      den manuellen Weg kenne ich.

                      Wie funktioniert es in JavaScript?
                      Auch, wenn die Frage nicht ins PHP Forum passt

                      Kommentar


                      • #12
                        http://de.selfhtml.org/javascript/ob...rms.htm#submit

                        Kommentar


                        • #13
                          Habs jetzt so gelöst
                          PHP-Code:
                          <form action="<?php echo "{$_SERVER['PHP_SELF']}"?>" name="Form<?php echo $s?>" method="GET" >
                            <input type='Text' style='text-align:center;' name='anzahl' value='<?php echo $myrow1['anzahl']; ?>' size='1'>
                             <input type="hidden" name="anders" value="<?php echo $IDD?>">
                             <a target='_self' href='javascript:window.document.Form<?php echo $s?>.submit();'>aendern</a></form>
                          Für jede Ausgabezeile habe ich ein neues Formular, indem ich den Input ändern und per Link, einzeln, weiterverarbeiten kann.

                          Kommentar

                          Lädt...
                          X