Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 16h29   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Par défaut récupération variable apres liste de choix

Bonjour,
j'ai une table consommable avec en clé étrangere un codetype en relation avec le type consommable de ma table type.

J'ai fais une selection dans une liste dont voici le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// affichage du produit sélectionné
$req="select * from typeconso";
$res=mysql_query($req) or die(mysql_error());
 $num=mysql_num_rows($res); // Equivalent Ã* $nb++ de la page listprod
 echo "$num type(s) trouvé(s) :<br>";
echo '<form action="affprod.php" method="post">';
  echo "<h2>Liste des types par libéllé</h2>";
  echo "<p />Sélectionnez le type du produit :<p />";
  echo '<select name="typeprod" size="4">';
 
 while ($lig=mysql_fetch_array($res))
    {   
	  echo '<option value = "'.$lig["libtype"].'">'.$lig["libtype"].' </option>';
 
 
    }
 
$res=mysql_query($req) or die(mysql_error());
  echo "</select>";
 
  echo '<p /><input type="submit" value="Afficher le(s) produit(s)"><p />';
  echo "</form>";
?>
Je clique sur mon type désiré et cela m'amène à cette page qui est censé afficher les produits en fonction du type selectionné.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
					<?php
// recherche du produit sélectionné
 
@$req="select * from consommable where codetype='".$_POST["$typeprod"]."';";
 echo "<h1> LE PRODUIT CHOISI </h1>";
  echo '<table>';
  echo "<tr><th>REFERENCE</th><th>DESIGNATION</th><th>PRIX</th><th>QUANTITE EN STOCK</th><th>DATE MODIFICATION</th></tr>";
  $res=mysql_query($req) or die(mysql_error());
// affichage des valeurs du produit
  $lig=mysql_fetch_array($res);
 // {
    echo "<tr><td>".$lig[0]."</td><td>".$lig[1]."</td><td>".$lig[2]."</td><td>".$lig[3]."</td><td>".$lig[4]."</td></tr>";
 // }
  echo "</table>";
 
 
 
 
 
 
 
 
 
?>
Mais voilà mon problème.
Dans la seconde partie de code je ne sais pas comment receptionner le notype de la table typeconso qui est en liaison avec le reftype de la table consommable.
J'ai pensé à faire passer en même temps dans le post ma variable notype via un hidden dans le input mais je ne sais pas si c'est la solution ni trop comment m'y prendre...

Merci d'avance !
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 17h28   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Bonsoir,

ça ne te tente pas d'utiliser AJAX?
Sinon, dans le onchange du premier de select, tu faits un submit du formulaire.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 17h39   #3
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Désolé je n'ai jamais utilisé ce langage et vu mes faibles connaissances en php je préfère déjà approfondir celle-ci avant de me lancer dans un autre langage.
De plus je n'ai aps compris ce que tu expliquais.
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 17h59   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Code :
echo '<select name="typeprod" size="4" onchange="this.form.submit()">';
Tu récupères ensuite sa valeur par
Fait une recherche sur le forum, ce problème est mainte fois résolus.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 18h12   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Il n'existe pas une façon plus simple de faire cela ?
Une transmission via un echo dans le formulaire ?
Malgré que je sois allé voir la documentation je ne comprends pas le onchange.
Aurais tu un lien vers un des sujets dont tu me parles ?
Je vais chercher de mon côté.

EDIT :

Quelque chose du genre ça

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// affichage du produit sélectionné
$req="select * from typeconso";
$res=mysql_query($req) or die(mysql_error());
 $num=mysql_num_rows($res); // Equivalent à* $nb++ de la page listprod
 
 echo "$num type(s) trouvé(s) :<br>";
echo '<form action="affprod.php" method="post">';
  echo "<h2>Liste des types par libéllé</h2>";
  echo "<p />Sélectionnez le type du produit :<p />";
  echo '<select name="typeprod" size="4">';
 
 while ($lig=mysql_fetch_array($res))
    {   
	  echo '<option value = "'.$lig["libtype"].'">'.$lig["libtype"].' </option>';
	 echo '<input type="hidden" input name="id" value="echo"'.$lig["notype"];' />';
    }
 
$res=mysql_query($req) or die(mysql_error());
 
  echo "</select>";
 
  echo '<p /><input type="submit" value="Afficher le(s) produit(s)"><p />';
  echo "</form>";
?>
et ça


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
					<?php
// recherche du produit sélectionné
 
 
 
