Page 1 sur 2

Création automatique de bouton

Posté : 03 avr. 2006, 08:12
par ephemere
Salut à tous! :D
Apres un week end bien trop court je me replonge dans mes questions existencielles...à savoir pour aujourd'hui:

J'ai créé un tableau me permettant d'afficher les valeur d'une table. A chaque nouvelle entrée dans la table le tableau est donc mis à jour.
J'aimerais en plus qu'un bouton se créé automatiquement en face de chaque ligne...il permettra de déclencher une requète sql relative au résultat auquel il est associé...

ça fait un moment que je suis dessus mais je n'ai vraiment aucune ID du comment faire.. :?
Quelqu'un aurait-il une solution? merci :wink:

Posté : 03 avr. 2006, 08:48
par mario
As tu un champ ID (clé primaire) dans ta table MySQL?

Posté : 03 avr. 2006, 08:54
par ephemere
Oui oui j'y ai pensé ! :idea:

Posté : 03 avr. 2006, 09:25
par mario
il te suffit donc de créer un lien ou un bouton sur chaque ligne de ton tableau html
$sql = '....';
$req = mysql_query($sql) or die(mysql_error());
echo '<table>';
while( ... ) { parcours des lignes de la table MySQL
   echo '<tr><td>...</td><td>...</td><td><input type="submit" name="bouton" value="'.$lignemysql['id'].'"/></td></tr>';
// soit id  :arrow: le champ ID de ta table MySQL
}
echo '</table>';
pour récupérer l'id et effectuer une requête,
if ( isset($_POST['bouton']) ){
   $sql = "SELECT ou INSERT ... ... ... WHERE id = ".$_POST['bouton'];
   // etc etc ....  
}

Posté : 03 avr. 2006, 09:38
par ephemere
J'essaye et je vous tient au courant. En tout cas merci Mario !

Posté : 03 avr. 2006, 10:28
par mario
pour plus de sécurité, je te conseille également de contrôler ce qui est envoyé via la méthode POST pour éviter toute injection SQL.

pour cela tu peux utiliser les expressions régulières
if ( (isset($_POST['bouton'])) && (preg_match('/^[[:digit:]]$/', $_POST['bouton'])) ){ 
   $sql = "SELECT ou INSERT ... ... ... WHERE id = ".$_POST['bouton']; 
   // etc etc ....   
} 
tu trouveras ici un super site sur les expreg

Posté : 03 avr. 2006, 10:35
par ephemere
Ok merci ça marche nickel =D>
Pour ce qui est des questions de sécurité c'est interressant mais ça m'est pas vraiment indispensable donc jm'y pencherais plus tard c'est pas prioritaire.
Par contre mon problème c'est que je voudrai que le bouton s'appelle Détail...c'est possible :?:

Posté : 03 avr. 2006, 12:30
par mario
tente:
$sql = '....'; 
$req = mysql_query($sql) or die(mysql_error()); 
echo '<table>'; 
while( ... ) { parcours des lignes de la table MySQL 
   echo '<tr><td>...</td><td>...</td><td><input type="submit" name="bouton['.$lignemysql['id'].']" value="Envoi"/></td></tr>'; 
// soit id   le champ ID de ta table MySQL 
} 
echo '</table>'; 
en fait, je stocke l'ID dans le tableau bouton[] lorsque je génère le tableau HTML

et pour récuperer l'ID du formulaire POSTé, je parcours le tableau
if (isset($_POST['bouton'])){
   foreach($_POST['bouton'] AS $id=>$valeur){
      $sql = "SELECT ou INSERT ... ... ... WHERE id = ".$id;
   }
}
to be confirmed :D

Posté : 03 avr. 2006, 13:45
par ephemere
Bon j'vais encore avoir l'air ridicule mais bon...ça n'a jamais tué personne!

En fait je ne comprend pas trop ce que tu entend par $lignemysql puis par $id=>$valeur...Où c'est que tu les définis ces variables?

et puis $lignemysql j'aurais plutot eu tendance a écrire $row moa... :?

Posté : 03 avr. 2006, 13:55
par mario
et puis $lignemysql j'aurais plutot eu tendance a écrire $row moa... :?
oui on parle de la même chose :D
En fait je ne comprend pas trop ce que tu entend par $lignemysql puis par $id=>$valeur...Où c'est que tu les définis ces variables?
En fait, je parcours un tableau php (array) avec la fonction foreach() et je stocke l'ID du tableau ( name="bouton['.$lignemysql['id'].']" ) dans la variable $id et sa valeur ( value="Envoi" ) dans la variable $valeur

