hoi,

Ik had een dropdown menu om een veld te updaten in de db. Nu wil ik eigenlijk een tabeloverzicht met een checkbox erachter die zorgt dat de aangevinkte nummers een andere status krijgen. Wie kan zien wat ik hier nu over het hoofd zie???


 <?php
$query = "SELECT * FROM ft_form_4 WHERE status= 'open' GROUP BY IPC" ;
if(!$result = mysql_query($query)){
    echo 'er ging wat fout bij het ophalen van de gegevens uit de database';
    }
else{

while ($rij = mysql_fetch_array($result))
{

echo "<table><tr><td>".$rij['IPC']."</td>";
echo "<td><input type=\"checkbox\" name=\"status\" value=\"closed\"></td></tr></table>";
}
?>
   
  </p>
  <table width="213" border="0" align="center">
    <tr>
      <td width="207"><input type="submit" name="submit" value="bevestig" /></td>
    </tr>
      </table>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p><?php

if($_SERVER['REQUEST_METHOD'] == "POST"){
    if(isset($_POST['IPC']) != NULL){//ticketnummer aangevinkt, value meegegeven
        $sql="UPDATE
			ft_form_4
        SET
            status='closed'
        WHERE
            IPC='". $_POST['IPC']."'";

			
        //echo "$sql";
        if(!mysql_query($sql)){
           echo 'Er is een fout opgetreden: '.mysql_error();
           }
        else{
          if(mysql_affected_rows() > 1){
           echo 'Er zijn '.mysql_affected_rows().' rijen aangepast.';
           }
          else{
            echo 'Er is 1 rij aangepast.';
                }
            }
        }
    }
} 

?> 
  </p>
</form>
Er vallen me een aantal dingen op:

- Je gebruikt geen '<FORM>' tag
- Je hebt in het formulier geen veld met de naam 'IPC', die vraag je wel op in het stuk code voor afhandeling van het formulier
- Je gebruikt in het formulier voor elke rij een veld met de (dezelfde) naam 'status'

Dit moet je naar mijn idee doen:
- Zet je velden tussen <FORM> tags
- Maak daar een checkbox aan op de volgende manier:

<INPUT TYPE=\"checkbox\" NAME=\"closed[]\" VALUE=\"".$rij['IPC']."\">

Ervan uitgaande dat dat de primary key is.
- In de form afhandeling kun je dan het volgende doen:

UPDATE ft_form_4 SET status='closed' WHERE IPC IN (". implode(",",$_POST['closed']).")";
Die formtag is er natuurlijk wel maar staat nog boven hetgeen wat ik geplakt heb. Dat veld is er ook want ik krijg gewoon de hele lijst voor me.
Daar ligt het dus allemaal niet aan. het veld in de db IPC staat voor het nummer wat gesloten moet worden. Het veld status heeft dus of de waarde 'open' of 'closed'. Dus die "name=\"closed\" is dus verkeerd.
Dat je de lijst te zien krijgt is logisch. Maar in je formulier geef je nergens aan welk IPC's geselecteerd zijn.

Echo je POST variabelen maar eens onderaan...


foreach ($_POST as $key=>$waarde)
{
   echo $key.": ".$waarde."<br/>\n";
}


Krijg je alleen "status: closed" waarschijnlijk.

Dus moet je een soortgelijke oplossing zoeken zoals in mijn eerdere reactie... (denk ik).
heb die echo erin geplakt. heb er 1 aangevinkt en de echo zegt:

closed: 220068
submit: bevestig

Lijkt er dus op dat die de goede pakt maar in werkelijkheid doet ie niks
Als je de checkbox 'closed[]' hebt genoemd moet je ook ff de volgende code aanpassen in:


<?php
    if(isset($_POST['closed'])){//ticketnummer aangevinkt, value meegegeven
        $sql="UPDATE ft_form_4 SET status='closed' WHERE IPC IN (". implode(",",$_POST['closed']).")";
?>


!= NULL kan volgens mij weggelaten worden.
HEHE eindelijk. enige wat veranderd moest worden was de naam closed. ipv IPC bij die post. Voor de rest is alles hetzelfde gebleven. Het werk in ieder geval. thx.
Ohoh... niet helemaal dus !!! ik kan namelijk niet meerdere checkboxen aanvinken. alleen 1 sluit ie er. hier moet dus nog ergens iets bij ???/
Zie mijn 1e reactie onderaan... Je moet een PHP array aanmaken... Dus '[]' toevoegen aan de veldnaam.

<INPUT TYPE=\"checkbox\" NAME=\"closed[]\" VALUE=\"".$rij['IPC']."\">

en dan op deze manier in je query verwerken

$sql = "UPDATE ft_form_4 SET status='closed' WHERE IPC IN (".implode(",",$_POST['closed']).")";

Reageren