Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 19/08/2011, 09h37   #1
Nouveau Membre du Club
 
Femme
Inscription : janvier 2010
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2010
Messages : 78
Points : 25
Points : 25
Par défaut problème array dans POST

je cherche depuis un petit moment la solution à mon pb.
Je sais que ce site est très réactif, je compte donc sur vous.

Voilà mon problème

j'ai une liste de factures avec un bouton radio pour sélectionner une facture.
Quand je sélectionne la facture désirée, elle ne s'affiche pas, dans la barre de programme, j'ai le mot "array" dans ma variable fact.

impayes.php?action=detailSD&fact=Array&type=clientele

Code PHP

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$fact=array();
 
		for ($i=0;$i<count($donneesSD1);$i++)
				{
					?>
					<tr >
					<td id=""><?php echo $donneesSD1[$i]['07_creele'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_libtypefact'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_numfact']; $fact[$i]=$donneesSD1[$i]['07_numfact'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_montantfact'];?></td>
					<td><input name="fact" type="radio" value="" onclick="detailfact('<?php echo $fact[$i];?>')"/></td>
					</tr>
					<?php
 
				}
				?>
</form>	
</table>
<form name="detailform" method="post" action="<?php echo "impayes.php?action=detailSD&fact=$fact&type=$type";?>">
        <input type="hidden" id="detail" name=""  value=""/>
</form>
Code JS

Code :
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
						function detailfact(fact)
						{	if (confirm("Détail de la facture"))
								{
								document.getElementById('detail').value = fact;
								document.detailform.submit();
								}		
 
 
						}
					</script>
naroco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 09h44   #2
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Bonjour,

Code :
<?php echo $fact[$i];?>
Code :
<?php echo "impayes.php?action=detailSD&fact=$fact&type=$type";?>
Est-ce que tu vois l'erreur maintenant ?

$fact est effectivement un tableau, voilà pourquoi tu as un Array...

Tu peux serializer ta variable pour la passer :
Code :
<?php echo "impayes.php?action=detailSD&fact=".serialize($fact)."&type=$type";?>
ça te permettra de récupérer ton tableau tel quel dans ta page impayes. Et donc l'utilisé à bon escient !
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 09h56   #3
Nouveau Membre du Club
 
Femme
Inscription : janvier 2010
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2010
Messages : 78
Points : 25
Points : 25
Par défaut serialize ne fonctionne pas

Après test :
Dans la barre de formule, j'ai :
impayes.php?action=detailSD&fact=a:1:{i:0;s:9:
naroco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h01   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
... ou passer tes variables en POST :
Code :
1
2
3
4
5
6
<form name="detailform" method="post" action="impayes.php">
        <input type="hidden" id="detail" name=""  value=""/>
        <input type="hidden" name="action" value="detailSD"/>
        <input type="hidden" name="fact" value="<?php echo serialize($fact); ?>"/>
        <input type="hidden" name="type" value="<?php echo $type; ?>"/>
</form>
pour récupérer l'array :
Code :
1
2
3
<?php
$array_fact = unserialize($_POST['fact']);
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h07   #5
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Tu récupéres donc bien ta variable serializer.

Tu peux la rendre comme avant :

Code :
<?php $tableau = unserialize($_GET['tab']) ?>
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h11   #6
Nouveau Membre du Club
 
Femme
Inscription : janvier 2010
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2010
Messages : 78
Points : 25
Points : 25
Par défaut passage des variables en post

ne fonctionne pas
naroco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h23   #7
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Exact. Mes tests ne sont pas très concluant ...

Changement de stratégie :
Code :
        <input type="hidden" name="fact" value="<?php echo implode('*|*|*',$fact); ?>"/>
traitement :
Code :
			$array_fact = explode('*|*|*',$_POST['fact']);
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 11h21   #8
Nouveau Membre du Club
 
Femme
Inscription : janvier 2010
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2010
Messages : 78
Points : 25
Points : 25
Par défaut ???

Loin de moi de te contrarier Jreaux62 mais la méthode serialize me plait plus.
Je vous resollicite donc tous les 2 (Jreaux62 et simdu80) pour mener à bout la démarche.

Voilà j'ai fait comme indiqué par simdu80

Code :
1
2
3
4
5
 
<form name="detailform" method="post" action="<?php echo "impayes.php?action=detailSD&fact=".serialize($fact)."&type=$type"?>">
        <input type="hidden" id="detail" name=""  value=""/>
 
</form>
j'ai même fait un printf de unserialize mais le résultat me donne 1.

moi la référence que je devrais récupérer est sur 9 caratères.

je vous réaffiche mon 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
26
27
$fact=array();
 
		for ($i=0;$i<count($donneesSD1);$i++)
				{
					?>
					<tr >
					<td id=""><?php echo $donneesSD1[$i]['07_creele'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_libtypefact'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_numfact']; $fact[$i]=$donneesSD1[$i]['07_numfact'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_montantfact'];?></td>
					<td><input name="fact" type="radio" value="" onclick="detailfact('<?php echo $fact[$i];?>')"/></td>
					</tr>
					<?php
 
 
				}
 
 
				?>
</form>	
</table>
 
 
<form name="detailform" method="post" action="<?php echo "impayes.php?action=detailSD&fact=".serialize($fact)."&type=$type"?>">
        <input type="hidden" id="detail" name=""  value=""/>
 
</form>
Code :
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
						function detailfact(fact)
						{	if (confirm("Détail de la facture"))
								{
								document.getElementById('detail').value = fact;
								document.detailform.submit();
								}		
 
 
						}
					</script>
j'espère que vous arriverez à me dépanner
naroco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 11h45   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par naroco Voir le message
Loin de moi de te contrarier Jreaux62 mais la méthode serialize me plait plus.
A la base, moi aussi.
Mais ... je préfère une méthode qui fonctionne ... à une méthode qui ne fonctionne pas (au vu des essais que j'ai effectué).
Cela dit, j'ai juste testé sur un array('pomme', 'banane', 'orange') !

Bon, le problème vient des " :

En POST :
Code :
1
2
3
        <input type="hidden" name="fact" value="<?php echo htmlspecialchars(serialize($fact)); ?>"/>
et
			$array_fact = unserialize(htmlspecialchars_decode(stripslashes($_POST['fact'])));
Ou en GET :
Code :
1
2
3
<form name="detailform" method="post" action="impayes.php?action=detailSD<?php echo '&fact='.urlencode(serialize($fact)).'&type='.$type; ?>">
et
			$array_fact = unserialize(urldecode(stripslashes($_GET['fact'])));
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 13h31   #10
Nouveau Membre du Club
 
Femme
Inscription : janvier 2010
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2010
Messages : 78
Points : 25
Points : 25
Par défaut autre solution

J'ai trouvé une autre solution mais qui marche à moitié.
Dans ma liste de facture pour un client, j'ai par exemple 3 factures.
Je clique sur le bouton radio de la première facture, il m'affiche le détail de la dernière facture.

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
for ($i=0;$i<count($donneesSD1);$i++)
				{
					?>
					<tr >
					<td id=""><?php echo $donneesSD1[$i]['07_creele'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_libtypefact'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_numfact'];?></td>
					<td id=""><?php echo $donneesSD1[$i]['07_montantfact'];?></td>
					<td><input name="fact" type="radio" value="" onclick="<?php $fact=$donneesSD1[$i]['07_numfact'];?> detailfact('<?php echo $fact;?>')"/></td>
					</tr>
					<?php
 
 
				}
 
 
				?>
</form>	
</table>
 
 
<form name="detailform" method="post" action="<?php echo "impayes.php?action=detailSD&type=$type&fact=$fact";?>">
        <input type="hidden" id="detail" name=""  value=""/>
 
</form>
naroco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 13h40   #11
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
dans ton dernier code, tu mets onclick="<?php $fact=...
donc,
<form name="detailform" method="post" action="<?php echo "impayes.php?action=detailSD&type=$type&fact=$fact";?>">
va prendre la dernière valeur de $fact...

Il faut remettre $fact[$i]

Et utiliser le code que j'ai mis ci-dessus.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 13h44   #12
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
STOP !!
Ce ne serait pas plutot un problème de conception ???
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 13h59   #13
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Code :
1
2
3
4
5
6
7
8
9
10
11
	<script type="text/javascript">
	function detailfact(numfact)
	{
		var numfact;
		if (confirm("Détail de la facture " + numfact))
			{
			document.getElementById('iddetailnumfact').value = numfact; // le numero de facture a afficher
			document.detailform.submit();
			}		
	}
	</script>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	<table>
<?php
		for ($i=0;$i<count($donneesSD1);$i++)
		{
?>
		<tr>
			<td id=""><?php echo $donneesSD1[$i]['07_creele'];?></td>
			<td id=""><?php echo $donneesSD1[$i]['07_libtypefact'];?></td>
			<td id=""><?php echo $donneesSD1[$i]['07_numfact'];?></td>
			<td id=""><?php echo $donneesSD1[$i]['07_montantfact'];?></td>
			<td><form><input name="fact" type="radio" value="" onclick="detailfact('<?php echo $donneesSD1[$i]['07_numfact'];?>')"/></form></td>
			<td id="">
			</td>
		</tr>
<?php
		}
?>
	</table>
Code :
1
2
3
4
<form name="detailform" method="post" action="impayes.php?action=detailSD">
	<input type="hidden" id="iddetailtype" name="typefact" value="<?php echo $type; ?>"/>
	<input type="hidden" id="iddetailnumfact" name="numfact" value=""/>
</form>
tu récupères :
Code :
1
2
3
4
 
	$action = $_GET['action']; // (action)
	$typefact = $_POST['typefact']; // (??)
	$numfact = $_POST['numfact']; // (le numero de facture a afficher)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 14h25   #14
Nouveau Membre du Club
 
Femme
Inscription : janvier 2010
Messages : 78
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2010
Messages : 78
Points : 25
Points : 25
super jreaux62

t'es génial

je savais que sur site, on trouvais des gens cordiaux et patients avec les débutants comme moi

un grand merci
naroco est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/08/2011, 14h54   #15
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Merci.

peut-etre ca a supprimer :
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h27.


 
 
 
 
Partenaires

Hébergement Web