Posté : 03 avr. 2006, 14:29
par ephemere
J'ai vraiment du mal aujourd'hui...
Quand tu écris $id=>$valeur je comprend "lorsque $id est plus grand ou égal à $valeur"...Or $id correspond à des chiffres et $valeur à un mot, en l'occurence détail, donc ça ne veut rien dire du tout... :?

j'tenvoi mon bout de code si ça peut t'aider a m'expliquer...:
<?php

$req = mysql_connect("odin","root","***********") or die(mysql_error());
//séléction de la BD
$req = mysql_select_db("gii");
$sql = "SELECT Id_incidents, Type_incidents, Lieux_incidents, Date_signalement,Commentaire_signalement FROM ......."; ?>

<table width="80%" border="0">
  <tr bgcolor="#0000CC">
    <th width="10%"><span class="Style1">ID</span></th>
    <th width="20%"><span class="Style1">Type</span></th>
    <th width="30%"><span class="Style1">Date</span></th>
	<th width="22px"><span class="Style1">Lieu</span></th>
    <th width="17"><span class="Style1">Etat</span></th>
    <th width="13"><span class="Style1">Par</span></th>
  </tr>
</table>
<?php
$resultSet = mysql_query($sql); 
echo '<table width="80%" >' ; 

while ($row = mysql_fetch_array($resultSet)) { 
?> 

    
<tr>  
<td width="10%"><?php echo $row['Id']?></td> 
<td width="20%"><?php echo $row['Type']?></td> 
<td width="30%"><?php echo $row['Date_signalement_']?></td> 
<td width="15%"><?php echo $row['Lieux']?></td> 
<td width="20%"><?php echo $row['Signalé_par']?></td> 
<td><input type="submit" name="bouton['.$row['Id'].']"  value=Détail / /></td>
</tr> 

<?php } 
echo '</table>'; // on ferme le tableau 
?> 
voila..
le premier tableau sert de première ligne.
En tout cas merci de m'accorder de ton temps! :lol: :lol:

Posté : 03 avr. 2006, 14:46
par mario
a tester
<?php 
$req = mysql_connect("odin","root","***********") or die(mysql_error()); 
$req = mysql_select_db("gii"); //séléction de la BD


if (isset($_POST['bouton'])){ 
   foreach($_POST['bouton'] AS $id=>$valeur){ 
      echo 'Le bouton ID '.$id.' a été cliqué';
   } 
} 

$sql = "SELECT Id_incidents, Type_incidents, Lieux_incidents, Date_signalement,Commentaire_signalement FROM .......";
?>
<table width="80%" border="0"> 
  <tr bgcolor="#0000CC"> 
    <th width="10%"><span class="Style1">ID</span></th> 
    <th width="20%"><span class="Style1">Type</span></th> 
    <th width="30%"><span class="Style1">Date</span></th> 
    <th width="22px"><span class="Style1">Lieu</span></th> 
    <th width="17"><span class="Style1">Etat</span></th> 
    <th width="13"><span class="Style1">Par</span></th> 
  </tr> 
</table> 
<?php 
$resultSet = mysql_query($sql) or die(mysql_error());
echo '<table width="80%" >' ; 

while ($row = mysql_fetch_array($resultSet)) { 
echo "<tr>
<td width='10%'>".$row['Id']."</td> 
<td width='20%'>".$row['Type']."</td> 
<td width='30%'>".$row['Date_signalement_']."</td> 
<td width='15%'>".$row['Lieux']."</td> 
<td width='20%'>".$row['Signalé_par']."</td> 
<td><input type='submit' name='bouton[".$row['Id']."]' value='Détail' /></td> 
</tr>";
} 
echo '</table>'; // on ferme le tableau 
?> 

Posté : 03 avr. 2006, 15:04
par ephemere
nan marche pas.... :cry:
ya pas de message d'erreur mais le clic sur le bouton ne donne rien! ](*,)

Posté : 03 avr. 2006, 15:56
par mario
je ne vois pas tes balises <form> ???

Posté : 04 avr. 2006, 08:22
par ephemere
Désolé hier j'ai du m'absenter un peu précipitemment!
Effectivement à force de copier coller j'en ai oublié l'essentiel! je corrige test et tient au courant :wink: