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

JavaScript Discussion :

erreur SQL lié a un appel de fonction?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut erreur SQL lié a un appel de fonction?
    Bonjour,

    J'espère etre sur le bon forum...J'essaye d'executer une requete SQL afin d'exporter les données de ma base sous format excel. J'utilise pour cela du javascript. Mon code javascript construit la requête selon un appel de fonction dans la balise Lorsque je clique sur le submit exporter j'ai un message d'erreur me disant qu'il y a une erreur de syntaxe dans mon SQL. mais c'est en faite parce que mon champs texte ne prends pas la requete comme texte... et je ne comprends pas pourquoi.

    voici mon 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
    34
    35
    36
     
    <script language="javascript">
    function verifier_saisie_date_debut_et_fin(num_semaine_deb,num_semaine_fin,annee,num_crc,code_canal,date_deb,date_fin) 
    {	
    var execute = true;
    alert(num_semaine_deb+","+num_semaine_fin+","+annee+","+num_crc+","+code_canal+","+date_deb+","+date_fin);)
    if(execute)
    {
     
    if (date_fin=="")
    {	 
     
    if((code_canal ==5) || (code_canal ==9)  || (code_canal ==1))
    {
    requete = "SELECT of.libelle_offre,ob.objectifs,v.nbvente FROM offres of LEFT OUTER JOIN ( SELECT ob.code_offre, sum(ob.obj) AS objectifs FROM obectifs ob WHERE ob.num_semaine = "+num_semaine_deb+" AND ob.annee = "+annee+"  AND ob.num_agent IN (SELECT num_agent from agents,equipes,crc where agents.num_equipe = equipes.code_equipe AND crc.num_crc = equipes.crc AND equipes.crc = '"+num_crc+"') GROUP BY ob.code_offre) ob ON ob.code_offre = of.code_offre";
     
    requete = requete+" LEFT OUTER JOIN (SELECT v.code_offre, count(v.num_vente) AS nbvente FROM ventes v WHERE v.num_agent IN (SELECT num_agent from agents,equipes,crc where agents.num_equipe = equipes.code_equipe AND crc.num_crc = equipes.crc AND equipes.crc = '"+num_crc+"')AND v.date_vente = '"+date_deb+"' GROUP BY v.code_offre) v ON v.code_offre = of.code_offre   WHERE of.code_canal = 'crc_qe' order by ordre";
    }
     
    this.document.res_obj.requete_XLS.value=requete;
    return true;
    }
     
    }	
    else
    {
    i=num_semaine_fin-num_semaine_deb;
     
    }
    else 
    { 
    return false;
    }
    }
     
    </script>
    le code html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form name="res_obj" action="javascript:exporter_au_format_XLS(this.document.res_obj.requete_XLS.value)" method="POST" onSubmit="return verifier_saisie_date_debut_et_fin(22,0,2010,'CRC_ANGOU',5,'2010-06-01','')">
     
    <input type="text" name="requete_XLS" value="Exporter"/>
    <input type="submit" value="Exporter" class="btntxt"/>
    </form>
    Je ne comprends pas trop ce qu'il se passe. Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    hormis le fait que passer le string de requete est une hérésie, mais je pense qu'il doit s'agir d'une application en local ...
    je pense que tu devrais tester le contenu de la chaine à reception
    ton form doit url_encoder les données et si tu les files brut de pomme à SQL je comprends qu'il rechigne car ton string de requete doit etre truffé de %0A etc ...
    il faut selon moi urldecoder ou unescaper en fonction du langage de traitement

  3. #3
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Commence peut-être par faire référence à tes éléments d'une manière plus efficace :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.document.res_obj.requete_XLS.value=requete;
    this.document.getElementById("requete_XLS").value = requete;
    avec une propriété id="requete_XLS" pour l'input servant à l'exportation.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Commence peut-être par faire référence à tes éléments d'une manière plus efficace :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.document.res_obj.requete_XLS.value=requete;
    this.document.getElementById("requete_XLS").value = requete;
    avec une propriété id="requete_XLS" pour l'input servant à l'exportation.
    cela ne change rien, j'ai toujours la même erreur.Dans ma barre d'adresse j'ai toujours req= Exporter au lieu de ma requete SQL...

    Merci.

  5. #5
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Je ne connais pas le contexte d'execution et j'ai essayé de coller à la syntaxe que tu utilisais : d'où le "this" que j'ai laissé avant le "document.getElementById". Mais dans le contexte d'une page web il faudrait le retirer.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    J'ai déjà utilisé ce script pour faire d'autres exports qui fonctionnent très bien. Je comprends pas trop

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par ballantine's Voir le message
    j'ai un message d'erreur me disant qu'il y a une erreur de syntaxe dans mon SQL.
    Le terme est mal choisi : il s'agit visiblement plutôt d'une faute d'orthographe
    FROM obectifs


    A+

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Non non ce n'est pas une faute d'orthographe...la table est mal nommée mais elle n'a pas encore été refaite c'est bien obectifs

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut


    Ok.

    Ca dépend sûrement des SGBD, mais l'espace manquant ici ne pose pas problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND equipes.crc = '"+num_crc+"')AND v.date_vente
    Sinon, un copié/collé de cette requête, lancé en ligne de commande SQL fonctionne ?

    A+

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    L'espace ne change rien

    Lorsque je l'execute directement sur MySQL la requête fonctionne sans problème

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par ballantine's Voir le message
    L'espace ne change rien

    Lorsque je l'execute directement sur MySQL la requête fonctionne sans problème
    Donc tu as fais un alert(requete) que tu as collé dans ton éditeur de requête (phpmyadmin ou autre) et ça fonctionne ...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par devyan Voir le message
    Donc tu as fais un alert(requete) que tu as collé dans ton éditeur de requête (phpmyadmin ou autre) et ça fonctionne ...
    pas tout à fait...le alert que je tente de faire ne s'affiche pas. mais lorsque je copie colle ma requete avec les valeurs que j'envoie dans ma fonction ça marche. sauf que c'est moi qui mets les valeurs et la est peut-être le problème...les valeurs

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Affecte le contenu de "requete" à un textarea, par exemple : tu auras le texte exacte de la requête lancée ...
    Ceci dit, si le alert() ne s'affiche pas, c'est que tu as une erreur Javascript (peut être sans aucun lien) ...

    A+

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Au fait : elle est déclarée comment et où, cette variable "requete" ?

    A+

  15. #15
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par ballantine's Voir le message
    sauf que c'est moi qui mets les valeurs et la est peut-être le problème...les valeurs
    C'est pour ça que je trouvais l'intervention de SpaceFrog assez judicieuse ^^
    Tu as vérifié l'encodage de la page / du serveur ? ...quitte à vérifier très précisément l'entête HTTP correspondant à ton submit avec LiveHTTPHeaders ou un équivalent ?

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par ballantine's Voir le message
    pas tout à fait...le alert que je tente de faire ne s'affiche pas. mais lorsque je copie colle ma requete avec les valeurs que j'envoie dans ma fonction ça marche. sauf que c'est moi qui mets les valeurs et la est peut-être le problème...les valeurs
    Si le alert() ne s'affiche pas c'est qu'il y a déjà un problème avant, genre dans le remplissage de "requete"

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Un élément supplémentaire : le "this" ne semble rien avoir à faire ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.document.res_obj.requete_XLS.value=requete;
    De plus, tu ne testes pas que la variable est alimentée avant de l'affecter au .value

    Alors qu'il suffirait que la condition du if() précédent ne soit pas respectée ...

    Conclusion : la même que les précédentes montre-nous le contenu de "requete" lors de l'exécution (y/c pour les problèmes d'encodage, fort possibles aussi)

    A+

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Affecte le contenu de "requete" à un textarea, par exemple : tu auras le texte exacte de la requête lancée ...
    Ceci dit, si le alert() ne s'affiche pas, c'est que tu as une erreur Javascript (peut être sans aucun lien) ...

    A+
    je l'affecte à un input text, mais le texte n'est pas modifié il reste à la valeur par défaut 'Exporter'.

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par ballantine's Voir le message
    je l'affecte à un input text, mais le texte n'est pas modifié il reste à la valeur par défaut 'Exporter'.
    Regarde à partir de quel moment un alert('ici'); ne fonctionne plus dans ton code et tu auras la ligne qui pose problème juste au dessus

    C'est une méthode antédiluvienne mais elle fonctionne toujours

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    512
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Juin 2007
    Messages : 512
    Points : 97
    Points
    97
    Par défaut
    J'ai supprimé un if qui ne servait a rien et cela fonctionne ^^

    Voici le code javascript une fois modifié :

    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
     
    <script language="javascript">
    function verifier_saisie_date_debut_et_fin(num_semaine_deb,num_semaine_fin,annee,num_crc,code_canal,date_deb,date_fin) 
    {	
    var execute = true;
    alert(num_semaine_deb+","+num_semaine_fin+","+annee+","+num_crc+","+code_canal+","+date_deb+","+date_fin);
    var requete="";
     
     
    if (date_fin=="")
    {	 
     
     
    	if((code_canal ==5) || (code_canal ==9)  || (code_canal ==1))
    	{
    	requete = "SELECT of.libelle_offre,ob.obj,v.nbvente FROM offres of LEFT OUTER JOIN ( SELECT ob.code_offre, obj FROM obectifs ob WHERE ob.num_semaine = "+num_semaine_deb+" AND ob.annee = "+annee+"  AND ob.num_agent IN (SELECT num_agent from agents,equipes,crc where agents.num_equipe = equipes.code_equipe AND crc.num_crc = equipes.crc AND equipes.crc = '"+num_crc+"') GROUP BY ob.code_offre) ob ON ob.code_offre = of.code_offre";
    	requete = requete+" LEFT OUTER JOIN (SELECT v.code_offre, count(v.num_vente) AS nbvente FROM ventes v WHERE v.num_agent IN (SELECT num_agent from agents,equipes,crc where agents.num_equipe = equipes.code_equipe AND crc.num_crc = equipes.crc AND equipes.crc = '"+num_crc+"') AND v.date_vente = '"+date_deb+"' GROUP BY v.code_offre) v ON v.code_offre = of.code_offre   WHERE of.code_canal = 'crc_qe' order by ordre";
    	}
    	if(requete!="")
    	{
    	this.document.res_obj.requete_XLS.value=requete;
    	return true;
    	}
    	else
    	{
    	return false;
    	}
     
    	}	
    }
     
    </script>
    Merci de votre aide !!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [SQL] Erreur lors d'un appel de fonction
    Par xavier.valentin dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 13/11/2006, 22h56
  2. [9i]appelé 1 fonction en sql
    Par hoaxpunk dans le forum Oracle
    Réponses: 4
    Dernier message: 31/01/2006, 18h32
  3. Appel de fonction d'une DLL en TANSAC SQL
    Par sylvain114d dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 10h21
  4. Erreur de compilation -> appel de fonction
    Par R'SKaP dans le forum C++
    Réponses: 2
    Dernier message: 04/12/2005, 01h33
  5. [appel de fonction]Erreur bizarre
    Par DEC dans le forum ASP
    Réponses: 4
    Dernier message: 10/08/2004, 17h08

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