[PHP] MySQL Update nur einen Wert

Dieses Thema im Forum "Webentwicklung" wurde erstellt von bigD, 25. Dezember 2009 .

Schlagworte:
  1. 25. Dezember 2009
    MySQL Update nur einen Wert

    Hallo,
    ich mach grad was das mir die Arbeit erleichtern soll.
    Das is eigentlich was ganz simples es soll nur Werte aus der DB ausgeben und auf Knopfdruck updaten ( is ja eigentlich nicht schwer, hab das auch schon gemacht).
    Allerdings steh ich grad voll auf der Leitung (was auch daran liegen kann dass ich gestern etwas viel getrunken hab. Wäre cool wenn mir jmd. helfen könnte. Hier die Dateien:

    index.php
    PHP:
    <?
    error_reporting ( 0 );
    ob_start ( "ob_gzhandler" );
    require_once(
    "config.php" );
    include(
    "func.php" );
    $out  "SELECT * FROM tour_1" ;
    $output  mysql_query ( $out );
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href="style.css" rel="stylesheet" type="text/css" />
    <title>Tourenliste</title>
    </head>

    <body>
    <h1>Tourenliste</h1>
    <form action="index2.php" method="post">
    <table border="0" cellpadding="0" cellspacing="0" class="tableLine">
        <tr>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><strong>Ort</strong></td>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><strong>Straße</strong></td>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><strong>Stelle</strong></td>
          <td width="20px"class="row_<?  echo  $i  2 ?>"><strong>Anzahl</strong></td>
      </tr> 
        <?
        
    if ( mysql_num_rows ( $output ) >  0 ) {
        
    $i  0 ;
        while(
    $row  mysql_fetch_object ( $output )){
         
    ?>
         
       <tr>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><?  echo  " $row -> ort " ?></td>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><?  echo  " $row -> strasse " ?></td>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><?  echo  " $row -> stelle " ?></td>
          <td width="20px"class="row_<?  echo  $i  2 ?>"><input name="anzahl" type="text" value="<?  echo  " $row -> anzahl " ?>" size="5" maxlength="5" /><input type="hidden" name="hidden" value="<?  echo  " $row -> id " ?>" /></td>
          <td width="130px" class="row_<?  echo  $i  2 ?>"><input type="submit" value="Update" name="Submit" /></td>
      </tr></form><? update ();  ?>
        <?
        $i
    ++;
        }
        }
        else { echo 
    "Es wurden keine Eint&auml;ge gefunden!" ; }
        
        
    ?>
          </table> 
    </body>
    </html>
    und hier die func.php
    PHP:
    <?
    function 
    update () {
    if (
    $_SERVER [ 'REQUEST_METHOD' ]== "POST" )
    {
    session_start ();
    {
    $anzahl = $_POST [ 'anzahl' ];
    $id = $_POST [ 'hidden' ];
    $update = "UPDATE tour_1 SET anzahl = ' $anzahl ' WHERE id = ' $id '" ;
    mysql_query ( $update );
    header ( "location:index.php" );
    }
    }
    }
    ?>
    Für jede Hilfe gibts natürlich BWs!!!
     
  2. 25. Dezember 2009
    AW: Problem mit MySQL

    Ah ja^^ vergessen...
    Also wenn ich auf Updaten will, updatet er mir nur den letzten Wert, den er aus der Tabelle ausliest.
    Die anderen Werte (also anzahl) werden nicht geupdatet!
     
  3. 25. Dezember 2009
    AW: Problem mit MySQL

    PHP:
    $update = "UPDATE tour_1 SET anzahl = ' $anzahl ' WHERE id = ' $id '" ;
    Du klickst einmal auf update und der befehl oben macht es nur einmal.
    Du musst eine schleife einbauen oder meinst du mit andere werte ort, strasse, stelle ....
    Dann musst hinter anzahl='$anzahl', strasse='$strasse' usw...
    Ich weiss aber leider nicht was du genau möchtest.
     
  4. 25. Dezember 2009
    AW: Problem mit MySQL

    Ja höh? Der code macht ja auch so überhaupt keinen Sinn...

    Also wenn du das Formular absendest kann PHP nicht mehr unterscheiden was du denn genau updaten willst weil deine Felder alle gleich heißen...
    <input name="anzahl" ... />

    Probiers mal mit
    <input name="anzahl[]" ... />

    Außerdem, was willst du mit dem Aufruf der "update();" funktion für jeden Eintrag in der Tabelle erreichen? Damit updatest du EINEN Eintrag, sooft wie du Einträge in der Tabelle hast?!!?

    Sowieso, das ganze in eine Funktion auszulagern macht keinen Sinn.. Am besten postfixt du alle Felder mit der ID und kannst dann im PHP genau unterscheiden.. Also:

    <input name="anzahl[$row->id]" ... />

    Dann hast du ein array in PHP das du weiterverwenden kannst
     
  5. 25. Dezember 2009
    AW: Problem mit MySQL

    mach mehrere formulare wenn du bei jedem schleifendurchgang nen eigenen submit-button+id hast.

    PHP:
    <? php 
        
    if( mysql_num_rows ( $output ) >  0 ):
            
    $i  0 ;
            while(
    $row  mysql_fetch_object ( $output )):  ?>
                <tr>
                    <?php $o  $i  2 ?>
                    <td width="130px" class="row_<?php  print  $o ?>"><?php  print  $row -> ort ?></td>
                    <td width="130px" class="row_<?php  print  $o ?>"><?php  print  $row -> strasse ?></td>
                    <td width="130px" class="row_<?php  print  $o ?>"><?php  print  $row -> stelle ?></td>
                    <td class="row_<?php  print  $o ?>" colspan="2">
                        <form action="index2.php" method="post">
                            <input name="anzahl" type="text" value="<?php  print  $row -> anzahl ?>" size="5" maxlength="5" />
                            <input type="hidden" name="hidden" value="<?php  print  $row -> id ?>" />
                            <input type="submit" name="Submit" value="Submit" />
                        </form>
                    </td>
                </tr>
    <?php 
                
    ++ $i
            endwhile; 
        endif; 
    ?>
    alternativ funktioniert der code von Coksnuss auch zu 100% wenn man die variablen in der funktion richtig verarbeitet.
     
  6. 26. Dezember 2009
    AW: Problem mit MySQL

    Hmmm....das funktioniert schon mal...
    Steh aber i-wie immer noch auf der Leitung, ich versteh das Problem schon aber ich blick grad überhaupt nicht durch.

    Was mach ich denn dann wenn ich nur einen Submit Button für alles will?

    Sorry für die dummen Fragen aber ich hab in sachen PHP grad voll den Durchhänger (weil das eigentlich echt simpel ist)...

    BWs sind raus!
     
  7. 26. Dezember 2009
    AW: Problem mit MySQL

    Das machen was ich gesagt habe ^^... Schreib einfach mal print_r($_POST); in deinen Quelltext rein wenn du das Formular abgesendet hast.. Da befinden sich dann alle Daten drin die du brauchst..
     
  8. 26. Dezember 2009
    AW: MySQL Update nur einen Wert

    Ja ich hab dann Arrays von 1 bis unendlich...aber wie bekomm ich die auf der index2.php dann wieder rausgelesen? Weil z.B. $_POST['anzahl.$row->id']; das geht nicht...dann müsst ich ja alle ids einzeln hinschreiben...
     
  9. 26. Dezember 2009
    AW: MySQL Update nur einen Wert

    hier ein kleines beispiel. probiere es mal aus
    PHP:
    <? php
    if(isset( $_POST [ 'anzahl' ]))
    {
        foreach(
    $_POST [ 'anzahl' ] as  $feld  =>  $value )
        {
            echo 
    $feld . " = " . $value . "<br />" ;
        }
    }
    ?>
    <form action="" method="post">
        <input type="text" name="anzahl[1]" value="3" />
        <input type="text" name="anzahl[3]" value="1" />
        <input type="text" name="anzahl[5]" value="56" />
        <input type="submit" value="GO" />
    </form>
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.