[PHP] input variable dans une boucle

Fermé
AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 - 11 mars 2008 à 13:19
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 11 mars 2008 à 18:31
Bonjour,

Bonjour,

J'ai un p'tit problème au quel je m'attendais...

Voila mon code:

<form name="effacer" action="effacer.php" method="post" ENCTYPE="multipart/form-data">
                <?               
            $req_tabl = 'SELECT *
            FROM site_resa               
            WHERE pseudo = "'.$var.'"
            AND date1 >= "'.date("Y-m-d").'"
            ORDER BY date1';

            $req = mysql_query($req_tabl)or die('Erreur SQL !<br>'.$req_tabl.'<br>'.mysql_error());
           
            while ($row=mysql_fetch_array($req))
            {               
            echo '<tr onMouseOver ="this.style.background=\'#2C2D37\'" onMouseOut ="this.style.background=\'#40424E\'">
                    <td align="center">'.$row['4'].'</td>
                    <td align="center">'.$row['5'].'</td>
                    <td align="center">'.$row['7'].'</td>
                    <td align="center">'.$row['8'].'</td>
                    <td align="center">'.$row['9'].'</td>
                    <td align="center"><input type="image" src="./img/6728-vor-Xchat1.png" onmouseover="style.cursor=\'pointer\'"><input type="text" name="id_pub" id="id_pub" value="'.$row['0'].'"><input type="text" name="url_pub" id="url_pub" value="'.$row['10'].'"></td>
                </tr>';
            }               
                ?>
</form>


Puis la page "efface.php":
<?
$id= $_POST['id_pub'];
$url= $_POST['url_pub'];
?>
<head>
</head>
<body>
<?php
echo $id;
unlink($url);
mysql_query("DELETE FROM site_resa WHERE ID = ".$id." ");
?>
<META HTTP-EQUIV="Refresh" CONTENT="4;URL=./calendrier.php">
</body>

La connections a la base est bonne, mais j'ai pas jugé nécessaire de mettre cette partie.

Les champs <input "url_pub" et "id_pub"> sont de type text pour voir leur contenu, je les mettrais en "hidden" dés que tous marchera.

Mon problème est dans le fond trés prévisible, sur ma 1er page lorsque je clique sur le <input image> je devrais transmettre les valeurs contenues dans les champs "url_id" et "pub_id" en POST vers le formulaire effacer.php.

Et sur ce formulaire je devrais récupérer mes valeurs. ET bah non!!

Lorsque je clique sur mon <input image> et bien que le <input text "id_pub"> affiche l'id du bon enregistrement. Le "echo $id;" de ma page effacer.php m'affiche par défaut l'id du 1er enregistrement mais pas celui sur quelle j'ai cliqué.

Et c'est normal! Puisque a cause de ma boucle dans la 1er page tous les <input text> de mon tableau portent le même nom!

Je pourrais passer par $_GET mais pour des raison de sécuritée évidante je suis vraiment pas chaud!

Mais en $_POST je ne sais pas comment résoudre ce prolème...

Merci d'avance pour vos lumières.

Az
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2008 à 13:55
Bonjour,



pour faire des noms dynamiquement il faut passer par des "varaibles variables"

ex:

<form name="effacer" action="effacer.php" method="post" ENCTYPE="multipart/form-data">
<?php               
   $req_tabl = 'SELECT * FROM site_resa WHERE pseudo = "'.$var.'" AND date1 >= "'.date("Y-m-d").'" ORDER BY date1';
   $req = mysql_query($req_tabl)or die('Erreur SQL !<br>'.$req_tabl.'<br>'.mysql_error());
   $i=0;      
   while ($row=mysql_fetch_array($req)){
		$name_input_pub=${'id_pub'.$i};
		$name_input_url=${'url_pub'.$i};
		
        echo '<tr onMouseOver ="this.style.background=\'#2C2D37\'" onMouseOut ="this.style.background=\'#40424E\'">
             <td align="center">'.$row['4'].'</td>
             <td align="center">'.$row['5'].'</td>
             <td align="center">'.$row['7'].'</td>
             <td align="center">'.$row['8'].'</td>
             <td align="center">'.$row['9'].'</td>
             <td align="center"><input type="image" src="./img/6728-vor-Xchat1.png" onmouseover="style.cursor=\'pointer\'"><input type="text" name="'.$name_input_pub.'" id="id_pub" value="'.$row['0'].'"><input type="text" name="'.$name_input_url.'" id="url_pub" value="'.$row['10'].'"></td>
             </tr>';
	$i++;		 
 }               
 ?>
</form>


et pour les recuperer tu fais une boucle sur $_POST en testant ceux qui commencent par 'i_pub' par exemple avec la fonction substr()

Mais une chose me chiffonne comment choisis tu l'élement à supprimer dans ta liste ?
0
AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 2
11 mars 2008 à 14:27
En cliquant sur le input image.

Enfin...! J'espere que c'est possible... puisque l'id que je veux effacer ce trouve dans le champs text "'.$name_input_pub.'" qui corespond à $row['0'].

j'essaie ça de suite

Az
0
AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 2
11 mars 2008 à 14:39
Ah... Oui en effet je comprends tes craintes...Qui sont les miennes depuis le début...

$i va s'incrémenter de 1 en 1. Mais comment savoir sur le quel j'ai cliqué dans l'autre formulaire? Puisque le nom est variable?


Az
0
AzRaElDGT Messages postés 57 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 octobre 2008 2
11 mars 2008 à 16:57
Personne aurais une idée?

Az
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2008 à 18:31
il faut que tu mettes sur <image un lien qui appelle le fichier effacer.php avec en parametre dans l'URL le numero de l'id à supprimer.
0