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 :

SELECT avec une boucle for : perdu dans la syntaxe [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut SELECT avec une boucle for : perdu dans la syntaxe
    Bonjour ou plutôt bonsoir cela fait des heures que je cherche en vain : au secours!

    Je fais une requête sur 2 tables pour afficher un rapport d'essai de machine en pdf.
    Les sections de mon rapport sont contenues dans un tableau $seq_essais_array= array("HT","ST","elec","Finition"); (Elles peuvent varier en fonction de la machine)

    J'ai fais une boucle for pour balayer ce tableau et l'utiliser dans une requête sql afin de récupérer tous les champs contenant HT, puis ST...
    La syntaxe de la requête est un peu compliqué.
    Voici l'extrait du 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
    $mach_of='T456789';
    $seq_essais_array=array("HT","ST","elec","Finition");
     
    for ($i=0 ; $i < sizeof($seq_essais_array) ; $i++)
    {
    	// Préparation de la requête BDD pour les sections du rapport pdf
    	echo "<br/>".$seq_essais_array[$i];// Test affiche bien le contenu HT, ST, Elec, Finition
     
    	$sql = "SELECT resultats.question, ".$_SESSION['modele'].".controle, ".$_SESSION['modele'].".moyen, ".$_SESSION['modele'].".critere,resultats.reponse, resultats.controleur ";
    	$sql .= "FROM resultats, wsb5 ";
    	$sql .= "WHERE resultats.num_of='".$mach_of."' ";
    	$sql .= "AND resultats.une_sequence='".$seq_essais_array[$i]."' ";
    	$sql .= "AND resultats.une_sequence=wsb5.opt ";
    	$sql .= "AND resultats.question=wsb5.num ";
    	$sql .= "ORDER BY resultats.question ";
     
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    	$title = "Contrôle ".$seq_essais_array[$i]; // les titres s'affiche bien avec le contenu HT, ST, Elec, Finition
     
    	$data=array();
    	While ($uneLigne=mysql_fetch_array($req,MYSQL_ASSOC))
    	{
    		array_push($data,$uneLigne);
    	}
     
    	$pdf->ezTable($data,$cols,$title,$options);
    }
     
    // Affichage du pdf
    $pdf->ezStream();
     
    ?>
    A la 4ème ligne de ma requête sql : $sql .= "AND resultats.une_sequence='".$seq_essais_array[$i]."' "; j'obtiens une boucle infinie.

    Si je remplace par $sql .= "AND resultats.une_sequence='".$seq_essais_array[0]."' "; j'obtiens l'affichage mais que des valeurs concernant la section HT bien sûr. Le titre $title lui réagit bien aux itérations.

    Avez vous une idée? est ce que je me plante dans la syntaxe des variables car les '". je ne sais plus très bien après tous mes essais.
    A vous lire. Merci

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    bon bon bon
    conseil
    1. afficher le sql généré
    2. sortir le sizeof du for vu que c'est constant
    3. utiliser pdo et des variables binds dans cette requete simplissime
    4. ajouter un mysql_free_result($req);


    ceci dit,vu comme ça je vois pas ou est la boucle infinie,
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour les pistes.
    En fait le code était correct. Le problème était au niveau des données dans la base de données. J'ai refait le fichier excel en purgeant les quotes dans le texte et çà fonctionne.
    Je ne pensais pas que cela genait d'avoir des quotes...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/05/2013, 22h40
  2. Structure while avec une boucle for en test
    Par le_voisin dans le forum C++
    Réponses: 9
    Dernier message: 09/09/2006, 19h16
  3. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 16h50
  4. Incrémentation dynamique d'un textbox avec une boucle for
    Par Etanne dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/03/2006, 15h17
  5. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23

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