Requête non prise en compte dans une page orpheline
Résolu/Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
8 févr. 2019 à 13:00
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 10 févr. 2019 à 13:53
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 10 févr. 2019 à 13:53
A voir également:
- Requête non prise en compte dans une page orpheline
- Supprimer une page word - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Supprimer compte instagram - Guide
- Créer un compte instagram sur google - Guide
5 réponses
jordane45
Messages postés
38359
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 décembre 2024
4 720
8 févr. 2019 à 13:03
8 févr. 2019 à 13:03
Bonjour
Et le include de ta connexion ??
Au passage.. applique ceci:
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et le include de ta connexion ??
Au passage.. applique ceci:
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Utilisateur anonyme
10 févr. 2019 à 10:18
10 févr. 2019 à 10:18
Bonjour
Ta requête n'est pas vraiment une requête préparée : le bindParam que tu fais est bidon, puisque le :MY_REFR n'apparaît nulle part dans ta requête. Mais ça m'étonnerait que ce soit la cause du problème.
Tu parles de résultats différents donnés par ton site et par un "site extérieur". Il faudrait préciser certaines choses. D'abord, tu te plains au départ de _mail.php dont le comportement diffère selon la manière de l'appeler, mais le code que tu donnes est celui de _sms_echec.php. C'est le même problème ?
Je suppose que le ipn.php est la partie de ton site qui appelle ce fichier : peux-tu donner la partie du code du site extérieur qui fait appel à ce même fichier ?
Ta requête n'est pas vraiment une requête préparée : le bindParam que tu fais est bidon, puisque le :MY_REFR n'apparaît nulle part dans ta requête. Mais ça m'étonnerait que ce soit la cause du problème.
Tu parles de résultats différents donnés par ton site et par un "site extérieur". Il faudrait préciser certaines choses. D'abord, tu te plains au départ de _mail.php dont le comportement diffère selon la manière de l'appeler, mais le code que tu donnes est celui de _sms_echec.php. C'est le même problème ?
Je suppose que le ipn.php est la partie de ton site qui appelle ce fichier : peux-tu donner la partie du code du site extérieur qui fait appel à ce même fichier ?
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
10 févr. 2019 à 11:36
10 févr. 2019 à 11:36
Bonjour le père,
- Aucun code omis utile à mon problème parce que de ce côté là tout va bien.
- le problème du SELECT a résolu le problème. je faisais la suppression et tentais de récupérer les valeurs... tu as mis dans le mie.
Je crois que j'ai vraiment besoin de congés...
Merci à Jordans45 et à toi le père pour votre aide.
Je n'avais jamais fais de requête préparée pour le SELECT auparavant, tu dis que le code est bidon, pourquoi ?
- Aucun code omis utile à mon problème parce que de ce côté là tout va bien.
- le problème du SELECT a résolu le problème. je faisais la suppression et tentais de récupérer les valeurs... tu as mis dans le mie.
Je crois que j'ai vraiment besoin de congés...
Merci à Jordans45 et à toi le père pour votre aide.
Je n'avais jamais fais de requête préparée pour le SELECT auparavant, tu dis que le code est bidon, pourquoi ?
jordane45
Messages postés
38359
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 décembre 2024
4 720
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
10 févr. 2019 à 11:43
10 févr. 2019 à 11:43
Par ce qu'il faut utiliser une variable nommée ( avec les : devant ) et pas directement la variable php.
Comme ceci :
Comme ceci :
SELECT R.NIC_Handle, R.Reference, U.NIC_Handle, U.Email, U.Nom, U.Prenoms, U.Civilite FROM tb_shop_recap R LEFT JOIN tb_user U ON U.NIC_Handle = R.NIC_Handle WHERE R.Reference= :MY_REFR "; "); $Stat->bindParam(':MY_REFR', $MY_REFR); $Stat->execute(); $data_rep = $Stat->fetch(PDO::FETCH_ASSOC);
Utilisateur anonyme
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
10 févr. 2019 à 12:27
10 févr. 2019 à 12:27
"Aucun code omis utile à mon problème" Ça n'est pas la même chose que "Aucun code omis" tout court. Et comme tu ne comprends pas d'où vient ton problème, comment sais-tu que ce que tu ne mets pas n'a pas de rapport avec ton problème ?
Jordane t'a montré comment il fallait vraiment faire la requête préparée.
Ne me demande pas pourquoi j'ai écrit que ton bind_param, relis ce que j'avais écrit en te le disant. Il n'y a pas de :MY_REFR dans ta requête : à quoi peut bien servir un bind_param sur :MY_REFR ? Et que ce soit une requête SELECT ou pas n'a aucun rapport : le rôle de bind_param reste exactement le même. Et tu en as déjà fait.
J'ai l'impression que tu l'as rajouté uniquement parce que Jordane t'a recommandé d'utiliser des requêtes préparées et que le bind_param, ça fait "requête préparée".
Jordane t'a montré comment il fallait vraiment faire la requête préparée.
Ne me demande pas pourquoi j'ai écrit que ton bind_param, relis ce que j'avais écrit en te le disant. Il n'y a pas de :MY_REFR dans ta requête : à quoi peut bien servir un bind_param sur :MY_REFR ? Et que ce soit une requête SELECT ou pas n'a aucun rapport : le rôle de bind_param reste exactement le même. Et tu en as déjà fait.
J'ai l'impression que tu l'as rajouté uniquement parce que Jordane t'a recommandé d'utiliser des requêtes préparées et que le bind_param, ça fait "requête préparée".
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
8 févr. 2019 à 13:56
8 févr. 2019 à 13:56
Voici ma page config.php
Et voici la page en question :
<?php define("MYSQL_HOST", "***"); define("MYSQL_BASE", "***"); define("MYSQL_USER", "***"); define("MYSQL_PASS", "***"); define("MYSQL_PORT", "***"); // Connexion PDO try { $pdo = new PDO('mysql:host='.MYSQL_HOST.';port='.MYSQL_PORT.';dbname='.MYSQL_BASE, MYSQL_USER, MYSQL_PASS); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec("SET CHARACTER SET utf8"); } catch(PDOException $e){echo "<div class='alert alert-warning'>".$e->getMessage()."</div>"; die();} error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ?>
Et voici la page en question :
<?php include_once($_SERVER['DOCUMENT_ROOT']."/includes/config.php"); // Espion lu try{$Stat = $pdo->query("SELECT R.NIC_Handle, R.Reference, U.NIC_Handle, U.Phone_1 FROM tb_shop_recap R LEFT JOIN tb_user U ON U.NIC_Handle = R.NIC_Handle WHERE R.Reference='".$MY_REFR."' "); // Espion lu while($data = $Stat->fetch(PDO::FETCH_ASSOC)){ // Espion non lu }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} // Espion lu ?>
jordane45
Messages postés
38359
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 décembre 2024
4 720
8 févr. 2019 à 16:14
8 févr. 2019 à 16:14
Donc
A la place d'un INCLUDE .. utilises un REQUIRE_ONCE
A la place d'un $pdo->query
utilise des requêtes préparées
Si le souci persiste... reviens nous voir avec les éventuels messages d'erreur.....
Bien entendu tu auras également activé l'affichage des erreurs PHP ...
A la place d'un INCLUDE .. utilises un REQUIRE_ONCE
A la place d'un $pdo->query
utilise des requêtes préparées
Si le souci persiste... reviens nous voir avec les éventuels messages d'erreur.....
Bien entendu tu auras également activé l'affichage des erreurs PHP ...
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
Modifié le 8 févr. 2019 à 23:14
Modifié le 8 févr. 2019 à 23:14
J'ai mis un
Je n'ai aucun message d'erreur, sauf que sur cette page, je n'ai aucun résultat (c'est vide) :
Pourtant sur cette même page, si je l'ouvre avec le navigateur, j'ai un résultat.
require_once, j'ai fais une
requête préparée, j'ai ajouté les
erreurs PHP:
<?php ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', dirname(__FILE__) . '/log_error_php.txt'); error_reporting(E_ALL); try{$Stat = $pdo->prepare("SELECT R.NIC_Handle, R.Reference, U.NIC_Handle, U.Email FROM tb_shop_recap R LEFT JOIN tb_user U ON U.NIC_Handle = R.NIC_Handle WHERE R.Reference='".$MY_REFR."'"); $Stat->bindParam(':NIC_Handle', $NIC_Handle); $Stat->bindParam(':Email', $Email); $Stat->execute(); $data = $Stat->fetch(PDO::FETCH_ASSOC); echo $data["NIC_Handle"]."<br>"; echo $data["Email"]."<br>"; echo $MY_REFR."<br>"; }catch(PDOException $e){echo $e->getMessage(); print_r($data);} ?>
Je n'ai aucun message d'erreur, sauf que sur cette page, je n'ai aucun résultat (c'est vide) :
echo $data["NIC_Handle"]."<br>"; echo $data["Email"]."<br>"; echo $MY_REFR."<br>";
Pourtant sur cette même page, si je l'ouvre avec le navigateur, j'ai un résultat.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
10 févr. 2019 à 00:41
10 févr. 2019 à 00:41
Rrrrraaaahhhh ! ça me prends la tête !!!
ipn.php
_sms_echec.php
Résultat donné par le site extérieur :
Test de la requête dans phpmyadmin :
Test de l'ouverture de la page _sms_echec.php depuis mon site :
Voici tout ce que contient mes pages... aucun code omis.
Je ne comprends toujours pas pourquoi il n'affiche rien !
ipn.php
<?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/config.php"); require_once($_SERVER['DOCUMENT_ROOT']."/modules/sms/smsenvoi.php"); ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', dirname(__FILE__) . '/log_error_php.txt'); error_reporting(E_ALL); function transactionGeneralFailure($pdo, $data) { $MY_REFR = $data->Reference; $MY_NUMB = $data->MSISDN; $MY_AMNT = $data->Amount; // Ici le code fonctionne depuis l'appel du site extérieur $Fact_SU = $pdo->exec("DELETE FROM tb_shop_recap WHERE Reference='".$MY_REFR."' "); $Fact_BC = $pdo->exec("INSERT INTO tb_shop_BC (NIC_Handle, Libelle_TAG, Quantite) SELECT NIC_Handle, Libelle_TAG, Quantite FROM tb_shop_FA WHERE tb_shop_FA.Reference = '".$MY_REFR."' "); $Fact_FA = $pdo->exec("DELETE FROM tb_shop_FA WHERE Reference='".$MY_REFR."' "); echo "Échec de transaction générale"; include("_sms_echec.php"); }
_sms_echec.php
<?php $user = NULL; try{$Stat = $pdo->prepare(" SELECT R.NIC_Handle, R.Reference, U.NIC_Handle, U.Email, U.Nom, U.Prenoms, U.Civilite FROM tb_shop_recap R LEFT JOIN tb_user U ON U.NIC_Handle = R.NIC_Handle WHERE R.Reference='".$MY_REFR."' "); $Stat->bindParam(':MY_REFR', $MY_REFR); $Stat->execute(); $data_rep = $Stat->fetch(PDO::FETCH_ASSOC); if($data_rep["Civilite"] == "Masculin") {$user = "M. ".$data_rep["Nom"]." ".$data_rep["Prenoms"];} if($data_rep["Civilite"] == "Féminin") {$user = "Mme ".$data_rep["Nom"]." ".$data_rep["Prenoms"];} if($data_rep["Civilite"] == "Male") {$user = "Mr ".$data_rep["Nom"]." ".$data_rep["Prenoms"];} if($data_rep["Civilite"] == "Female") {$user = "Mrs ".$data_rep["Nom"]." ".$data_rep["Prenoms"];} echo "[".$data_rep["NIC_Handle"]."]"; echo "(".$data_rep["Email"].")"; echo "{".$MY_REFR."}"; echo "/".$user."/"; }catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>"; print_r($data_rep);} ?>
Résultat donné par le site extérieur :
Échec de transaction générale[](){BC19000043}//
Test de la requête dans phpmyadmin :
NIC_Handle Reference NIC_Handle Email Nom Prenoms Civilite
AA32938 BC19000041 AA32938 email@yahoo.fr SNOW John Masculin
Test de l'ouverture de la page _sms_echec.php depuis mon site :
[AA32938](email@yahoo.fr){BC19000043}/M. SNOW John/
Voici tout ce que contient mes pages... aucun code omis.
Je ne comprends toujours pas pourquoi il n'affiche rien !
8 févr. 2019 à 13:09
le include de ma connexion est correct.
Lorsque je lance la page depuis le navigateur, il affiche bien la valeur souhaitée.
Je regarde ton lien.
8 févr. 2019 à 13:12
8 févr. 2019 à 13:51
Donnes ton code COMPLET