J’ai réalisé un questionnaire html dont je stocke les résultats dans une table.
J’affiche ces résultats sous forme de tableau dans une page que j’appelle _resultat.php.
Pour chaque ligne affichée, j’ajoute 4 colonnes :
-2 déroulants
-1 champ texte
-1 bouton « valider »
Le but est de permettre à un administrateur de mettre à jour la base de données en indiquant pour chaque ligne :
- l’état de traitement (A traiter, Accepté ou Refusé),
- des commentaires,
- l’opération à laquelle se rapporte la demande
Etant donnée que je créé un idUnique pour chaque demande, je pense que la meilleure solution consiste à récupérer cet idUnique pour savoir quelle ligne mettre à jour… Mais malgré mes tests et recherches, je fais choux blanc…
J’espère avoir été clair dans l’explication du problème.
Merci d'avance de toute l'aide que vous pourrez m'apporter
PS : je débute en PHP, merci de votre indulgence si le boulettes sont trop énormes
Voici les différents codes
<?
// récupération des données du formulaire et vérification
$nom_structure = $_POST['nom_structure'];
$nom_evenement = $_POST['nom_evenement'];
$departement = $_POST['departement'];
$nom_contact = $_POST['nom_contact'];
$email_contact = $_POST['email_contact'];
$telephone = $_POST['telephone'];
$style_evenement = $_POST['style_evenement'];
$date_evenement = $_POST['date_evenement'];
$date_reception = $_POST['date_reception'];
$commentaires = $_POST['commentaires'];
$dateenvoi = $_POST['dateenvoi'];
$informatique_liberte = $_POST['informatique_liberte'];
$from_email = "$email_contact";
$entetedate = date("D, j M Y H:i:s -0600"); // avec offset horaire
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "Cc: \n";
$entetemail .= "Bcc: \n"; // Copies cachées
$entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$entetemail .= "Date: $entetedate";
// Génération d'un identifiant unique
function idUnique($len) {
$theTVAintra = null;
$salt = "..............................................................";
srand((double)microtime()*1000000);
$i = 1;
while ($i <= $len) {
$num = rand() % strlen( $salt );
$tmp = substr( $salt, $num, 1 );
$theTVAintra = $theTVAintra . $tmp;
$i++;
}
return $theTVAintra;
}
// on génère un id unique de 10 caractères
$idUnique = idUnique( 10 );
// connexion à la base de donnée
$base='ma_base';
$login='mon_login';
$pwd='mon_pass';
$db=mysql_connect("mon_hôte", $login, $pwd);
if(!$db){
print "erreur connection $db<br>";
exit;
}
// on choisit la bonne base
if(!mysql_select_db($base,$db)){
print "erreur ".mysql_error()."<br>";
mysql_close($db);
exit;
}
// on créer la requête SQL, pour ensuite l'envoyer
$requete = "INSERT INTO operation001 (idUnique , nom_structure , nom_evenement , departement , nom_contact ,
email_contact , telephone , style_evenement ,date_evenement,
date_reception , commentaires , dateenvoi , informatique_liberte)
VALUES ('$idUnique' , '$nom_structure' , '$nom_evenement' ,
'$departement' , '$nom_contact' , '$email_contact' , '$telephone'
, '$style_evenement' , '$date_evenement' , '$date_reception' ,
'$commentaires' , '$dateenvoi' , '$informatique_liberte')";
// Exécution de la requête
$rs = mysql_query( $requete, $db );
// fermeture de la connexion vers Mysql
mysql_close();
?>
<?php
$idUnique = $_POST['idUnique'];
$etat_traitement = $_POST['etat_traitement'];
$commentaires_coop = $_POST['commentaires_coop'];
$nom_ope = $_POST['nom_ope'];
// information pour la connection à le DB
$host = 'mon_hote';
$user = 'mon_login';
$pass = 'mon_pass';
$db = 'ma_base';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT * FROM operation001';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
// si on récupère un résultat on l'affiche.
if($total) {
// début du tableau
echo '<form action="_valid_coop.php" method="post" name="retour_coop">'."\n";
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Identifiant Demande</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom de la structure</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom de l\'évènement</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Département</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom du contact</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Email du contact</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Téléphone du contact</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Style de l\'évènement</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Date de l\'évènement</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Date souhaité de réception</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Commentaires</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Date de la demande</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Informatique & Liberté</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Etat du traitement</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Commentaires Coop</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom de l\'opération</u></b></td>';
echo '<td bgcolor="#669999"></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats en colonnes.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['idUnique'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['nom_structure'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['nom_evenement'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['departement'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['nom_contact'].'</td>';
echo '<td bgcolor="#CCCCCC"><a href="mailto:'.$row['email_contact'].'">'.$row['email_contact'].'</a></td>';
echo '<td bgcolor="#CCCCCC">'.$row['telephone'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['style_evenement'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['date_evenement'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['date_reception'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['commentaires'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['dateenvoi'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['informatique_liberte'].'</td>';
echo '<td bgcolor="#CCCCCC"><select name="etat_traitement" id="etat_traitement">
<option selected="selected">A traiter</option><option>Accepté</option><option>Refusé</option></td>';
echo '<td bgcolor="#CCCCCC">
<textarea name="commentaires_coop" id="commentaires_coop" cols="30" rows="3"></textarea></td>';
echo '<td bgcolor="#CCCCCC"><select name="nom_ope" id="nom_ope">
<option selected="selected">Sergent Garcia</option><option>Zguen de Zguen</option></td>';
echo '<td bgcolor="#CCCCCC"><input name="Valider" type="submit" value="Valider"></td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
echo '</form>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
// on libère le résultat
mysql_free_result($result);
?>
<?
$idUnique = $_POST['idUnique'];
$etat_traitement = $_POST['etat_traitement'];
$commentaires_coop = $_POST['commentaires_coop'];
$nom_ope = $_POST['nom_ope'];
// connexion à la base de donnée
$base='ma_base';
$login='mon_login';
$pwd='mon_pass';
$db=mysql_connect("mon_hote", $login, $pwd);
if(!$db){
print "erreur connection $db<br>";
exit;
}
// on choisit la bonne base
if(!mysql_select_db($base,$db)){
print "erreur ".mysql_error()."<br>";
mysql_close($db);
exit;
}
// on créer la requête SQL, pour ensuite l'envoyer
$requete = 'UPDATE operation001
SET etat_traitement = "'.$etat_traitement.'", commentaires_coop = "'.$commentaires_coop.'",
nom_ope = "'.$nom_ope.'" WHERE idUnique = "'.$idUnique;
// Exécution de la requête
$rs = mysql_query( $requete, $db );
header('location: _resultat.php');
?>