Radio-Button und SQL

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

  • Radio-Button und SQL

    Hallo Forum,

    hab folgendes Problem.

    Ich lese aus einer MySQL Datenbank meine Einträge aus.
    Soweit so gut. Nun möchte ich wenn ich etwas verändert habe,
    das das zurück in die DB geschrieben wird (Update).

    PHP-Code:
    <? 
    $sql="SELECT flash_id, flash_titel, flash_text, flash_sehen, flash_download, flash_status FROM tb_flash ORDER BY flash_id"; 
    $res=mysql_db_query($db_name,$sql); 
    $zähler=1;  

    while ($obj=mysql_fetch_array($res,MYSQL_ASSOC))  

    $id=    $obj['flash_id']; 
    $elem=  $obj['flash_titel']; 
    $elem1= $obj['flash_text']; 
    $elem2= $obj['flash_sehen']; 
    $elem3= $obj['flash_download']; 
    $elem4= $obj['flash_status'];   

     if ($elem4 == '1')     
    {         
    $status= 'Online'; 
    }     

    else if ($elem4 == '0') 
    {         
    $status = 'Offline'; 

                 
    echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";     
    echo "<tr>";         
    echo "<td height='30px' width='2%'>$id</td>";     
    echo "<td height='30px' width='20%'>$elem</td>"; 
    echo "<td height='30px' width='45%'>$elem1</td>";     
    echo "<td height='30px' align='center' width='8%'>
    <a href='$elem2' target='_blank'>Sehen</a></td>"; 
    echo "<td height='30px' align='center' width='10%'>
    <a href='$elem3' target='_blank'>Download</a></td>";     
    echo "<td height='30px' align='center' width='10%'>$status<td>";                

    if ($elem4 == '1')         
     {                   
    echo "<td height='30px' width='20%'>     
     <input type='radio' name='$id' value='1' checked='checked' />         
    <input type='radio' name='$id' value='0' />     
    </td>";         
    }         

    else if ($elem4=='0')     
    {                 
    echo "<td height='30px' width='20%'>     
    <input type='radio' name='$id' value='1' />     
    <input type='radio' name='$id' value='0' checked='checked'/>         
    </td>";          
    }          
    echo "</tr>";     
    echo "</table>";      
    $zähler++;         
    }   
    ?>
    Das Problem ist, das ich die Werte der Radio-Buttons nicht in die DB gespeichert bekommen.

    PHP-Code:
    <?  
    if (isset($_POST['send3']))     
    {          
    $dbconnect= mysql_connect("xxxx", "xxxx", "*xxxx");     
    $db = mysql_select_db("xxxx", $dbconnect);  
           
    foreach ($_POST as $key => $value) 
    {         
    if ($key!="send3" )      
    {                  
    $result = mysql_query("UPDATE tb_flash SET flash_status = '".$value."' WHERE flash_id = $key") or die (mysql_error());         }     
    }     
    }     
    ?>
    Ich muss irgendwie sagen das ich die verschiedenen Radio-Buttons verändert habe und diese Veränderungen müssen zurück in die DB ...

    Die Fragen ist eben nur, wie Teile ich mit das ich verschiedene Datensätze geändert habe .... ...

    grüße
    testman

  • #2
    Um festzustellen, ob etwas geändert wurde, müsstest du nochmals den Datensatz aus der DB lesen und mit den Formulardaten vergleichen. Das kannst und solltest du dir sparen. Führe einfach UPDATE aus. Wenn der neue Wert wirklich anders ist, wird er in der DB auch geändert und wenn er gleich ist, merkt das dein DBMS und ignoriert die Query (sozusagen).

    Ob dein Code da oben richtig ist, kann ich dir aber nicht sagen. Den schau ich mir erst an, wenn du ihn vernünftig eingerückt hast.
    Beim Drüberfliegen vermisse ich aber schon ein intval().

    Kommentar


    • #3
      ich mach mir das relativ einfach
      zuerst benenn ich alle inpufelder in der art:
      PHP-Code:
      <input type="radio" name="data[feldname]" value="1">
      <
      input type="text" name="data[feldname1]" value="text"
      im update selber lese ich dann mit foreach diese Felder aus:
      PHP-Code:
      if($_REQUEST['data']){
           foreach(
      $_REQUEST['data'] as $key => $value){
             if(
      $key && $value){
                
      mysql_query("Update myTable SET ".$key."='".$value."'");
             }
          }

      natürlich muss das update geprüft werden und gegen injections geschützt - war nur ma auf die schnelle. durch das "if($key ..." kannst du mit nem else dir ausgeben, was nicht da war ...
      OffTopic:
      Vorteil an dieser art und weise ist, dass du xbeliebig viele felder hinzufügen kannst mit wenig aufwand
      Zuletzt geändert von dani_o; 25.06.2008, 08:25.
      Signatur-Text ...

      Kommentar


      • #4
        @dani_o: Und wo ist dein WHERE?

        Kommentar


        • #5
          das war doch nur ein beispiel xD natürlich kann mans mit WHERE erweitern
          Signatur-Text ...

          Kommentar

          Lädt...
          X