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 :

Erreur de syntaxe sur ma requête SELECT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut Erreur de syntaxe sur ma requête SELECT
    Bonjour, j'ai 1 petit soucis avec des noms de fichiers contenu dans 1 table à afficher dans 1 select.

    voici l'erreur:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\rbdc\traitementmenu.php on line 210
    et mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    					<?php
    					$sqlfichiers = "select nomFichierj 
    								  from fichiersj 
    								  where numFiche = '${datamenu['numFiche']}'";
    					$reqfichiers = mysql_query($sqlfichiers) or die("Erreur : ". $sqlfichiers .'<br/>'. mysql_error());
    					while($datafichiers = mysql_fetch_row($reqfichiers))
    						{
    						echo "<option>$datafichiers['nomFichierj']</option>";
    						}
    					?>
    					</select>
    Il doit donc afficher tout les noms de fichier "1 champ" dans le select les uns a la suite des autres.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je n'arrête pas de militer contre les guillemets doubles ^^ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option>'.$datafichiers['nomFichierj'].'</option>';

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Merci, il m'affiche pu d'erreur par contre, mon select est vide, mais quand je clic dessu il contient bien le nombre de champs correspondants dans la table. mais vide, sans espace, sans longueur lié au champ, "rien"

  4. #4
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    je copie colle tjrs ce code...

    mais n'est ce pas mysql_fetch_into ou mysql_fetch_array (tableau et tableau associatif) ?

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    @XtofRoland : Une bonne fois pour toutes, lis le manuel sur chacune des fonctions mysql_fetch_...(), tu comprendras que chacune a son utilité mais que toutes permettent de récupérer les tuples.
    Si notre ami préfère utiliser row (tableau indexé numériquement) plutôt qu'array ou assoc (tableaux associatifs), c'est son problème même si j'ai tendance à préférer assoc ^^

    @vincedjs : Donne-nous la requête exacte stp.

  6. #6
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    $datafichiers = mysql_fetch_row($reqfichiers))
    si cela retourne un tableau indexe numeriquement ...

    echo "<option>$datafichiers['nomFichierj']</option
    intuitivement je dirait que les recuperer avec un nom c'est pas une bonne idée...

    mais sans certitude...j'ai pas approfondit la :

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    					<select name='la_valeur'> 
    					<?php
    					$sqlfichiers = "select nomFichierj 
    								  from fichiersj 
    								  where numFiche = '${datamenu['numFiche']}'";
    					$reqfichiers = mysql_query($sqlfichiers) or die("Erreur : ". $sqlfichiers .'<br/>'. mysql_error());
    					while($datafichiers = mysql_fetch_row($reqfichiers))
    						{
    						echo '<option>'.$datafichiers['nomFichierj'].'</option>';
    						}
    					?>
    					</select>
    la requete est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sqlfichiers = "select nomFichierj 
    	      from fichiersj 
    	      where numFiche = '${datamenu['numFiche']}'";

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par Kirkis
    Salut

    Je n'arrête pas de militer contre les guillemets doubles ^^ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option>'.$datafichiers['nomFichierj'].'</option>';
    moi ce pour quoi je milite c'est les variables directement dans les chaines ^^'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sqlfichiers = "select nomFichierj
                              from fichiersj
                              where numFiche = '".${datamenu['numFiche']}."'";
    c'est quand même mieux et, je trouve, plus lisible, de sortir les variables
    Et puis, ca evite souvent bien des problèmes ^^

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    @Sion_Sempai : nous sommes à peu près d'accord mais préfère ce type de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sqlfichiers = 'select nomFichierj
                              from fichiersj
                              where numFiche = "'.$datamenu['numFiche']."';
    Ainsi, tu évites à PHP du travail inutile et tu ne perds ni ne gagnes rien en lisibilité.

    @vincedjs : Merci, je sais lire. Je te demande la requête que MySQL doit exécuter, pas ton code PHP.
    Place echo devant $sqlfichiers =

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par Kirkis
    @Sion_Sempai : nous sommes à peu près d'accord mais préfère ce type de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sqlfichiers = 'select nomFichierj
                              from fichiersj
                              where numFiche = "'.${datamenu['numFiche']}."';
    Ainsi, tu évites à PHP du travail inutile et tu ne perds ni ne gagnes rien en lisibilité.
    manque une quote
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where numFiche = "'.${datamenu['numFiche']}.'"';
    mais pourquoi dis-tu que ca evite du travail pour php ?

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Surtout que nous sommes sortis de l'intérieur des guillemets doubles, ce qui fait que les accolades sont devenues inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sqlfichiers = 'select nomFichierj
                              from fichiersj
                              where numFiche = "'.$datamenu['numFiche'].'"';
    Sinon : http://frederic.bouchery.free.fr/?2004/07/15/2-Les-Chaines-De-Caracteres-Soyons-Coherents

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    effectivement... Holala, trop de petits détails d'un coup la, j'suis fatigué !!

    Merci pour le lien ^^

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    ne vous battez pas pour 1 guillemet

    voile la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nomFichierj from fichiersj where numFiche = "81"
    Ce qui correspond bien a ma bdd

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Très bien.

    Nous en venons maintenant à la très juste remarque de XtofRoland :
    Citation Envoyé par XtofRoland
    $datafichiers = mysql_fetch_row($reqfichiers))
    si cela retourne un tableau indexe numeriquement ...

    echo "<option>$datafichiers['nomFichierj']</option
    intuitivement je dirait que les recuperer avec un nom c'est pas une bonne idée...

    mais sans certitude...j'ai pas approfondit la :
    • Soit tu utilises mysql_fetch_row($reqfichiers) avec $datafichiers[0]
    • Soit tu utilises mysql_fetch_assoc($reqfichiers) avec $datafichiers['nomFichierj']

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 295
    Points : 87
    Points
    87
    Par défaut
    Exact, c'est bon a savoir
    merci beaucoup

    code final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <select name='la_valeur'> 
    					<?php
    					 $sqlfichiers = 'select nomFichierj 
                              from fichiersj 
                              where numFiche = "'.$datamenu['numFiche'].'"';
    					$reqfichiers = mysql_query($sqlfichiers) or die("Erreur : ". $sqlfichiers .'<br/>'. mysql_error());
    					while($datafichiers = mysql_fetch_assoc($reqfichiers))
    						{
    						echo '<option>'.$datafichiers['nomFichierj'].'</option>';
    						}
    					?>
    					</select>

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

Discussions similaires

  1. [MySQL] Erreur de syntaxe sur ma requête ?
    Par gyver4000 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/06/2008, 09h10
  2. [MySQL] Erreur de syntaxe sur ma requête update
    Par nani1 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 09/04/2008, 12h08
  3. [SQL] Erreur de syntaxe sur ma requête UPDATE
    Par webasso dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/09/2007, 14h55
  4. [Erreur de syntaxe (opérateur absent)] requête select
    Par wiss20000 dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 19/03/2007, 14h55
  5. Erreur de syntaxe sur une requête paramétrée
    Par deglingo37 dans le forum Access
    Réponses: 5
    Dernier message: 16/05/2006, 22h21

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