@$req="select * from consommable where codetype='".$_POST["$id"]."';";
 
 echo "<h1> LE PRODUIT CHOISI </h1>";
  echo '<table>';
  echo "<tr><th>REFERENCE</th><th>DESIGNATION</th><th>PRIX</th><th>QUANTITE EN STOCK</th><th>DATE MODIFICATION</th></tr>";
  $res=mysql_query($req) or die(mysql_error());
// affichage des valeurs du produit
  $lig=mysql_fetch_array($res);
 // { 
 
    echo "<tr><td>".$lig[0]."</td><td>".$lig[1]."</td><td>".$lig[2]."</td><td>".$lig[3]."</td><td>".$lig[4]."</td></tr>";
 // }
  echo "</table>";
 
 
 
 
 
 
 
 
 
?>

Cela ne fonctionne pas mais dans cette voie là cela ne fonctionnerait pas ?
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 18h57   #6
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Désolé, j'ai loupé une ligne
Citation:
Je clique sur mon type désiré et cela m'amène à cette page qui est censé afficher les produits en fonction du type selectionné.
j'ai cru que c'est dans une seule page .
Citation:
while ($lig=mysql_fetch_array($res))
{
echo '<option value = "'.$lig["libtype"].'">'.$lig["libtype"].' </option>';
echo '<input type="hidden" input name="id" value="echo"'.$lig["notype"];' />';
}
Tu ne dois avoir que des options dans le select mais pas d'autre élément.
Code :
1
2
$req="select * from consommable where codetype='".$_POST["typeprod"]."';";
echo $req;//pour verification seulement
Sinon libtype est le clé primaire de la table typeconso?
Je te conseille de lire ce tuto avant de continuer.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 19h10   #7
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Non la clé primaire de la table consommable est noprod
et celle de la table typeprod est notype (et a un autre champ libtype)
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 22h08   #8
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Bon j'ai lu tout ça.

j'ai pensé à faire ça

Code :
echo '<input type="hidden" value="<?php echo $data["notype"]?>" ' ;/>
voila dans le code


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// affichage du produit sélectionné
$req='select * from typeconso';
$res=mysql_query($req) or die(mysql_error());
 $num=mysql_num_rows($res); // Equivalent à  $nb++ de la page listprod
 
 echo '$num type(s) trouvé(s) :<br>';
echo '<form action="affprod.php" method="post">';
  echo '<h2>Liste des types par libéllé</h2>';
  echo '<p />Sélectionnez le type du produit :<p />';
  echo '<select name="typeprod" size="4">';
 
 while ($lig=mysql_fetch_array($res))
    {   
	  echo '<option value = "'.$lig["libtype"].'">'.$lig["libtype"].' </option>';
 
    }
 
$res=mysql_query($req) or die(mysql_error());
echo '<input type="hidden" value="<?php echo $data["notype"]?>" ' ;/>
  echo '</select>';
 
  echo '<p /><input type="submit" value="Afficher le(s) produit(s)"><p />';
  echo '</form>';
?>
J'ai un problème de syntaxe mais ça peut être une bonne idée non ?
Ou alors je me trompe ?

Merci d'avance !
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 04h54   #9
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270


1- J'ai dit plus haut que dans un select ne doit y avoir que des options.
2- D'où vient ce $data["notype"]

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 09h28   #10
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Je pensais que tu parlais dans la boucle.
Comment faire alors ?
C'est pendant ma période de test j'ai oublié de changer le data en lig.
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 09h59   #11
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Code :
echo '<option value = "'.$lig["notype"].'">'.$lig["libtype"].' </option>';
Et tu récupères sa valeur dans l'autre page avec
Ton hidden est inutile.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 16h25   #12
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Avec le changement mon code devient le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
		<?php
// affichage du produit sélectionné
$req='select * from typeconso';
$res=mysql_query($req) or die(mysql_error());
 $num=mysql_num_rows($res); // Equivalent à* $nb++ de la page listprod
 
 echo ''.$num.' type(s) trouvé(s) :<br>';
echo '<form action="affprod.php" method="post">';
  echo '<h2>Liste des types par libéllé</h2>';
  echo '<p />Sélectionnez le type du produit :<p />';
  echo '<select name="typeprod" size="4">';
 
 while ($lig=mysql_fetch_array($res))
    {   
	  echo '<option value = "'.$lig["notype"].'">'.$lig["libtype"].' </option>';
 
    }
 
$res=mysql_query($req) or die(mysql_error());
 
  echo '</select>';
 
  echo '<p /><input type="submit" value="Afficher le(s) produit(s)"><p />';
  echo '</form>';
