Création automatique de bouton

Eléphant du PHP | 124 Messages

03 avr. 2006, 08:12

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:

Mammouth du PHP | 768 Messages

03 avr. 2006, 08:48

As tu un champ ID (clé primaire) dans ta table MySQL?
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

03 avr. 2006, 08:54

Oui oui j'y ai pensé ! :idea:

Mammouth du PHP | 768 Messages

03 avr. 2006, 09:25

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 ....  
}
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

03 avr. 2006, 09:38

J'essaye et je vous tient au courant. En tout cas merci Mario !

Mammouth du PHP | 768 Messages

03 avr. 2006, 10:28

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
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

03 avr. 2006, 10:35

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

Mammouth du PHP | 768 Messages

03 avr. 2006, 12:30

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
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

03 avr. 2006, 13:45

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... :?

Mammouth du PHP | 768 Messages

03 avr. 2006, 13:55

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
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

03 avr. 2006, 14:29

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:

Mammouth du PHP | 768 Messages

03 avr. 2006, 14:46

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 
?> 
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

03 avr. 2006, 15:04

nan marche pas.... :cry:
ya pas de message d'erreur mais le clic sur le bouton ne donne rien! ](*,)

Mammouth du PHP | 768 Messages

03 avr. 2006, 15:56

je ne vois pas tes balises <form> ???
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 124 Messages

04 avr. 2006, 08:22

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: