IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème array dans POST


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Points : 60
    Points
    60
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $fact[$i];?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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 !

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Points : 60
    Points
    60
    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:

  4. #4
    Invité
    Invité(e)
    Par défaut
    ... ou passer tes variables en POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $array_fact = unserialize($_POST['fact']);
    ?>

  5. #5
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Tu récupéres donc bien ta variable serializer.

    Tu peux la rendre comme avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $tableau = unserialize($_GET['tab']) ?>

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Points : 60
    Points
    60
    Par défaut passage des variables en post
    ne fonctionne pas

  7. #7
    Invité
    Invité(e)
    Par défaut
    Exact. Mes tests ne sont pas très concluant ...

    Changement de stratégie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <input type="hidden" name="fact" value="<?php echo implode('*|*|*',$fact); ?>"/>
    traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			$array_fact = explode('*|*|*',$_POST['fact']);

  8. #8
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Points : 60
    Points
    60
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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'])));
    Dernière modification par Invité ; 19/08/2011 à 12h07.

  10. #10
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Points : 60
    Points
    60
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  11. #11
    Invité
    Invité(e)
    Par défaut
    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.

  12. #12
    Invité
    Invité(e)
    Par défaut
    STOP !!
    Ce ne serait pas plutot un problème de conception ???
    Dernière modification par Invité ; 19/08/2011 à 13h58.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	$action = $_GET['action']; // (action)
    	$typefact = $_POST['typefact']; // (??)
    	$numfact = $_POST['numfact']; // (le numero de facture a afficher)

  14. #14
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Points : 60
    Points
    60
    Par défaut
    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

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci.

    peut-etre ca a supprimer :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème accents dans post de page jsf
    Par ktaria dans le forum JSF
    Réponses: 0
    Dernier message: 08/01/2013, 15h13
  2. [MySQL] passer une variable ARRAY dans post
    Par dickperron dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/10/2011, 23h32
  3. Problème mettre array dans une boucle.
    Par savagenri dans le forum Langage
    Réponses: 4
    Dernier message: 13/10/2010, 18h23
  4. Problème variable dans array
    Par mbsss dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2010, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo