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

Requêtes MySQL Discussion :

Resultat requete incoherent


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut Resultat requete incoherent
    Bonjour a tous et a toutes,

    Je fais appel a votre aide car j'ai une requete SQL qui est très étrange.

    Lorsque je la lance dans PHPMYADMIN il me trouve bien les resultats que je veux, pourtant lorsque je lance mon code je n'ai pas la meme chose...

    Pouvez vous m'expliquer ou j'ai pu faire une erreur car je ne vois pas du tout...

    Voici ma requete dans PHPMyadmin :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (SELECT reference, type FROM tj_descriptif_moteur JOIN t_descriptifs
    ON t_descriptifs.reference = tj_descriptif_moteur.ref_descriptif
    WHERE conf_moteur = 'PACK A' AND module='MA' AND type='Descriptif Montage')
    UNION
    (SELECT reference, type FROM tj_descriptif_moteur JOIN t_descriptifs
    ON t_descriptifs.reference = tj_descriptif_moteur.ref_descriptif
    WHERE conf_moteur = 'PACK A' AND module='MA' AND type='Descriptif Complementaire')

    Et voici mon code PHP :
    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
    						//creation des variables
    						$conf = $_POST['conf'];
    						$module = $_POST['module'];
     
    						//affichage en abscisse la liste des moteurs choisis
    						$sql_liste_moteurs = "SELECT id FROM t_moteurs WHERE conf='$conf' ORDER BY cle ASC";
    						$req_liste_moteurs = mysqli_query($conn, $sql_liste_moteurs);
     
    						//requete concernant les Descriptifs montage choisis
    						$sql_refs_desc_montage = "(SELECT reference, type FROM tj_descriptif_moteur JOIN t_descriptifs
    						ON t_descriptifs.reference = tj_descriptif_moteur.ref_descriptif
    						WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Montage')
    						UNION
    						(SELECT reference, type FROM tj_descriptif_moteur JOIN t_descriptifs
    						ON t_descriptifs.reference = tj_descriptif_moteur.ref_descriptif
    						WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Complementaire')";

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Vous devez avoir un problème dans l'alimentation de vos host variables

    De plus, avoir des typologies (domaines de valeurs) sous forme de libellé n'est pas une bonne chose
    - type='Descriptif Complementaire' ou 'Descriptif Montage' serait avantageusement remplacé par un code, qui pointe sur une table renvoyant le libellé
    - conf_moteur = 'PACK A' : même combat

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    En gros vous me conseillez de mettre des codes génériques au lieu des libellés ?
    Par ex : DM pour Descriptif Montage, DC pour descriptif complémentaire, etc... ? Et ensuite faire une jointure avec une table regroupant tous les types de documents connus ?

    Selon vous c'est cela qui cause mon problème ?

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par double-m Voir le message
    En gros vous me conseillez de mettre des codes génériques au lieu des libellés ?
    Par ex : DM pour Descriptif Montage, DC pour descriptif complémentaire, etc... ? Et ensuite faire une jointure avec une table regroupant tous les types de documents connus ?
    Oui, car
    - c'est beaucoup plus simple pour la saisie utilisateur
    - ça vous affranchit des problèmes de majuscules/minuscules, accents, séparateurs (blancs, tirets...)
    - ça fiabilise vos contrôles
    - ça réduit la taille de vos tables (qui ne connaissent que le code, sauf la table de référence)

    Citation Envoyé par double-m Voir le message
    Selon vous c'est cela qui cause mon problème ?
    Dans ce cas précis, non, mais d'une façon générale, l'utilisation de libellés au lieu de codes est une source de problèmes
    Idéalement, appuyez vous dans la mesure du possible sur les normes ISO, ça vous facilitera la vie pour les échanges avec l'extérieur (en réduisant aux valeurs utilisées dans votre contexte)

  5. #5
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Ton exemple php qui pose problème n'est pas complet, il manque l'appel de la requête et le traitement du résultat.

    Car si ta requête est bonne,c'est peut-être ton php qui ne l'est pas.
    D'ailleurs tu n'as pas décrit ce que "je n'ai pas la meme chose" veut dire : plus ou moins de résultat, résultats faux ?

    Est-ce que lorsque tu débogues ou affiche $conf, $module ou $sql_refs_desc_montage, les valeurs sont bonnes ?
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par ddoumeche Voir le message
    Ton exemple php qui pose problème n'est pas complet, il manque l'appel de la requête et le traitement du résultat.

    Car si ta requête est bonne,c'est peut-être ton php qui ne l'est pas.
    D'ailleurs tu n'as pas décrit ce que "je n'ai pas la meme chose" veut dire : plus ou moins de résultat, résultats faux ?

    Est-ce que lorsque tu débogues ou affiche $conf, $module ou $sql_refs_desc_montage, les valeurs sont bonnes ?
    Merci beaucoup pour vos reponses.

    En fait pour l'instant je ne controle que le contenu de $data descriptifs qui doit me sortir mes references de documents (Descriptif montage et Descriptifs complementaires confondus via la requete UNION ci dessous)

    En effet je me suis apercu que si je ne vous donne pas toutes les infos vous n'allez pas pouvoir m'aider...

    Ce qu'il se passe c'est que j'ai moins de résultats que prévus.
    En gros avec cette requête je devrais trouver 1 descriptif de montage et 5 descriptifs complementaires.

    Or il ne me sort qu'un seul descriptif complémentaire...

    Voici mon code PHP (je n'ai pas encore fini de l'optimiser donc soyez indulgents) :
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    		<?php 
    		require_once("includes/header.html");
    		require_once("includes/connexion_db.php");
    		?>
     
     
    			<!-- DEBUT DE LIGNE DU FORMULAIRE DE CHOIX -->
    			<div class="row">
    				<div class="col-lg-12 table-bordered well"><!--Colonne des choix -->
    					<form class="form-inline text-center" method="post" action=""><!-- formulaire de groupes de descriptifs -->
    					<legend>Afficher synthese des Documents Montage par CONF</legend>				
     
    					<label for="conf">CONFIGURATION</label>
    						<select class="form-control" name="conf">
    							<option value=""></option>
    							<option value="STD 1+">STD 1+</option>
    							<option value="PACK A">PACK A</option>
    							<option value="SERIE">SERIE</option>
    							<option value="CERTIF">CERTIF</option>
    							<option value="FTB2">FTB2</option>
    						</select>
     
    					<label for="module">MODULE</label>
    						<select class="form-control" name="module">
    							<option value="MA">MA</option>
    							<option value="MM1">MM1</option>
    							<option value="MM2">MM2</option>
    							<option value="MM3">MM3</option>
    							<option value="Mm4">Mm4</option>
    							<option value="Mm5">Mm5</option>
    							<option value="Mm8">Mm8</option>
    							<option value="Mm23">Mm23</option>
    							<option value="KIT G">KIT G</option>
    							<option value="KIT D">KIT D</option>
    							<option value="EBU G">EBU G</option>
    							<option value="EBU D">EBU D</option>
    						</select>
    						<button class="btn btn-primary" type="submit" name="submit" value="Recherchez">Rechercher</button>	
    					</form><!-- fin formulaire descriptif unitaire -->
    				</div><!--fin zone formulaires-->
     
    				<!-- COLONNE AFFICHAGE RESULTATS-->	
    				<div class="col-lg-12">			
    					<?php
    					if (isset($_POST['submit'])) {
    						//creation des variables
    						$conf = $_POST['conf'];
    						$module = $_POST['module'];
     
    						//affichage en abscisse la liste des moteurs choisis
    						$sql_liste_moteurs = "SELECT id FROM t_moteurs WHERE conf='$conf' ORDER BY cle ASC";
    						$req_liste_moteurs = mysqli_query($conn, $sql_liste_moteurs);
     
    						//requete concernant les Descriptifs montage choisis
    						$sql_refs_desc_montage = "(SELECT reference, type FROM tj_descriptif_moteur JOIN t_descriptifs
    						ON t_descriptifs.reference = tj_descriptif_moteur.ref_descriptif
    						WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Montage')
    						UNION
    						(SELECT reference, type FROM tj_descriptif_moteur JOIN t_descriptifs
    						ON t_descriptifs.reference = tj_descriptif_moteur.ref_descriptif
    						WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Complementaire')";
     
    						$req_refs_desc_montage = mysqli_query($conn, $sql_refs_desc_montage);
     
    						//requete concernant les Moteurs des descriptifs montage choisis
    						$sql_confs_desc_montage = "(SELECT ref_descriptif, id_moteur FROM tj_descriptif_moteur INNER JOIN t_descriptifs
    						ON tj_descriptif_moteur.ref_descriptif = t_descriptifs.reference 
    						WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Montage' 
    						GROUP BY id_moteur ORDER BY cle_moteur)
    						UNION
    						(SELECT ref_descriptif, id_moteur FROM tj_descriptif_moteur INNER JOIN t_descriptifs
    						ON tj_descriptif_moteur.ref_descriptif = t_descriptifs.reference 
    						WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Complementaire' 
    						GROUP BY id_moteur ORDER BY cle_moteur)";
    						$req_confs_desc_montage = mysqli_query($conn, $sql_confs_desc_montage);					
     
    						//Boucle affichage des moteurs de la conf choisie en ordonnée
    						$data_moteurs = array();	
    						while ($result_mot = mysqli_fetch_assoc($req_liste_moteurs)){
    							$data_moteurs[$result_mot['id']]= $result_mot;							
    						}
    						//data_descriptif contient toutes les données des descriptifs de la table descriptifs, indéxé sur la clé descriptif
    						$data_descriptif = array();
    						while($result_desc = mysqli_fetch_assoc($req_refs_desc_montage)){
    							$data_descriptif['reference'] = $result_desc;
    						}
     
    						//$data_jointure contient les données de jointure des descriptifs montage
    						$data_jointure = array();
    						while($result_joint = mysqli_fetch_assoc($req_confs_desc_montage)){
    							$data_jointure[$result_joint['id_moteur']][$result_joint['ref_descriptif']] = $result_joint;
    						}
     
    						print_r($data_descriptif);
     
    						echo "<table class='table table-striped table-hover table-bordered table-condensed'>";
    							echo "<tr>";
    								echo "<th>REFERENCE</th>";
    								echo "<th>TYPE</th>";
    									foreach($data_moteurs as $moteur){
    										echo "<th>".$moteur['id']."</th>";
    									}
    									foreach($data_descriptif as $descriptif){
    										echo"<tr>";
     
    											echo "<td>".$descriptif['reference']."</td>";
    											echo "<td>".$descriptif['type']."</td>";
     
    												   foreach($data_moteurs as $moteur){
    														echo "<td class='text-center'>";
    															if(isset($data_jointure[$moteur["id"]])){
     
    																if(isset($data_jointure[$moteur["id"]][$descriptif["reference"]])){
    																//descriptif valable pour ce moteur
    																	echo "X";
    																}
    															}
     
    															else{
    															//non valable pour ce moteur
    																echo "";
    															}
    														echo "</td>";
    												   }
    										echo "</tr>";
    									}
    						echo "</table>";
    					}
    					?>
     
    				</div><!-- fin d'affichage des resultats -->
    			</div><!-- fin de ligne -->
    		</div><!-- fin du container -->
    	</body>
    </html>

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Bonjour,

    Je ne comprends toujours pas...

    J'ai simplifié les codes de mes types de documents et pourtant le resultat de ma requete dans PHPMYADMIN et mon code PHP ne donnent pas les memes resultats.
    Dans PMA je trouve 3 resultats et mon script PHP ne me sort qu'un seul document...

    Voici le resultat de la requete dans PMA :
    Nom : Screenshot_5.jpg
Affichages : 78
Taille : 26,7 Ko

    Et mon 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
    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
    64
    65
    66
    67
    68
    69
    70
    71
    		<?php 
    		require_once("includes/header.html");
    		require_once("includes/connexion_db.php");
    		?>
     
     
    			<!-- DEBUT DE LIGNE DU FORMULAIRE DE CHOIX -->
    			<div class="row">
    				<div class="col-lg-12 table-bordered well"><!--Colonne des choix -->
    					<form class="form-inline text-center" method="post" action=""><!-- formulaire de groupes de descriptifs -->
    					<legend>Afficher synthese des Documents Montage par CONF</legend>				
     
    					<label for="conf">CONFIGURATION</label>
    						<select class="form-control" name="conf">
    							<option value="STD1+">STD 1+</option>
    							<option value="STD1">STD 1</option>
    							<option value="SERIE">SERIE</option>
    							<option value="CERTIF">CERTIF</option>
    							<option value="FTB2">FTB2</option>
    						</select>
     
    					<label for="module">MODULE</label>
    						<select class="form-control" name="module">
    							<option value="MA">MA</option>
    							<option value="MM1">MM1</option>
    							<option value="MM2">MM2</option>
    							<option value="MM3">MM3</option>
    							<option value="Mm4">Mm4</option>
    							<option value="Mm5">Mm5</option>
    							<option value="Mm8">Mm8</option>
    							<option value="Mm23">Mm23</option>
    							<option value="KIT G">KIT G</option>
    							<option value="KIT D">KIT D</option>
    							<option value="EBU G">EBU G</option>
    							<option value="EBU D">EBU D</option>
    						</select>
    						<button class="btn btn-primary" type="submit" name="submit" value="Recherchez">Rechercher</button>	
    					</form><!-- fin formulaire descriptif unitaire -->
    				</div><!--fin zone formulaires-->
     
    				<!-- COLONNE AFFICHAGE RESULTATS-->	
    				<div class="col-lg-12">			
    					<?php
    					if (isset($_POST['submit'])) {
    						//creation des variables
    						$conf = $_POST['conf'];
    						$module = $_POST['module'];
     
    						echo $conf."<br>";
    						echo $module."<br>";
     
    						//affichage en abscisse la liste des moteurs choisis
    						$sql_liste_moteurs = "SELECT id FROM t_moteurs WHERE conf='$conf' ORDER BY cle ASC";
    						$req_liste_moteurs = mysqli_query($conn, $sql_liste_moteurs);
     
    						//requete concernant les Descriptifs montage choisis
    						$sql_refs_desc_montage = "SELECT reference FROM tj_descriptif_moteur JOIN t_descriptifs
    							 ON tj_descriptif_moteur.ref_descriptif = t_descriptifs.reference 
    							 WHERE tj_descriptif_moteur.conf_moteur = '$conf' AND t_descriptifs.module='$module' AND t_descriptifs.type='DC'";
    						$req_refs_desc_montage = mysqli_query($conn, $sql_refs_desc_montage);
    						$tab = mysqli_fetch_assoc($req_refs_desc_montage);
     
    						var_dump($tab);
    					}
    					?>
     
    				</div><!-- fin d'affichage des resultats -->
    			</div><!-- fin de ligne -->
    		</div><!-- fin du container -->
    	</body>
    </html>

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Bonsoir

    En relisant votre code posté hier PM, je constate que la requete suivante est invalide, votre groupage n'est pas cohérent avec les colonnes du select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //requete concernant les Moteurs des descriptifs montage choisis
    $sql_confs_desc_montage = "(SELECT ref_descriptif, id_moteur FROM tj_descriptif_moteur INNER JOIN t_descriptifs
    ON tj_descriptif_moteur.ref_descriptif = t_descriptifs.reference 
    WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Montage' 
    GROUP BY id_moteur ORDER BY cle_moteur)
    UNION
    (SELECT ref_descriptif, id_moteur FROM tj_descriptif_moteur INNER JOIN t_descriptifs
    ON tj_descriptif_moteur.ref_descriptif = t_descriptifs.reference 
    WHERE conf_moteur = '$conf' AND module='$module' AND type='Descriptif Complementaire' 
    GROUP BY id_moteur ORDER BY cle_moteur)";

  9. #9
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Citation Envoyé par double-m Voir le message
    En effet je me suis apercu que si je ne vous donne pas toutes les infos vous n'allez pas pouvoir m'aider...
    En fait, c'est la base du métier de conseil, à savoir arriver à faire poser les bonnes questions à son client.
    Quand on a la bonne question, la réponse va de soi.

    Citation Envoyé par double-m Voir le message
    Ce qu'il se passe c'est que j'ai moins de résultats que prévus.
    En gros avec cette requête je devrais trouver 1 descriptif de montage et 5 descriptifs complémentaires.

    Or il ne me sort qu'un seul descriptif complémentaire...

    84 while($result_desc = mysqli_fetch_assoc($req_refs_desc_montage)){
    85 $data_descriptif['reference'] = $result_desc;
    86 }
    Si je ne m'abuse, ce code va écraser le contenu de la variable $data_descriptif['reference'] par le résultat de votre requête, quelque soit le nombre d’occurrences.

    alors que le reste de vos fetch sont de la forme :
    $data_moteurs[$result_mot['id']]= $result_mot;

    où $data_moteurs contient donc une entrée par occurrence

    Essayez avec $data_descriptif[$result_mot['id']] = $result_desc;
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Y-a un truc bizarre dans vos deux requêtes.
    Sous PhpMyAdmin, vous faites : "SELECT reference FROM tj_descriptif JOIN t_descriptifs_moteur ..."
    Tandis en php, vous inversez : "SELECT reference FROM tj_descriptif_moteur JOIN t_descriptifs ...".
    Il est tout à fait normal de ne pas obtenir le même résultat.

    Si vous désirez obtenir les mêmes résultats, utilisez la même requête.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Merci beaucoup pour toutes ses réponses !!

    J'ai bien pris en compte vos remarques et je vais mettre a jour mon code pour y voir plus clair.

    J'avoue que je l'ai tellement tourné dans tous les sens pour tester que j'en ai fait n'importe quoi...

    J’espère résoudre mes bugs avec vos conseils, je vous tiens au courant.

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Bonjour a tous,

    Alors hier soir j'ai appliqué vos conseils avisés et j'ai remis a jour mon code.
    Malheureusement j'ai toujours le meme souci...

    En faisant un déboguage barbare je me suis rendu compte que le probleme etait meme pire que ce que je pensais.

    Meme en refaisant une base de données simplifiée avec une requete ultra simple je n'arrive pas a avoir ce que je veut.

    En gros j'ai vider toute ma table t_descriptifs et je n'ai mis que deux documents de type "DC" qui ont pour noms TEST et BLABLA.

    Et meme avec une requete simple il ne me trouve qu'une seule reference de "DC" qui est TEST (il ne voit meme pas l'autre)
    Je ne vois vraiment pas ce qui cloche sur ce code, je commence a devenir taré...

    IL y a sans doutes quelque chose qui m'echappe mais je ne vois pas quoi, voici le code ultra simplifié :
    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
    		<?php 
    		require_once("includes/header.html");
    		require_once("includes/connexion_db.php");
    		?>
     
     
    			<!-- DEBUT DE LIGNE DU FORMULAIRE DE CHOIX -->
    			<div class="row">
    				<div class="col-lg-12 table-bordered well"><!--Colonne des choix -->
    					<form class="form-inline text-center" method="post" action=""><!-- formulaire de groupes de descriptifs -->
    					<legend>Afficher synthese des Documents Montage par CONF</legend>				
     
    					<label for="conf">CONFIGURATION</label>
    						<select class="form-control" name="conf">
    							<option value="STD1+">STD 1+</option>
    							<option value="STD1">STD 1</option>
    							<option value="SERIE">SERIE</option>
    							<option value="CERTIF">CERTIF</option>
    							<option value="FTB2">FTB2</option>
    						</select>
     
    					<label for="module">MODULE</label>
    						<select class="form-control" name="module">
    							<option value="MA">MA</option>
    							<option value="MM1">MM1</option>
    							<option value="MM2">MM2</option>
    							<option value="MM3">MM3</option>
    							<option value="Mm4">Mm4</option>
    							<option value="Mm5">Mm5</option>
    							<option value="Mm8">Mm8</option>
    							<option value="Mm23">Mm23</option>
    							<option value="KIT G">KIT G</option>
    							<option value="KIT D">KIT D</option>
    							<option value="EBU G">EBU G</option>
    							<option value="EBU D">EBU D</option>
    						</select>
    						<button class="btn btn-primary" type="submit" name="submit" value="Recherchez">Rechercher</button>	
    					</form><!-- fin formulaire descriptif unitaire -->
    				</div><!--fin zone formulaires-->
     
    				<!-- COLONNE AFFICHAGE RESULTATS-->	
    				<div class="col-lg-12">			
    					<?php
    					if (isset($_POST['submit'])) {
     
    						//requete concernant les Descriptifs montage choisis
    						$sql_refs_desc_montage = "SELECT * FROM t_descriptifs WHERE type='DC'";
    						$req_refs = mysqli_query($conn, $sql_refs_desc_montage);
     
    						$data_descriptif = mysqli_fetch_assoc($req_refs);
     
    						var_dump($data_descriptif);
     
    					}
    					?>
     
    				</div><!-- fin d'affichage des resultats -->
    			</div><!-- fin de ligne -->
    		</div><!-- fin du container -->
    	</body>
    </html>
    Merci d'avance pour votre aide.

  13. #13
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Bonjour,

    apparemment tu n'as pas compris le principe du jeu de résultat :

    Quand tu fais une requête via un client SQL, le serveur retourne un tableau de N colonnes nommées par M lignes avec indices (1,2,...X)
    Quand tu fais une requête via un langage de programmation, c'est la même chose :
    il faut se connecter au serveur de base de donnée,
    soumettre une requête
    traiter les résultats ligne à ligne

    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
    //disclaimer : ce code peut comporter des erreurs de syntaxe, du malware et d'autres instructions subversives. use at your own risk. cqfd
    
    //ouverture de la connexion à la base de données via une fonction commune par exemple
    var $conn = db_connect();
    
    // écriture et exécution de la requête 
    var $sql = "SELECT * FROM t_descriptifs WHERE type='DC'";
    var $req_refs = mysqli_query($conn, $sql);
    
    //parcours des résultats ligne à ligne, avec récupération d'une ligne sous forme de tableau associatif
    while($result = mysqli_fetch_assoc($req_refs)){
        printf("%s (%s)\n", $result["ref_descriptif"], $result["id_moteur"]);
    }
    // Libération des résultats
    $result->free();
    
    // Fermeture de la connexion (a faire obligatoirement)
    $conn->close();
    Je pense que ce fil devrait être d"placé dans la rubrique php
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

Discussions similaires

  1. incoherences dans le resultat requete sql hyperfile
    Par steph-declic dans le forum C#
    Réponses: 0
    Dernier message: 24/10/2014, 10h57
  2. [SQL2K] [TSQL] JEU ENIGME : Resultat Requete Incoherent
    Par jbpub dans le forum Développement
    Réponses: 0
    Dernier message: 04/03/2009, 14h46
  3. recuperation resultat requete
    Par mimilou dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 09/06/2004, 15h07
  4. Resultat requete dans une seule colonne
    Par mathieu--g dans le forum Sybase
    Réponses: 2
    Dernier message: 08/07/2003, 13h42
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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