Page 1 sur 1

probleme dans l'utilisation de idUnique et UPDATE.....

Posté : 24 août 2006, 17:52
par nanar
Bonjour,

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… :( pas d’erreur, mais la base n’est pas mise à jour…

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 :oops:

Voici les différents codes

:!: Page _valid.php (qui traite le questionnaire) :
<?
// 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(); 
 
?>

:!:Page _resultat.php (qui affiche les résultats) :
<?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);

?>
:!: Page _valid_coop.php (qui devrais traiter les infos mise à jour dans _resultat.php par l’administrateur) :


<?
$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'); 

?>

Posté : 24 août 2006, 18:24
par ouckileou
Il faudrait couper les lignes trop longues, sinon ça pourri la mise en forme du forum et surtout c'est relou à lire :o

Merci :merci:

Posté : 24 août 2006, 18:42
par nanar
:oops: Désolé, c'est arrangé, l'affichage est beaucoup mieux...

Posté : 25 août 2006, 11:45
par nanar
:? Personne pour m'aider ?...

Posté : 25 août 2006, 12:09
par ouckileou
D'abord voir le topic : "débugger du SQL dans PHP" dans ma signature

Posté : 25 août 2006, 12:17
par nanar
Merci, je regarde....

Posté : 25 août 2006, 16:47
par nanar
Effectivement, celà m'a aidé... merci ouckileou :wink:

Par contre, comment fait on pour modifier la valeur selected d'un déroulant en fonction de la base de donnée???

Je m'explique :

j'ai fais ce tableau qui m'affiche le contenu de ma table et qui ajoute pour chaque fin de ligne deux déroulants (qui correspondent à des infos qui doivent être données par l'administrateur traitant le tableau), un champ texte (commentaires de l'administrateur), et un bouton valider. La mise à jour de la base au clic sur valider fonctionne bien, mais par contre je ne sais pas comment faire pour faire en sorte que mes déroulants, si la ligne a été modifiée par l'administrateur, aient la bonne valeur selectionnée... Pour l'instant, lorsque je vais sur ma page, les valeurs affichées par les déroulants sont les valeurs selectionnées par défaut...

Merci d'avance pour le coup de pouce :)

if($total) {
    // début du tableau
    	echo '<table bgcolor="#FFFFFF">'."\n";
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>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>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, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<form action="_valid_coop.php" method="post" name="retour_coop"><tr>'; 
        echo '<td bgcolor="#CCCCCC">'.$row['nom_structure'].'<input type="hidden" 
name="idUnique" id="idUnique" value="'.$row['idUnique'].'"></td>';
		echo '<td bgcolor="#CCCCCC">'.$row['nom_evenement'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['departement'].'</td>';
		echo '<td bgcolor="#CCCCCC"><a href="mailto:'.$row['email_contact'].'">'.$row['nom_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">'.$row['commentaires_coop'].'</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></form>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

Posté : 25 août 2006, 17:08
par ouckileou
Ma signature => FAQ puis "Pré-positionner une liste déroulante" 8)

Posté : 25 août 2006, 18:13
par nanar
Ma parole, mais tout se trouve finalement dans ta signature :shock:

Merci pour l'info, tout à l'air de rouler !

:D @+

Posté : 25 août 2006, 18:17
par ouckileou
Ma parole, mais tout se trouve finalement dans ta signature :shock:
On peut voir ça comme ça. 8)

Sinon c'est peut-être que ma signature pointe vers tous les trucs qui contiennent beaucoup d'infos sur des sujets qui reviennent très fréquemment. :roll:
À consulter AVANT de poster
À méditer :-*

Posté : 25 août 2006, 18:47
par nanar
À consulter AVANT de poster

À méditer Whistle
C'est juste... sauf que quand on débute vraiment, par ses propre moyen, il est vraiment dur de savoir ou, et surtout quoi chercher...

Par exemple,
Ma signature => FAQ puis "Pré-positionner une liste déroulante"
j'avais fait un tour dans les FAQ, mais je n'avais pas trouvé ma soluce... et je n'avais aucune idée des termes à chercher pour décrire ce que je veux faire... bref tout ça pour dire que je ne suit pas feignant, je veux bien chercher, mais c quand même pas mal d'être un tant soit peu orienté !

Merci donc de m'avoir orienté :wink: