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 :

requête avec variable qui ne s’exécute pas [PostgreSQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut requête avec variable qui ne s’exécute pas
    bonjour,

    A travers un formulaire php, je tente de récupérer une valeur de clef primaire pour pouvoir réaliser ensuite une mise à jour sur une table.

    le petit bout de html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>
    	Saisissez le numéro sga de l''opération
    	</p>
    	numéro sga :<input type="text" name="num_sga"><br>
    	<input type="submit" name="submit" value="rechercher">
    et le bout de php où je définis la requête puis l'execute et stocke le résultat dans pg_fetch_result. C'est l'execution de la requete qui ne passe pas car quand je remplace $_POST[num_sga] par une vraie valeur, ca fonctionne. Quelque chose m'échappe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //la définition de la requete de maj à compléter
    $sqlGid = "select gid from activite.emprise where numope = '$_POST[num_sga]'" ;
    //execution de la requete
    $requete_gid = pg_query($sqlGid) ;
    //recuperation du gid depuis le résultat donné par la requête ci-dessus.
    $gid = pg_fetch_result($requete_gid, 0, 0) ;
     
    $maj = "update public.metadonnees set (date_rapport, date_libe_terrain, généalogie) =
    		('$_POST[date_rapport_maj]', '$_POST[date_libe_terr_maj]', '$_POST[genealogie_maj]')
    		where gid = $gid " ;
    Merci

  2. #2
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    C'est probablement dû à un souci de concaténation. Tu pourrais essayer avec $sqlGid = "select gid from activite.emprise where numope = '".$_POST['num_sga']."'" ;MAIS c'est mal, car non-protégé contre les injections. Selon le principe de base "Never Trust User Input", il ne faut pas utiliser directement les données en provenance d'un formulaire. (sauf éventuellement si tu écris un petit script pour ton usage personnel, et encore, ça donne des mauvaises habitudes)
    En l'occurrence, tu peux utiliser pg_escape_string pour échapper la chaîne ou pg_query_params pour injecter les paramètres à part.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //la définition de la requete de maj à compléter
    $num_sga = pg_escape_string($_POST[num_sga]);
    $sqlGid = "select gid from activite.emprise where numope = '$num_sga'" ;
    //execution de la requete
    $requete_gid = pg_query($sqlGid) ;
    //recuperation du gid depuis le résultat donné par la requête ci-dessus.
    $gid = pg_fetch_result($requete_gid, 0, 0) ;
     
    $maj = 'update public.metadonnees set (date_rapport, date_libe_terrain, généalogie) =
    		($1, $2, $3)
    		where gid = $4' ;
    pg_query_params($maj, array($_POST[date_rapport_maj], $_POST[date_libe_terr_maj], $_POST[genealogie_maj], $gid));
    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]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    merci en effet, c'est plus carré !
    Sinon j'ai toujours l'erreur :
    pg_fetch_result(): Unable to jump to row 0 on PostgreSQL result index 4

  4. #4
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Normalement, cette erreur signifie qu'il n'y a pas de résultat. Question : ton champ numope est de quel type ?
    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]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    numope type charvar(15)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    Dans ma lutte conter les forces du mal, je tente de résoudre toujours et encore l'erreur en question sans succès...pour le moment.

    Je testais chaque étape en regardant quelle valeur était retournée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete_gid = pg_query($sqlGid)
    me renvoie : Resource id #4

    est-ce normal ? de ne pas lire le résultat de la requête soit la valeur retournée par la requête.

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

Discussions similaires

  1. [MySQL] Requête avec date qui ne fonctionne pas
    Par legrandse dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/01/2017, 09h07
  2. [AC-2007] Requête avec critère qui ne marche pas suivant la version de RunTime
    Par pio_killer dans le forum Runtime
    Réponses: 1
    Dernier message: 19/11/2011, 14h09
  3. Requête avec jointure qui retourne null si pas de valeur
    Par jubourbon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/09/2011, 11h10
  4. Réponses: 4
    Dernier message: 10/12/2010, 11h58
  5. requête avec paramètre qui marche pas
    Par funkyjul dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/04/2008, 13h37

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