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 :

[Tableaux] checkbox + tableau + popup = pb de transfert


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut [Tableaux] checkbox + tableau + popup = pb de transfert
    Bonjour,
    J'affiche dans un popup un tableau contenant toutes les informations d'une table et je place sur chaque ligne une checkbox qui servira à choisir les lignes que l'on veut modifier. J'aimerai recupérer le 1er champs de chaque lignes selectionnées dans une variable et recupérer ensuite cette varable sur la page principal, où s'affichera toutes les lignes selectionnées.
    Le problème est que je n'arrive pas à récupérer ces valeurs.
    Je ne sais pas s'il faudrait mieux utiliser GET que POST?
    Quelqun pourrait-il m'aider?

    voici 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    //le popup (modifpopup.php)
    <?php
    	[ ... ]
    	$result = mysql_query("SELECT * FROM baie_port"); 
     
    	echo"<table border=\"1\" align=\"center\">";
    	for($i=0;$i<mysql_num_rows($result);$i++)
    	{
    		mysql_data_seek($result,$i);
    		$champs=mysql_fetch_array($result);
    		echo "<tr align=\"center\">";
    		echo '<form method="post" action="modif.php">';
    		for($j=0;$j<10;$j++)
    		{
    			if($j==0)
    				echo '<td><input type="checkbox" name="choixModif" value="'.$champs[0].'"></form></td>';
    			echo '<td>'.$champs[$j].'</td>';
    		}
    		echo "</tr>";
    	}
    	echo "</table>";
    	echo '<input type="submit" value="Valider votre choix" onClick="window.close();"></form>';
     
    ?>
     
    //la page principale qui génère le popup (modif.php)
    <?php
    	import_request_variables("p","recu_");
    	[ ... ]
    	$result = mysql_query("SELECT * FROM baie_port");
    ?>
    <html>
    	<head>
    		<title>Modifier</title>
    	</head>
    	<SCRIPT language="JavaScript">
    		f=open("modifpop.php",'','width=710,height=400,top=0,left=0,toolbar=no,scrollbars=yes,resizable=no,location=no,menubar=no');
     
    	</SCRIPT>
    	<body>
    		<table border="1" align="center">
     
    		<?php 
    			if(isset($_POST['recu_choixModif']))
    			{				
    				echo '<tr>';
    				$rows=count($_POST['recu_choixModif']);
    				for($i=0;$i<$rows;$i++)
    				{
    					mysql_data_seek($result,$_POST['recu_choixModif'][$i]);
    					$champs=mysql_fetch_array($result);
    					for($j=0;$j<10;$j++)
    					{
    						echo'<td>'.$champs[$j].'</td>';
    					}
    					echo"</tr>";
    				}
    			}
    		?>
    		</table>
    	</body>
    </html>

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Voici ce que je ferais.
    1) Tu fais pointer ton formulaire de ta popup vers lui-même.
    2) Au chargement de la popup, tu testes si les données ont été envoyées. Si non : tu affiches le formulaire. Si oui, tu les passes en session, et par js, tu actualise ta fenêtre principale et tu fermes ta popup.
    3) Dans ta fenêtre principale, tu testes la présence des variables de session. Si oui, tu affiches les lignes correspondantes.

    Autre solution sans les sessions : tu changes le code js pour non plus actualiser la page principale, mais charger cette même page avec des GET.
    Je ne sais pas si je suis assez clair

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Ne t'iquiète pas j'ai compris toutes les étapes que tu me décris, par contre j'ai peur de ne pas réussir pq j'ai vraiment trop de mal à me remettre au PHP.
    alors tu voudrais que je mette :
    echo '<form method="post" action="modifpop.php">';
    et que je rajoute un truc du genre :

    if(isset($_POST['choixModif']))
    {
    $a=$_POST['choixModif'];
    $_SESSION[$a];
    }
    else
    afftable();

    ?(je ne suis pas du tout sur que cette dernière fonctionne)
    et je ne voi pas comment on passe ensuite les valeurs

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Diafwl
    alors tu voudrais que je mette :
    echo '<form method="post" action="modifpop.php">';
    Exactement.
    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(isset($_POST['choixModif']))
    {
    // tu valides tes POST, puis :
    $_SESSION['choixModif']=$_POST['choixModif'];
    // tu envoies les headers de ta popup, puis tu actualises la fenêtre maîtresse et tu fermes la popup :
    echo '<body onload="opener.reload(); window.close();">';
    }
    else
    afftable();
    Puis, dans ta page maîtresse, tu fais le même test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (isset($_SESSION['choixModif']))
    {
    // tu affiches tes lignes à modifier
    ...
    // suppression des variables de session
    unset ($_SESSION['choixModif']);
    }
    else
    {
    // tu affiches la page normale (avant popup)
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Je pense que j'ai fais ce que tu m'as di mais sa ne marche pas, la page ne serecharge pas, et ne se ferme plus, aucune modifacation dans la page maitresse. Vois tu une erreur dans la popup?J

    //popup
    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
     
    if(isset($_POST['choixModif']))
    {
    	$_SESSION['choixModif']=$_POST['choixModif']; 
    	echo '<body onload="opener.reload(); window.close();">';
    }
    else
    {
    	echo"<table border=\"1\" align=\"center\">";
    	for($i=0;$i<mysql_num_rows($result);$i++)
    	{
    		mysql_data_seek($result,$i);
    		$champs=mysql_fetch_array($result);
    		echo "<tr align=\"center\">";
    		echo '<form method="POST" action="modifpop.php">';
    		for($j=0;$j<10;$j++)
    		{
    			if($j==0)
    				echo '<td><input type="checkbox" name="choixModif" value="'.$champs[0].'"></form></td>';
    				echo '<td>&nbsp;'.$champs[$j].'&nbsp;</td>';
    		}
    		echo "</tr>";
    	}
    	echo "</table>";
    	echo '<input type="submit" value="Valider votre choix"></form>';
    }
    Je ne suis pas sûr de la bonne utilisation du foreach :

    //page maitresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (isset($_SESSION['choixModif']))
    {
    	foreach ($_SESSION['choixModif'] as $key => $value) 
    	{
    		echo "ID = $key : value = $value<br>\n";
    	}
    	unset ($_SESSION['choixModif']);
    }
    else
    {
    	echo "pas encore fait/rat&eacute;";
    }

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Attention : le code que je t'ai envoyé est un principe, ce n'est pas directement exécutable.
    En XHTML, le résultat doit être le suivant :
    1) Si les POST n'ont pas été envoyés :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>XXX</title>
    </head>
     
    <body>
     
    Ton tableau avec cases à cocher.
     
    </body>
     
    </html>
    2) Si tes POST ont été envoyés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>XXX</title>
    </head>
     
    <body onload="opener.reload(); window.close();">
    </body>
     
    </html>
    A toi de coder pour arriver à ce résultat.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Désolé, j'ai fait une erreur. Le bon code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="opener.location.reload();window.close();">

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    J'ai écrit ce que tu m'a donné mais lorsque je clic sur le bouton valider, rien ne se passe,par contre si je rajoute un onClick="opener.location.reload();" je vois bien les pages se réactualiser mais rien ne se transmet !
    Voilà ce que j'ai fait :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <?php
     
    	[ ... ]
    	$result = mysql_query("SELECT * FROM baie_port"); 
     
    	if(isset($_POST['choixModif']))
    	{
    		$_SESSION['choixModif']=$_POST['choixModif']; 
    		echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    		<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    
    		<head>
    			<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    			<title>poopup</title>
    		</head>
    
    		<body onload="opener.location.reload(); window.close();">
    		</body>
    
    		</html>';
     
    		echo '<body onload="opener.location.reload();window.close();">';
    	}
    	else
    	{
    		echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    		<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    
    		<head>
    			<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    			<title>popup</title>
    		</head>
    
    		<body>';
     
    		echo"<table border=\"1\" align=\"center\">";
    		for($i=0;$i<mysql_num_rows($result);$i++)
    		{
    			mysql_data_seek($result,$i);
    			$champs=mysql_fetch_array($result);
    			echo "<tr align=\"center\">";
    			echo '<form method="POST" action="modifpop.php">';
    			for($j=0;$j<10;$j++)
    			{
    				if($j==0)
    					echo '<td><input type="checkbox" name="choixModif" value="'.$champs[0].'"></form></td>';
    				echo '<td>&nbsp;'.$champs[$j].'&nbsp;</td>';
    			}
    			echo "</tr>";
    		}
    	echo "</table>";
    	echo '<input type="submit" value="Valider votre choix"></form>';
     
    	echo '</body>
    	</html>';
    	}
    ?>

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu envois 2 fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<body onload="opener.location.reload();window.close();">';
    A la place de la 2e fois, code plutôt :
    Ensuite, fais un
    au début de ta fenêtre principale pour voir ce qui est transmis en session.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Voilà ce que me produit le print_r :


    Notice: Undefined variable: _SESSION in c:\program files\easyphp1-8\www\stage\modif.php on line 12

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    J'avais oublié le session_start !
    Mais meme en le rajoutant le tableau reste vide !

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Et as-tu mis le session_start() dans ta popup ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    ouaip, d'ailleur j'ai changé la place du echo '<form method="POST" action="modifpop.php">'; en le plaçant avant la boucle " for "!

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Et en essayant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['choixModif']=$_POST;
    Tu devrais aussi faire un dans ton popup pour voir ce qui passe en POST.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    C bien ce que je pensais le post reste vide (j'ai placé le print_r() un peut partout), le submit n'envoie rien du tout je vois pas pourquoi ! :

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Peux-tu poster le HTML produit au premier affichage de ta popup ? (source de la page)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    regarde cette partie du code du popup :
    if($j==0)
    echo '<td><input type="checkbox" name="choixModif" value="'.$champs[0].'"></form></td>';
    echo '<td>&nbsp;'.$champs[$j].'&nbsp;</td>';

    en fait je fermais le formulaire avant le submit
    donc il faut supprimer le </form>
    et il faut modifier le name par "choixModif[]" car sinon on ne recupère que la dernière valeur selectionnée.
    donc sa marche merci beaucoup vg33

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    ah oui sauf que lorsque la page se recherge elle relance la popup, à ton avis faut-il que j'utilise un autre isset?

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Avec plaisir

  20. #20
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Diafwl
    ah oui sauf que lorsque la page se recherge elle relance la popup, faut-il que j'utilise un autre isset?
    Bien sûr. Tu testes si les variables de sessions existent.
    NB : n'oublie pas de supprimer ces variables après utilisation (unset()).

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Tableaux] Checkbox dans un tableau
    Par mxmorin dans le forum Langage
    Réponses: 9
    Dernier message: 02/06/2006, 14h35
  2. [Tableaux] Probléme Tableau et lien
    Par bullrot dans le forum Langage
    Réponses: 6
    Dernier message: 11/12/2005, 19h48
  3. [Generics][Tableaux][Collections] Tableau liste entiers
    Par MyGoddess dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/11/2005, 12h44
  4. [Tableaux] Probléme Tableau / Menu
    Par carnage_59 dans le forum Langage
    Réponses: 7
    Dernier message: 13/10/2005, 13h34
  5. [Tableaux] Probleme tableau
    Par chocobos dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2005, 11h34

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