[RESOLU] Problème requête

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 : [RESOLU] Problème requête

Re: Problème requête

par Pandademios » 25 sept. 2015, 22:44

Re ynx

Désolé fausse alerte j'ai réussi

Code : Tout sélectionner

$options = array_map(array($mysqli, 'real_escape_string'), $_POST['options']); // sécurise les données post $chaine= "'" . implode("','", $options) . "'"; // conversion du tableau en chaines entourées de quote $requet = 'SELECT SUM(fcd) AS somme1 FROM bdd_cotisation WHERE cle_adherent in ('.$chaine.') '; $result = $mysqli->query($requet) or die ('Erreur '.$requet.' '.$mysqli->error); while ($ligne2 = $result->fetch_array()) { echo $ligne2['somme1']; }
Encore merci de ton aide

Re: Problème requête

par Pandademios » 25 sept. 2015, 22:12

Bonsoir ynx

merci de ton aide

avec

Code : Tout sélectionner

$options = array_map(array($mysqli, 'real_escape_string'), $_POST['options']); // sécurise les données post $chaine= "'" . implode("','", $options) . "'"; // conversion du tableau en chaines entourées de quote $requet = 'SELECT SUM(fcd) AS somme1 FROM bdd_cotisation WHERE cle_adherent in ('.$chaine.') '; $result = $mysqli->query($requet) or die ('Erreur '.$requet.' '.$mysqli->error);
ça fonctionne pas

Code : Tout sélectionner

Fatal error: Cannot use object of type mysqli_result as array in /home/fcsadlig/public_html/skiclubadmin/zp_tableau_comptable.php on line 38

Re: Problème requête

par ynx » 25 sept. 2015, 11:09

Salut,

L'erreur vient de l'espace après SUM, il ne doit pas y en avoir.
Si tu veux chercher les clés adhérent dans un liste d'éléments, il faut utiliser l'opérateur IN à la place de = :
$requet = 'SELECT SUM(fcd) AS somme1 FROM bdd_cotisation WHERE cle_adherent IN ('.$chaine.') ';
Edit: puisque les éléments à comparer sont des chaines, il faut les entourer de quotes. Dans l'idéal il faut également utiliser la méthode mysqli::real_escape_string pour éviter les injections sql. Ce qui donne :
$options = array_map(array($mysqli, 'real_escape_string'), $_POST['options']); // sécurise les données post
$chaine= "'" . implode("','", $options) . "'"; // conversion du tableau en chaines entourées de quote
$requet = 'SELECT SUM (fcd) AS somme1 FROM bdd_cotisation WHERE cle_adherent = ('.$chaine.') ';
$result = $mysqli->query($requet) or die ('Erreur '.$requet.' '.$mysqli->error);
Bonne journée

Problème requête

par Pandademios » 24 sept. 2015, 18:58

Bonsoir à tous,

Je n'arrive pas à résoudre mon problème donc je fais appel à votre savoir,

j'ai un problème de requette sqli

Code : Tout sélectionner

$chaine=implode(',',$_POST['options']); $requet = 'SELECT SUM (fcd) AS somme1 FROM bdd_cotisation WHERE cle_adherent = ('.$chaine.') '; $result = $mysqli->query($requet) or die ('Erreur '.$requet.' '.$mysqli->error);
J'ai l'erreur suivante
Erreur SELECT SUM (fcd) AS somme1 FROM bdd_cotisation WHERE cle_adherent = (e8b8a3be28fa8f73f3eacbca2f8ac3ea,a8cd711954e860db3a86ed3e76ad6b11,bdde0a7b09061152221bb27c7268e676) FUNCTION fcsadlig_asm2016ski.SUM does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
je n'arrive pas à trouver la soluce

Merci de votre aide