Probleme formulaire PHP

Résolu/Fermé
jupiler - 4 nov. 2009 à 13:08
 jupiler - 4 nov. 2009 à 15:30
Bonjour,

voila j ai une galerie photo avec un champ 'ordre' dans ma page qui définit l'ordre d'affichage de ma page.

Mon souci est que la j'ai trois images dans ma page mon formulaire affiche bien mes 3 input mais dans le traitement de mon formulaire seul mon dernier input est pris en compte merci de m aider a faire en sorte que des que je modifie n'importe quel input l'ordre de mes images soit bien modifié

Le formulaire :

<?php
$sql3 = "SELECT * FROM test order by ordre";
$req3 = mysql_query($sql3) or die( mysql_error() ) ;
$total3 = mysql_num_rows($req3);
echo '<table>'."\n";
while($row3 = mysql_fetch_array($req3))
{
echo '<form method ="post" action="order2.php">';
echo '<tr>';
echo '<td>'.$row3["namephoto"].' <img src="../images/'.$row3["namephoto"].'" height="50px" /></td>';
echo '<td></td>';
echo '<td><input type="text" name="site" value="'.$row3["ordre"].'"></td>';
echo '</tr>'."\n";
$ordre=$row3["ordre"];
$_SESSION['ordre']=$ordre;
}
echo '</table>'."\n" ;
echo '<br /><center><input type="submit" name="ok" value="Modifier l\'ordre"/></center><br /><br />';
echo '</form>';
?>

le traitement :

if (isset($_POST['ok']))
{
$site=$_POST['site'];
echo $sql2= "update test set ordre='".$site."' where ordre='".$ordre."'";
$req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

if($req2)
{

echo $site;
}

else
{
echo 'Ordre non modifié';
}


}

5 réponses

Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
4 nov. 2009 à 13:35
while($row3 = mysql_fetch_array($req3))
{
echo '<form method ="post" action="order2.php">'; 


Moi je vois que tu fais trois fois un formulaire, donc trois formulaire qui ont tous le meme input nommé "site".
Donc tu as :
Formulaire1 --> site
Formulaire2 --> site
Formulaire3 --> site

Une meilleure technique serait de mettre ta balise form avant ta boucle while et tu donne un nom a ton input en fonction de l'image pour que tes trois input ai un nom différent (ex : site1, site2, site3)
Apres dans ton traitement tu fais du :
if (isset($_POST['site1']))
echo 'pouet';
else if (isset($_POST['site2']))

Etc ...
0
Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
4 nov. 2009 à 13:39
Exemple à peu près (il reste surement des petites erreurs j'ai pas testé):
$count = 1;
echo '<form method ="post" action="order2.php">';
while($row3 = mysql_fetch_array($req3))
{
  echo '<tr>';
  echo '<td>'.$row3["namephoto"].' <img src="../images/'.$row3["namephoto"].'" height="50px" /></td>';
  echo '<td></td>';
  echo '<td><input type="text" name="site' . $count . '" value="'.$row3["ordre"].'"></td>';
  echo '</tr>'."\n";
  $count++;
}
echo '</table>'."\n" ;
echo '<br /><center><input type="submit" name="ok" value="Modifier l\'ordre"/></center><br /><br />';
echo '</form>';
?> 

0
Merci pilow pour cette réponse ca l air pas mal du tout je comprends la logique par contre au nivau du traitement je ne sai pas combien il y aura d'images donc il faut que j récupère la valeur de site' . $count . '
0
Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
4 nov. 2009 à 14:36
Je sais pas ce que tu cherche a faire exactement mais tu peux faire :

Un seul formulaire avec un seul input en type hidden.

un bouton pour chacune de tes photo avec en href une fonction javascript qui modifie la valeur de ton champ hidden en fonction du bouton ou tu clique et qui envoi le formulaire.
0
Merci pour tes réponses pilow

en gros ce que je veux faire le visiteur affiche les images de la galerie avec un champ input ou il y a le numéro d'ordre de l'image et le visiteur modifie le numéro d'ordre qu'il souhaite et valide derrière il y a un traitement qui modifie dans la base le numéro d'ordre.

mais la je pense qu'il suffirait juste qu je récupère $site=$_POST["site'.$i.'"];

Mais bien sur la ca ne marche pas je n vois pas comment faire ?

Merci
0
$site=$_POST[''site'.$count '] pardon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
4 nov. 2009 à 14:51
Dans ton cas ma technique ne servirait pas a grand chose car plusieurs valeurs peuvent être modifiées et tu as besoin des input text.

EDIT : Je refais plus détaillé

Dans ce cas :
1/ Tu fais un formulaire avec tous tes champs input text -> Un pour chaque image
2/ Tu fais ton bouton qui permet de les poster
3/ Tu recupere toutes les valeurs postées via $_POST['site'.$count]
4/ Tu modifies dans ta DB les valeurs ordre en fonction de ces $_POST
5/ Tu reactualise la page ensuite.
0
Merci pour tout pilow ca marche nickel
0