Autor Zpráva
Ben
Profil *
Ahoj,
řeším administrační sekci fotogalerie jednoho webu. Cyklus mi vygeneruje podle dane podminky tuto tabulku:
<form name="update"  action="<?php echo $_SERVER["PHP_SELF"];?>" method="POST">
<table border="1" cellpadding="4">
<?php
//zpracovani vyberu roku
$rok = Mysql_real_escape_string($_POST["rok"]);
$rok = htmlspecialchars($rok);
$result = MySQL_Query("SELECT * FROM foto WHERE rok='".$rok."'");
if(!isset($_POST["ok_update"])){
  while($radek = mysql_fetch_array($result)){
    echo"<input type=\"hidden\" name=\"id[]\" value=\"{$radek["id"]}\">";
    echo" <tr>";
    echo"  <td rowspan=\"3\"><img src=\"../img/uploaded/foto/thumb_{$radek["soubor"]}\" border=\"0\"></td>";
    echo"  <td>rolovatko roku</td>";
    echo" </tr>";
    echo" <tr>";
    echo"  <td><textarea name=\"popis[]\" cols=\"50\" rows=\"1\" maxlength=\"999\">{$radek["popis"]}</textarea></td>";
    echo" </tr>";
    echo" <tr>";
    echo"  <td><input type=\"checkbox\" name=\"smazat[]\" value=\"1\">&nbsp;Smazat tuto fotku </td>";
    echo" </tr>";
  }
  if(isset($_POST["rok"])){
?>
 <tr> 
  <td>
   <input type="submit" name="ok_update" value="Upravit">
  </td>
 </tr>
<?php
  } 
}
?>  
 </table>  
 </form>



A tímto ji chci upravit:
<?php

//zpracovani updateovani
if($_POST["ok_update"]){
  foreach($_POST["id"] as $key => $id){
    if($_POST["smazat"][$key] == "1"){
      //chyba-> ukazuje spatne id
      echo"Polozka s id:".$_POST["id"][$key]." se smaze<br>";
    }
    else{
    mysql_query("UPDATE foto 
                 SET popis='".$_POST["popis"][$key]."'
                 WHERE id='".$_POST["id"][$key]."'");
    }
  }
}
?>

část v else funguje dobře. Část v if($_POST["smazat"][$key] == "1") bude provádět mazání záznamů v mysql a masází souborů. Ale problém je v právě v této části if($_POST["smazat"][$key] == "1"). Pokud označím některý vygenerovaný checkbox, tak mi to ukazuje špatná ID tady Polozka s id:".$_POST["id"][$key]." se smaze<br>. Prosím o radu, jak to upravit.

Děkuji
Taps
Profil
Ben:
if($_POST["ok_update"]){
  foreach($_POST["id"] as $key => $id){
    if($_POST["smazat"][$key] == "1"){
      //chyba-> ukazuje spatne id
      echo"Polozka s id:".$id." se smaze<br>";
    }
    else{
    mysql_query("UPDATE foto 
                 SET popis='".$_POST["popis"][$key]."'
                 WHERE id='".$_POST["id"][$key]."'");
    }
  }
}
Ben
Profil *
tak ani takto mi to nefungovalo, nakonec jsem to vyřešil takto:
<?php
//zpracovani vyberu roku
$rok = Mysql_real_escape_string($_POST["rok"]);
$rok = htmlspecialchars($rok);
$result = MySQL_Query("SELECT * FROM foto WHERE rok='".$rok."'");
$i = 0;
if(!isset($_POST["ok_update"])){
  while($radek = mysql_fetch_array($result)){
    $i = $i+1;
    echo"<input type=\"hidden\" name=\"id[".$i."]\" value=\"{$radek["id"]}\">";
    echo" <tr>";
    echo"  <td rowspan=\"3\"><img src=\"../img/uploaded/foto/thumb_{$radek["soubor"]}\" border=\"0\"></td>";
    echo"  <td>rolovatko roku</td>";
    echo" </tr>";
    echo" <tr>";
    echo"  <td><textarea name=\"popis[".$i."]\" cols=\"50\" rows=\"1\" maxlength=\"999\">{$radek["popis"]}</textarea></td>";
    echo" </tr>";
    echo" <tr>";
    echo"  <td><input type=\"checkbox\" name=\"smazat[".$i."]\" value=\"1\">&nbsp;Smazat tuto fotku </td>";
    echo" </tr>";
  }
  if(isset($_POST["rok"])){
?>
 <tr> 
  <td>
   <input type="submit" name="ok_update" value="Upravit">
  </td>
 </tr>
<?php
  } 
}
?>  
 </table>  
 </form>
<?php

//zpracovani updateovani
if($_POST["ok_update"]){
  foreach($_POST["id"] as $key => $id){
    if($_POST["smazat"][$key] !== "1"){
      if(mysql_query("UPDATE foto 
                 SET popis='".$_POST["popis"][$key]."'
                 WHERE id='".$id."'")){
        echo" Polozka s id: ".$id." byla aktualizovana.<br>";
      }
      else{
        echo"<p class=\"error\">Polozka s id: ".$id." <strong>nebyla</strong> aktualizovana.</p>";
      }
    }
    elseif($_POST["smazat"][$key] == "1"){
      echo"Polozka s id:".$id." se smaze<br>";
    }
    else{
      echo"<p class=\"error\">Jina chyba</p>";
    }
    
  }
}
?>

Ben
Profil *
Ale děkuju za pomoc :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0