Inputfeld verarbeiten

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.
    Last edited by hhcm; 15-07-2005, 08:44.
    gruss Chris

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

    Comment


    • #3
      klingt gut.

      Ich werde es nachher gleich einmal probieren.

      Danke

      Comment


      • #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?

        Comment


        • #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

          Comment


          • #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.
            Last edited by computiger; 16-07-2005, 16:02.

            Comment


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

              Comment


              • #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.

                Comment


                • #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?

                  Comment


                  • #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>

                    Comment


                    • #11
                      @penizillin
                      den manuellen Weg kenne ich.

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

                      Comment


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

                        Comment


                        • #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.

                          Comment

                          Working...
                          X