Requete SQL dans fonction Externe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete SQL dans fonction Externe

Re: Requete SQL dans fonction Externe

par lurnt-91 » 07 nov. 2013, 16:36

AHHHHHH MERCIIIIII !!!!!! :D cela fonctionne. J’espère réussir à résoudre les autres problèmes par moi même. Sinon je reviendrais vers vous Merci ;)

Re: Requete SQL dans fonction Externe

par yann18 » 07 nov. 2013, 16:22

d'accord je vois on place les % dans la méthode execute et active la gestion d'erreurs

<?php
class monnaie{
private $_db;//type PDO

public function __construct($db)
{
$this->getMonnaieByCode = $db->prepare("SELECT id_pays FROM pays WHERE code_devise LIKE ?");
$this->_db =$db; //

public function getMonnaieByCode($devise)
{
try
   {
   $this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
   $this->getMonnaieByCode->execute(array('%'.$devise.'%'));
   return $this->getMonnaieByCode->fetch();
  }catch(PDOException $err)
  {
 echo "erreur sql:" ,$err->getMessage();
 
 exit();
 }
}//end getMonnaieByCode
}//end monnaie
 
l'appel à la classe reste inchangé

Re: Requete SQL dans fonction Externe

par xTG » 07 nov. 2013, 16:21

Dans ce cas que vaux $devise ?
Car si plus d'erreur c'est simplement que la requête ne renvoie aucun résultat.

Re: Requete SQL dans fonction Externe

par lurnt-91 » 07 nov. 2013, 15:04

Merci cela m'a corrigé quelques erreur mais sinon après avoir corrigé j'ai plus aucun message et toujours boolean false. J'ai tenté de mettre directement '%EUR%' dans la requête PHP et cela fonctionne donc je pense que cela vient de la façon d’écrire '%?%'
Mais je ne voit pas du tout comment le faire j'ai essayé toutes les cotes et guillemet possible et inimaginable :?

Re: Requete SQL dans fonction Externe

par xTG » 07 nov. 2013, 14:46

C'est donc que la requête a échoué.
Actives la gestion des erreurs de PDO : http://us3.php.net/manual/fr/pdo.error-handling.php

Re: Requete SQL dans fonction Externe

par lurnt-91 » 07 nov. 2013, 14:24

ceci donne boolean false

Re: Requete SQL dans fonction Externe

par yann18 » 07 nov. 2013, 12:51

ceci n'est pas bon car tu as un tableau et pour le parcourir t'as besoin d'une boucle
 <td><?php echo $devise,$codeDev[0],",",$codeDev ,"," ?></td>
------------------------------
que donne ceci:
<?php $codeDev=$maDevise->getMonnaieByCode($devise); ?>
var_dump($codeDev);

Re: Requete SQL dans fonction Externe

par lurnt-91 » 07 nov. 2013, 12:32

Merci pour ta réponse si rapide :D
j'avais déjà essayé et cela ne fonctionne pas? Peut être ma façon d'afficher, pour le test je fait un echo
<?php $codeDev=$maDevise->getMonnaieByCode($devise); ?>
<td><?php echo $devise,$codeDev[0],",",$codeDev ,"," ?></td>
donc devise m'affiche bien 'EUR' et les deux autres ne m'affiche rien :s

Re: Requete SQL dans fonction Externe

par yann18 » 07 nov. 2013, 12:22

Bonjour,
le point d'interrogation est un marqueur qui sera remplacé par un tableau de valeur(en l'occurrence la valeur EUR) lors de l'exécution de la requête.Ta requête avec LIKE devient:
<?php
class monnaie{
public function __construct($db)
{
$this->getMonnaieByCode = $db->prepare("SELECT id_pays FROM pays WHERE code_devise LIKE '%?%' ");
}

public function getMonnaieByCode($devise)
{
$this->getMonnaieByCode->execute(array($devise));
return $this->getMonnaieByCode->fetch();
}
}
avec phpmyadmin:

Code : Tout sélectionner

SELECT id_pays FROM pays WHERE code_devise LIKE '%EURO%';

Requete SQL dans fonction Externe

par lurnt-91 » 07 nov. 2013, 11:35

Bonjour à tous,
je suis actuellement apprenti et reprend le code entier d'un ancien apprenti (pas indenter et pas commenté...) bref il a créée des fonctions avec des requêtes SQL mais lors de l'appel à une de ces fonctions cela ne renvoie rien. J'essaye sur phpmyadmin et la rien non plus.
Voici la requête: "SELECT id_pays FROM pays WHERE code_devise = ? "
Bon sur phpmyadmin le '?' est = a 'EUR'. Bon je trouve le problème mais je ne le comprend pas il faut remplacer '=' par "like '%EUR%' ".

Enfin bon ma question déja est la suivante: comment faire pour remplacer le = par le like dans la fonction j'ai essayer pas mal de chose et jamais de résultat.

Voici un bout de la fonction:

<?php
class monnaie{
public function __construct($db)
{
$this->getMonnaieByCode = $db->prepare("SELECT id_pays FROM pays WHERE code_devise = ? ");
}

public function getMonnaieByCode($devise)
{
$this->getMonnaieByCode->execute(array($devise));
return $this->getMonnaieByCode->fetch();
}
}

L'appel a cet fonction qui ce trouve dans un autre fichier php:

$codeDev=$maDevise->getMonnaieByCode($devise);


à savoir: la requête retourne plusieurs ligne


Merci d'avance, je ne sais pas si c'est très clair.