problème avec input type image et pas avec submit

Eléphant du PHP | 363 Messages

27 juil. 2011, 15:40

Bonjour,

L'incompréhension me gagne...

Je pense que le sujet est clair mais voici un peu plus de substance :

Quand je mets un bouton submit, mon action se passe correctement et ma fonction est jouée. Pour faire plus joli comme on dit, j'ai personnalisé mes boutons et j'ai fait un input type="image" src="truc.gif" (à d'autres endroits du site, ça marche, c'est ça le pire) et du coup la fonction de suppression de mon caddie ne fonctionne plus.

Voici une partie du code :
foreach($_SESSION["mc"] as $cle=>$valeur){
	$q = "SELECT * FROM produits WHERE id = ".$cle;
	$r = mysql_query($q);
	while ($rows = mysql_fetch_array($r)){
	$s = $rows["stock"];
	echo '<table width="100%">
    	<tr height="100px">
			<td width="25%">
				<form id="form1" name="form1" method="post" action="">
					<input name="hid" type="hidden" value="'.$rows["id"].'">
						<select name="hqte" onChange="submit();">';
							for ($i=1;$i<=$s;$i++){
							echo '<option value="'.$i.' "';
							if ($i==$valeur) {echo 'selected';}
							echo '>'.$i.'</option>';
							}
							echo '</select>
					</form>
			</td>

	<td width="50%">
		<a href="produit.php?id='.$rows["id"].'">'.$rows["titre"].'</a>
	</td>
		<td width="10%">'.$rows["prix"].' €</td>
			<td width="15%">
				<form name="form2" method="post" action="" style="border:1px solid black">
					<input name="hid" type="text" value="'.$rows["id"].'" />
					<input type="image" name="sup" src="images/remove.gif" />
			</form>
		</td>
	</tr></table>'; 
	$tl = $rows["prix"]* $valeur; //echo $tl;	
	$mf = $mf + $tl;
	}
  } 
Ma fonction réduit simplement à :
if (isset($_POST["sup"])){
	echo '<h1>Hello world !</h1>';
}
Quelqu'un a t-il déjà rencontré ce souci ?

Merci de votre aide.

F69
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Eléphant du PHP | 363 Messages

27 juil. 2011, 15:56

Le fait de submitter fonctionne mais la valeur sup ne passe pas quand il s'agit d'une image alors que oui quand c'est un bouton de formulaire...

<input type="image" name="sup" value="sup" src="images/remove.gif" /> ne marche pas alors qu'ailleurs dans le site oui (add par exemple)

<input type="submit" name="sup" value="sup" /> ce code fonctionne.

Si ca peut nous aider...
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Mammouth du PHP | 568 Messages

27 juil. 2011, 16:20

Le fait de submitter fonctionne mais la valeur sup ne passe pas quand il s'agit d'une image alors que oui quand c'est un bouton de formulaire...

<input type="image" name="sup" value="sup" src="images/remove.gif" /> ne marche pas alors qu'ailleurs dans le site oui (add par exemple)

<input type="submit" name="sup" value="sup" /> ce code fonctionne.

Si ca peut nous aider...
C'est normal, un input de type image réagit comme un bouton submit mais la valeur poster est transformer en coordonnée x et y.

Par exemple un bouton <input type="image" name="submit"> passera dans les variables POST en submit_x et submit_y.

Fais un petit print de tes POST et tu verras les valeurs de l'input.

Ensuite tu adapte.

Eléphant du PHP | 363 Messages

27 juil. 2011, 16:37

Re et merci pour ta réponse.

Tu m'as fait comprendre pourquoi ca fonctionnait avec le add du coup. C'est bien ça, tu as raison, MERCI !!!

J'ai pallié au problème avec un champ texte caché nommé "sup" et maintenant c'est bon :)

C'est propre, logique comme façon de faire les valeurs hidden ?

Résolu pour moi sinon.

:love7:
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Mammouth du PHP | 568 Messages

27 juil. 2011, 17:36

Re et merci pour ta réponse.

Tu m'as fait comprendre pourquoi ca fonctionnait avec le add du coup. C'est bien ça, tu as raison, MERCI !!!

J'ai pallié au problème avec un champ texte caché nommé "sup" et maintenant c'est bon :)

C'est propre, logique comme façon de faire les valeurs hidden ?

Résolu pour moi sinon.

:love7:
Tu n'a pas forcément besoin de mettre un input hidden, il te suffit de tester si isset($_POST['submit_x']) au lieu de isset($_POST['submit'])