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 :

select tableau et options récupérer données php sql [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut select tableau et options récupérer données php sql
    Bonjour

    j'ai un fichier php formulaire_bdd.php et un fichier function_bdd.php

    dans le fichier function_bdd:

    Code php : 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 	   	//function_bdd.php (version PDO)		?>
    <?php
    //récupère les valeurs commune de chaque champ grace à "group_by" par champ
    
    function getDataRow($connectBdd=NULL,$fieldName=null ){
    	$req=	"	SELECT		$fieldName
    					FROM		$table
    					GROUP BY	$fieldName
    		";
    		
    		$recordsetPDO = $linkPDO->prepare($req);
    		$recordsetPDO->execute();
    		
    		$listRowsByField="";
    		
    while($row = $recordsetPDO->fetch(PDO::FETCH_ASSOC))
    		{		
    						
    			foreach($row as $column_index => $column_value)
    			{
    				//do something with the data,
    								
    				if (is_formulaire()){//verifie si je suis dans le formulaire
    					
    					//return $column_value;
    					//$listRowsByField[] = $column_value;
    					print $listRowsByField='<option value="'.$column_value.'">'.$column_value.'</option>';
    					
    				}
    				
    			}
    		}
    	//...
    	
    ?>		
    
    <?php
    //récupère le nom de chaque champ 
    function getDataField($connectBdd=NULL,$id=NULL){
    
    	if ($connectBdd=="PDO"){
    		
    		$recordsetPDO = $linkPDO->prepare("SELECT * from $table");
    		//$pdo_stmt = $recordsetPDO;
    		$recordsetPDO->execute();
    		
    		/**/
    		//$id;
    		foreach(range(0, $recordsetPDO->columnCount() - 1) as $column_index)
    		{
    			//echo "<pre>";var_dump($column_index);echo "</pre>";
    			
    			$meta[] = $recordsetPDO->getColumnMeta($column_index);
    		}	
    		return $meta[$id]["name"];
    		
    		//...
    ?>
    dans le fichier formulaire_bdd.php:

    j'arrive bien à récupérer les valeurs de chaque champs par une boucle sur le nombre de champ $nField =getMaxField("PDO");

    Code php : 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
    <?php
    $nField			=getMaxField("PDO");
    
    $i=1;
    ?>	
    <tbody> 
    	<?php 		while ($i < $nField){?>
    
    le nom de chaque champ séléctionné avant par 
    <input type='checkbox' name='listSelect[<?php print(getDataField("PDO",$i));?>]' />
    
    
    grace à name=listWhere[print(getDataField("PDO",$i));?>]
    
    mais c'est pour ce qui est des options je coince il me récupère qu'une seule même si je sélectionne plusieurs
    
    <select id='listWhere' 	class="field" 
    						name='listWhere
    							[<?php print(getDataField("PDO",$i));?>]
    							[<?php print getMaxRow("PDO",getDataField("PDO",$i));?>]' 
    							multiple size=2>
    
    							//(j'ai un peu tout essayé !)
    
     	   					<?php 
     	   						
     	   						getDataRow("PDO",getDataField("PDO",$i));
     	   					
     	   					?>
     	   				
    </select>
    //...
    pour ensuite les afficher plus loin une fois envoyer depuis le formulaire, la aussi j'ai un peu tout essayé et observé : double tableau,...
    <?php
    					/*
    					$listWhere[]		=$_POST['listWhere'];
    					$whereKeys			=implode(",",array_keys($listWhere[0]));
    					$whereValue			=implode(",",array_values($listWhere[0]));
    					*/
    					/*
    					echo "<pre>	array_keys:<br>"	;print_r(array_keys($listWhere[0]))			;echo "</pre>";
    					echo "<pre>	array_values:<br>"	;print_r(array_values($listWhere[0]))		;echo "</pre>";
    					echo "<pre> whereKeys:<br>"		;print_r($whereKeys)							;echo "</pre>";
    					echo "<pre> whereValue:<br>"	;print_r($whereValue)							;echo "</pre>";
    					*/
    				
    					$listWhere[][]	=$_POST['listWhere'];
    					//$whereValue2		=implode(",", array_column($listWhere, array_values($listWhere)));
    					//echo "<pre> whereValue2:<br>"	;print_r($whereValue2)							;echo "</pre>";
    						
    					echo "<pre>"					;var_dump($listWhere)						;echo "</pre>";
    ?>

    mais je ne vois vraiment pas comment faire pour récupérer plusieurs valeurs
    car cela me renvoie toujours qu'une seule valeur
    quand je sélectionne plusieurs options dans le formulaire grace à multiple du select !

    résultat je suis maintenant complétement perdu et n'arrive plus à réflechir au problème méthodiquement !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essaie *:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    name='listWhere
    	[<?php print(getDataField("PDO",$i));?>]
    	[<?php print getMaxRow("PDO",getDataField("PDO",$i));?>][]' 
    	multiple size="2">
    A noter : ...[]

    * Cela dit, je n'ai absolument rien compris à tes non-explications...

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Ca fonctionne très bien j'hésitais à créer un tableau à 3 dimensions mais c'est logique !
    par contre cela a fonctionné au début ensuite non ! car en voulant séparer le tableau pour plus de lisibilité et là bug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    name='listWhere
    [<?php print(getDataField("PDO",$i));?>]
    [<?php print(getMaxRow("PDO",getDataField("PDO",$i)));?>]
    []
    '
    Notice: Undefined index: listWhere in... ou des comportements très aléatoires sur le résultat,

    Je suis obligé de bien mettre en ligne tout le tableau!(je ne sais pas pourquoi ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name='listWhere[<?php print(getDataField("PDO",$i));?>][<?php print(getMaxRow("PDO",getDataField("PDO",$i)));?>][]'

    Sinon je cherche avant d'envoyer le formulaire de faire en sorte que si je ne coche pas sur,
    <label id='listSelect' class="field inline" for="listSelect"><?php echo getDataField("PDO",$i)?></label>
    <input id='listSelect' type='checkbox' name='listSelect[<?php print(getDataField("PDO",$i));?>]' />
    Je ne peux pas sélectionner dans la liste where.

    J'ai donc voulu le faire par js ou jquery mais je dois sérieusement fatigué.

    J'ai pourtant mis un peu de tout voyant que ça ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
     
    <!-- et même un simple après la première balise body  -->
    	<script type="text/javascript">
    			alert("hello");
    	</script>
    ça ne passe pas !!!

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    en fait le javascript fonctionne depuis ce matin sans rien avoir touché aucune ligne de code !!!
    Je suis sous wamp 3, peut-être que wamp a eu un coup de chaud ! j'en sais rien, "la magie d'internet [et de l'informatique]"?


    Sinon je cherche avant d'envoyer le formulaire de faire en sorte que si je ne coche pas sur,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <label id='listSelect' class="field inline" for="listSelect"><?php echo getDataField("PDO",$i)?></label>
    <input id='listSelect' type='checkbox' name='listSelect[<?php print(getDataField("PDO",$i));?>]' />
    Je ne peux pas sélectionner dans la liste listWhere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <select 
    					id='listWhere' 
    					name='listWhere[<?php print(getDataField("PDO",$i));?>][<?php print(getMaxRow("PDO",getDataField("PDO",$i)));?>][]' 
    					multiple size=2>
     
     	   					<?php 
     
     	   						getDataRow("PDO",getDataField("PDO",$i));
     
     	   					?>
     
    </select>
    Je pense le faire par js ou jquery comme j'ai vu sur plusieurs forums. Je ne vois pas comment le faire par php puisque je suis sur la page du formulaire déjà chargé.

    ps: pour les modérateurs : Est ce que je dois créer un nouveau sujet ? Ou est ce que c'est une extension de mon sujet "récupérer des données php sql" via mon formulaire en ligne ?

    Merci à tous !

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce serait sans doute mieux de créer un nouveau sujet dans le forum Javascript pour ta validation de case à cocher.

    Au passage, n'oublie pas que tout ce qui est fait fait côté client peut être bidouillé par l'utilisateur. Donc vérifie aussi si ta case est cochée côté PHP à la réception du formulaire.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    oui je sais comme je suis pour l'instant sous wamp c'est pas trop ma préoccupation
    bon ok donc ici résolu

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut

    Citation Envoyé par nouilletonne Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <label id='listSelect' class="field inline" for="listSelect"><?php echo getDataField("PDO",$i)?></label>
    <input id='listSelect' type='checkbox' name='listSelect[<?php print(getDataField("PDO",$i));?>]' />
    Un id doit être unique dans un document.

    A+.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par andry.aime Voir le message


    Un id doit être unique dans un document.

    A+.
    aïe j'ai honte du coup ! j'étais tellement absorbé par mon problème mais c''est pas bien quand même
    je crois aussi que j'ai laissé des id car c'était plus accessible en js avec document.getElementById(id) pour les tests

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

Discussions similaires

  1. Polymer récupérer donné PHP
    Par Boltor dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 17/04/2015, 12h14
  2. Récupérer données PROC SQL
    Par tidou95220 dans le forum Débutez
    Réponses: 4
    Dernier message: 12/03/2013, 11h02
  3. [PHP 5.2] Récupérer données PHP SESSION > Affichage HTML
    Par rjl dans le forum Langage
    Réponses: 3
    Dernier message: 03/08/2012, 23h55
  4. [MySQL] probleme pour récupérer les données php/sql
    Par xavioche77 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/01/2011, 17h44
  5. [SQL-Server] Pb Lecture données PHP / SQL Server
    Par julienduprat dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/09/2006, 10h41

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