Bonjour,
Je me tourne vers vous car je n'arrive pas a solutionner mon probleme.
Décrivez ici votre code ou ce que vous cherchez à faire
if(isset($_GET['valeur'])){
$conditions = ($_GET['type_recherche']);
$valeur = $db->quote($_GET['valeur']);
$sql = "SELECT *
FROM invoices
WHERE ";
if ($conditions == 'num_contrat')
$sql .= " num_contrat ";
elseif ($conditions == 'num_sequentiel')
$sql .= " num_sequentiel";
elseif ($conditions == 'element_facture_mt_facture_ttc')
$sql .= " element_facture_mt_facture_ttc ";
else
$sql .= " client_nom ";
$sql .= " = $valeur";
$sth = $db->prepare($sql);
$sth->execute();
$search = $sth->fetchAll();
}
Je voudrais pouvoir mettre un LIKE dans la condition num_contrat, en effet je peux avoir un numero sur 9 chiffres, mais derriere ces 9 chiffres je peux avoir d'autres caractères.
je souhaiterai que ma requete quand je la fait sur le numero de contrat ressemble à ceci:
SELECT * FROM invoices WHERE num_contrat LIKE '378774992%'
mais je n'arrive pas à savoir ou je doit placer le LIKE et ou je dois placer le %... j'ai essayer tout un tas de choses mais aucune ne fonctionne.
merci par avance de votre aide.
Gilles
$sql = "SELECT * FROM ta_table WHERE ton_champ like :une_valeur";
$prep = $connection->prepare($sql);
$val="378774992";
$res = $prep->execute(array("ton_champ"=>$val.'%'));
$search = $res->fetchAll();
var_dump($search);
fait à l'arrache, mais ça devrait être ça :D
@plus
*
j'ai essayer de faire fonctionner mais j ai ce message d'erreur:
Fatal error: Uncaught Error: Call to a member function fetch() on boolean in /var/http/www/portail/agence/customers/invoice.php:33 Stack trace: #0 {main} thrown in /var/http/www/portail/agence/customers/invoice.php on line 33
j'ai verifié le nom du champ, le nom de la table mais pas d'erreurr de ce coté là.
$sql = "SELECT * FROM invoices WHERE id=:id";
$prep = $db->prepare($sql);
$val=2;
$res =$prep->execute(array("id"=>2));
$search = $res->fetchAll();
var_dump($search);
die();
Attention à ne pas coller les éléments contre le = car cela peut poser problème
$sql = "SELECT * FROM invoices WHERE id = :id";
Bonjour,
j ai résolu mon problème de cette maniere:
$sql = "SELECT *
FROM invoices
WHERE ";
if ($conditions == 'num_contrat')
$sql .= " num_contrat ";
elseif ($conditions == 'num_sequentiel')
$sql .= " num_sequentiel ";
elseif ($conditions == 'element_facture_mt_facture_ttc')
$sql .= " element_facture_mt_facture_ttc ";
else
$sql .= " client_nom ";
$sql .= " LIKE = :valeur ORDER BY num_sequentiel DESC ";
$sth = $db->prepare($sql);
$sth->execute(array(':valeur' => $valeur.'%'));
$search = $sth->fetchAll();
@pierrot01 de m'avoir mis sur la voie.
@Carouge10 merci du conseil.
Bonne journée