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

PHP & Base de données Discussion :

Récuperer mes valeur de checkox qui sont dans un IFRAME [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut Récuperer mes valeur de checkox qui sont dans un IFRAME
    Bonjour a tous.

    Pour des raisons d'esthétique et de simplicité, j'ai une page dans laquelle se trouve un formulaire pour ajouter un contact ( nom, prenom,etc ) et dans cette page j'ai un Iframe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <fieldset>
    			<legend>Report interest</legend>
     
    				<IFRAME src="Reports/listingreports.php" width="100%" height="200px" scrolling="auto" frameborder="0"></IFRAME>
     
    		</fieldset>
    Dans listingreports.php je liste en faite une table de données qui est formatée en tableau.

    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
    <?php 
    	// Connecxion au serveur mysql
     
    	// Connexion a la base de donnée : 
     
     
    	$reponse = mysql_query("SELECT * FROM reports WHERE Listing=1 ORDER BY Name "); // Requête SQL 
     
    	// Compte le nombre d'entrées que l'on va lister
    	$req = mysql_query("SELECT COUNT(*) as nbr FROM reports WHERE Listing=1");
    	$row = mysql_fetch_array($req);
    	$nbrentree = $row['nbr']; 
     
    	echo'<table id="separation">';
    		// Puis on fait une boucle pour tout afficher.
    		for ($numero = 1; $numero<$nbrentree+1; $numero++)
    		{ 
    		$donnees = mysql_fetch_array($reponse);
      		echo '<tr>
    				<td class="col3"><input  type="checkbox" value="'. $donnees['Id_reports'] .'"/>  
              		<td class="col4">' . $donnees['Name'] . '</td>';
              		$date= substr_replace($donnees['Date'], '', 7, 3);
              		echo '<td class="col5">' . $date . '</td>
            	  </tr>';
    		}
     
    	mysql_close(); // Déconnexion de MySQL
    	?>

    j'ai donc dans mon iframe : une check box ( qui prends comme valeurs l'id_report - le nom du rapport - sa date

    Je voudrais en faite quand je clic sur mon bouton du formulaire récupérer mes checkbox qui sont cochées dans mon IFRame.

    Si vous pouviez m'aider.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour, qu'est ce qui ne marche pas, d'autres parts la génération de ta liste était largement optimisable.

    Pour récupérer les valeurs des <input/> il faut que ceux-ci aient un attribut name.

    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
    <?php 
    	// Connecxion au serveur mysql		  
    	// Connexion a la base de donnée : capgemini	   
    	$reponse = mysql_query("SELECT * FROM reports WHERE Listing=1 ORDER BY Name "); // Requête SQL  	
    	$nb_entrees = mysql_num_rows($reponse); // variable inutilisée
    	echo'<table id="separation">';
    		// Puis on fait une boucle pour tout afficher.
    		while($donnees = mysql_fetch_array($reponse))
    		{ 
      		echo '<tr>
    			<td class="col3"><input  type="checkbox" value="'. $donnees['Id_reports'] .'" name="cb[]"/>  
              		<td class="col4">' . $donnees['Name'] . '</td>';
              		$date= substr_replace($donnees['Date'], '', 7, 3);
              		echo '<td class="col5">' . $date . '</td>
            	      </tr>';
    		}
     
    	mysql_close(); // Déconnexion de MySQL
    	?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $_POST['cb'] contient la liste des cases cochées.
    $_POST['cb'][0] est le premier élément coché.
     
    echo 'Vous avez coché : ';
    foreach($_POST['cb'] as $cb){
       echo $cb;
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    d'autres parts la génération de ta liste était largement optimisable.
    Pourquoi elle serait-elle optimisable ?

    Pour récupérer les valeurs des <input/> il faut que ceux-ci aient un attribut name.
    oui j'ai mis value="" mais c'etait plutot le name="" que je devais mettre.

    si je met simplement ceci cela récupère mes valeurs dans l'iframe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_POST['cb'] contient la liste des cases cochées.
    $_POST['cb'][0] est le premier élément coché.
    je test !

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    [QUOTE=bullrot;3740240]Pourquoi elle serait-elle optimisable ?[QUOTE]
    Regarde le code que j'ai écris au-dessus. Toi tu faisais un requête de séléction, une requête pour compter le nombre d'enregistrements et tu bouclais dessus avec une boucle POUR.

    Moi je fais une requête et je la parcours, après si tu veux connaitre le nombre d'enregistrements que celle-ci renvoie, utilises mysql_num_rows(); a la place d'executer une seconde requête.

    Citation Envoyé par bullrot Voir le message
    oui j'ai mis value="" mais c'etait plutot le name="" que je devais mettre.
    NOn, tu peux laisser value="" mais il faut mettre name="quelquechose", car ce name représente le nom du champ et donc c'est ce nom qui te permettra de le récupérer en PHP une fois le formulaire validé.
    Citation Envoyé par bullrot Voir le message
    si je met simplement ceci cela récupère mes valeurs dans l'iframe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_POST['cb'] contient la liste des cases cochées.
    $_POST['cb'][0] est le premier élément coché.
    je test !
    Non, je t'ai donné la technique pour récupérer les valeurs cochées, de plus, à savoir que pour récupérer les valeurs dansl 'iframe, il faut que le code PHP se trouve dans l'iframe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // liste toutes les valeurs cochés, apres tu en fais ce que tu souhaites
    foreach($_POST['cb'] as $cb){
     echo $ cb
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    Alors j'ai essayé ceci:

    Dans mon iframe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for ($numero = 1; $numero<$nbrentree+1; $numero++)
    		{ 
    		$donnees = mysql_fetch_array($reponse);
      		echo '<tr>
    				<td class="col3"><input type="checkbox" value="1" name="cb[]"/>  
              		<td class="col4">' . $donnees['Name'] . '</td>';
              		$date= substr_replace($donnees['Date'], '', 7, 3);
              		echo '<td class="col5">' . $date . '</td>
            	  </tr>';
    		}
    et dans ma page principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $rapports=$_POST['cb'];
     
     
     
     	echo 'Vous avez coché : ';
    	foreach($_POST['cb'] as $cb)
    	{
       	echo $cb;
    	}
     
    	}
    j'ai 2 erreur :

    Notice: Undefined index: cb in C:\Program Files\EasyPHP 2.0b1\www\SellMate\Contacts\addcontacts.php on line 554
    Vous avez coché :
    Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP 2.0b1\www\SellMate\Contacts\addcontacts.php on line 559

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Comme dit précédemment, le code PHP de récupération des checkbox cochés doit se faire dans l'iframe.

    Aussi ce code ne doit ête exécuté que si l'on est sur un postback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if(isset($_POST['cb'])){
        $rapports = $_POST['cb'];		
        echo 'Vous avez coché : ';
        foreach($rapports as $rapport){
            echo $rapport;
        }
    }
    Ya un truc que j'ai pas du comprendre aussi, pourquoi tu fais une boucle for puis une boucle while ?

    Je te redonne une seconde fois le code correct pour écrire les checkbox :
    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
    <?php 
    	// Connecxion au serveur mysql		  
    	// Connexion a la base de donnée : capgemini	   
    	$reponse = mysql_query("SELECT * FROM reports WHERE Listing=1 ORDER BY Name "); // Requête SQL  	
    	$nb_entrees = mysql_num_rows($reponse); // variable inutilisée
    	echo'<table id="separation">';
    		// Puis on fait une boucle pour tout afficher.
    		while($donnees = mysql_fetch_array($reponse))
    		{ 
      		echo '<tr>
    			<td class="col3"><input  type="checkbox" value="'. $donnees['Id_reports'] .'" name="cb[]"/>  
              		<td class="col4">' . $donnees['Name'] . '</td>';
              		$date= substr_replace($donnees['Date'], '', 7, 3);
              		echo '<td class="col5">' . $date . '</td>
            	      </tr>';
    		}
     
    	mysql_close(); // Déconnexion de MySQL
    	?>

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    J'avais pas vu ta reponse.

    Effectivement j'ai adapté comme ton code qui est bien mieux! une requête au lieu de 2

    Oups! j'ai mis ma récupération des données dans la page principale.

    En fait sur ma page principale je fais une serie de test pour savoir si le nom est rempli, le prenom, etc...
    ensuite si toutes les conditions sont remplies je recupere mes données et ensuite je fais apel a une fonction qui se charge d'ajouter dans ma bdd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Verification si le Nom est deja utilisé
      		$Resultat=mysql_query("SELECT * FROM `contacts` WHERE `Last_name` LIKE '$lname'");
      		if (mysql_numrows($Resultat)==0) // Le Nom n'est pas encore utilisé => on enregistre le Contact	
      		{
    		addcontact($gender,$lname,$rapports);	   /* appel de la fonction qui se charge d'ajouter un contact */	 
    		}
    c'est pour cela que j'avais récupérer ma valeurs cb dans la page principale!

    mais comment faire passer ma variables $rapports dans la page principale ?

  8. #8
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Si ton action de ton formulaire qui est dans l'iframe pointe vers ta page principale, c'est l'iframe qui sera redirigée vers la page principale.

    Tu peux peut-être t'orienter vers l'attribut target du formulaire.

  9. #9
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Enleve [] c'est un erreur de ma part.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/12/2010, 11h39
  2. Comment éviter que google répete des mots qui sont dans la description du meta tag
    Par tese84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/09/2006, 07h55
  3. Réponses: 1
    Dernier message: 29/08/2006, 14h45
  4. Réponses: 3
    Dernier message: 18/07/2006, 10h17
  5. Utiliser les options qui sont dans ma table
    Par valery17 dans le forum Access
    Réponses: 1
    Dernier message: 21/04/2006, 22h45

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