?>

puis ça a mene à l'autre page

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// recherche du produit sélectionné
 
	$req="select * from consommable where codetype='".$_POST["typeprod"]."';";
 
 
 
 echo '<h1> LE PRODUIT CHOISI </h1>';
  echo '<table>';
  echo '<tr><th>REFERENCE</th><th>DESIGNATION</th><th>PRIX</th><th>QUANTITE EN STOCK</th><th>DATE MODIFICATION</th></tr>';
  $res=mysql_query($req) or die(mysql_error());
// affichage des valeurs du produit
  $lig=mysql_fetch_array($res);
 // { 
 
    echo '<tr><td>".$lig[0]."</td><td>".$lig[1]."</td><td>".$lig[2]."</td><td>".$lig[3]."</td><td>".$lig[4]."</td></tr>';
 // }
  echo '</table>';
 
 
 
?>
Le problème est qu'à l'affichage après selection du produit j'ai ça

REFERENCE DESIGNATION PRIX QUANTITE EN STOCK DATE MODIFICATION
".$lig[0]." ".$lig[1]." ".$lig[2]." ".$lig[3]." ".$lig[4]."

Et non pas les valeurs des champs récupérés qui s'affichent
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 16h51   #13
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Code :
echo '<tr><td>'.$lig[0].'</td><td>'.$lig[1].'</td><td>'.$lig[2].'</td><td>'.$lig[3].'</td><td>'.$lig[4].'</td></tr>';
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 17h09   #14
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
J'ai changé mais cela ne fonctionne pas non plus
j'ai ce message

Notice: Undefined index: typeprod in F:\EasyPHP 3.0\www\geststockmazars\affprod.php on line 107

Donc apparemment type prod n'existe pas...

j'ai réctifié ça aussi de ça

Code :
	$req="select * from consommable where codetype='".$_POST["typeprod"]."';";
à ça car je trouvais ça bizarre... J'ai bien fait ? (malgré tout cela ne change rien...)

Code :
$req="select * from consommable where codetype='".$_POST["typeprod"]."'";
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 17h20   #15
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Code :
<input type="submit" value="Afficher le(s) produit(s)" />
Tu le reçois après avoir cliquer sur le bouton submit?
Teste avec
Code :
1
2
var_dump($_POST);
$req="select * from consommable where codetype='".$_POST["typeprod"]."';";
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 17h31   #16
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Ah j'ai ça qui s'affiche !

array(1) { ["typeprod"]=> string(25) "Afficher le(s) produit(s)" }

Visiblement il y a un problème...
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 17h45   #17
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Citation:
while ($lig=mysql_fetch_array($res))
{
echo '<option value = "'.$lig["notype"].'">'.$lig["libtype"].' </option>';

}

$res=mysql_query($req) or die(mysql_error());


Sinon, dans ton navigateur, regarde le code source de la page et montre nous celui du formulaire.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 17h51   #18
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Voila le code source

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
						<div id="menucentral">
 
 
 
 
							<BR><br>
							Merci de selectionner l'action que vous souhaitez à  l'aide du panneau de selection
							<BR><br>
 
							2 type(s) trouvé(s) :<br><form action="affprod.php" method="post"><h2>Liste des types par libéllé</h2><p />Sélectionnez le type du produit :<p /><select name="typeprod" size="4"><option value = "1">Cartouche d'encre </option><option value = "2">Papier </option></select><p /><input type="submit" value="Afficher le(s) produit(s)"><p /></form>
 
						</div>

et

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<div id="menucentral">
 
 
 
 
					array(1) {
  ["typeprod"]=>
  string(25) "Afficher le(s) produit(s)"
}
<h1> LE PRODUIT CHOISI </h1><table><tr><th>REFERENCE</th><th>DESIGNATION</th><th>PRIX</th><th>QUANTITE EN STOCK</th><th>DATE MODIFICATION</th></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></table>
 
						</div>
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 17h57   #19
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 270
Points : 7 270
Bizar
Essaye de mettre un name sur ton submit
Code :
<input type="submit" name="chercher" value="Afficher le(s) produit(s)"/>
as tu sélectionné un élément sur ton select?

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 18h35   #20
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
J'avais essayé de mettre un name (le même nom que celui récupéré dans le $_POST ) durant ma phase de test mais cela n'a rien changé.

Oui je clique sur un élement puis je valide.
je t'ais montré tout le code le reste n'a rien à voir avec le php
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web