Bonjour,

je cherche à gérer une colonne checkbox pour mon tableau qui contient liste des demandes de formations au sein d'une entreprise,
et je veux avoir un checkbox pour chaque ligne de tableau afin de valider la demande ou la refuser, avec un bouton envoyer au dessous du tableau qui sert à engendrer une modification dans ma BD (passage à 1 (validée) ou à 0 (refusée)).
vraiment je ne sais pa comment faire

j'ai commencé par ce bout de code que j'ai trouvé sur le net , et je l'ai adapté à mon cas:

$conn=new PDO('mysql:host=localhost;dbname=sfe2','root','');
       $st=$conn->query("SET NAMES 'UTF8'");
  $sql= "SELECT Nom,nom_service,Description,dateD FROM user,service,demande where  user.id_user=demande.id_user 
  and service.id_service=demande.id_service";

$sth=$conn->query($sql);
$result= $sth->fetchAll(PDO::FETCH_ASSOC);
 echo '<h3><center>Demandes</h3>';
 echo '<form action="" method="post">';
echo '<center><table border=3 #F5F5F5>
   <thead>
   ';
echo "<tr> <th>Demandeur</th>";

echo "<th>Service</th>
    <th>Description</th>";
echo "<th>Date de demande</th>
<th>Decision</th>;
</tr></thead>";
foreach($result as $row){

  echo "<tbody>
  <tr>";
  echo "<td>".$row['Nom']."</td>";
  echo "<td>".$row['nom_service']."</td>";
  echo "<td>".$row['Description']."</td>"; 
  echo "<td>".$row['dateD']."</td>";
  echo "<td>";
  if (($row["decision"])=="1"){
            echo '<input type="checkbox" name="modif['.$row["id_demande"].']" value="oui" checked="checked" >';
        }
        else { 
            echo '<input type="checkbox" name="modif['.$row["id_demande"].']" value="non">';
        }
        echo '</td>';
        echo '</tr>'."\n";
    }
    echo '</tbody></table></center>'."\n";
    echo '<input type="submit" name="OK" /></form>';

}

et je ne sais pas pourquoi j'ai un retour tout d'abord de :Undefined index: id_demande in C:\wamp64\www\Day\about.php on line 216
sachant que id_demande existe dans ma table en auto increment
et même chose pour 'decision'

5 réponses


Sanae
Auteur
Réponse acceptée

C'est bon , j'ai réglé le problème
il faut mettre id _demande in (".$recherche.") et nom pas id_demandeur
faute de frappe ;)

Salut,

Ton erreur vient du fait que tu n'as pas d'élément id_demande dans $row.
Petit indice: cherches au niveau de ta requête :)

Sanae
Auteur

@Thomas Chicheportiche oui c'est vrai ,Merci

Sanae
Auteur

voilà ou j'en suis maintenant, j'ai ajouté le code permettant de modifier la BD , mais rien ne marche malheureusement.

$conn=new PDO('mysql:host=localhost;dbname=sfe2','root','');
       $st=$conn->query("SET NAMES 'UTF8'");
  $sql= "SELECT id_demande,Nom,nom_service,Description,dateD,decision FROM user,service,demande where  user.id_user=demande.id_user 
  and service.id_service=demande.id_service";

$sth=$conn->query($sql);
$result= $sth->fetchAll(PDO::FETCH_ASSOC);
 echo '<h3><center>Demandes</h3>';
 echo "<tr> <th>Decision</th>";

 echo '<form action="valider.php" method="post">';
echo '<center><table border=3 #F5F5F5>
   <thead>
   ';
   echo "<tr> ";

echo "<tr> <th>id</th><th>Demandeur</th>";

echo "<th>Service</th>
    <th>Description</th>";
echo "<th>Date de demande</th>
<th>Decision</th>;
</tr></thead>";
foreach($result as $row){

  echo "<tbody>
  <tr>";
  echo "<td>".$row['id_demande']."</td>";
  echo "<td>".$row['Nom']."</td>";
  echo "<td>".$row['nom_service']."</td>";
  echo "<td>".$row['Description']."</td>"; 
  echo "<td>".$row['dateD']."</td>";

  echo "<td>";
  if (($row["decision"])=="1"){
            echo '<input type="checkbox" name="modif['.$row["id_demande"].']" value="oui" checked="checked" >';
        }
        else { 
            echo '<input type="checkbox" name="modif['.$row["id_demande"].']" value="non">';
        }
        echo '</td>';
        echo '</tr>'."\n";
    }
    echo '</tbody></table></center>'."\n";
    echo '<input type="submit" name="OK" /></form>';

}

    ?>

je ne sais pas si ce que j'ai fait est juste ou pas , si vous avez des propositions s'ils vous plaît ??
Merci d'avance.

Sanae
Auteur

Pardon , j'ai oublié l'autre code de modification

<?php
include("dbf.php"); 
$Valide = array_keys($_POST["modif"]);
$recherche=implode(",", $Valide);
$sql = "UPDATE demande SET decision='1' WHERE id_demandeur IN (".$recherche.")";
$res=$conn->query($sql);
$sql2 = "UPDATE demande SET decision='0' WHERE id_demandeur NOT IN (".$recherche.")";
$res2=$conn->query($sql2);
?>