Jump to content

Récupération de l'id d'un profil


Recommended Posts

Bonjour à tous,

Je reviens vers vous encore une fois:

J'ai une requête sql qui m'a posé un petit problème. En fait je souhaite sélectionner  la valeur d'une colonne selon la valeur d'un ID:

 
       
$find_counts = $conn->query('SELECT counts FROM fz_customer WHERE id_customer="{$customer.id}" ');

Pour bien m'assurer de la valeur de l'id j'ai fais un echo pour l'afficher:

echo '{$customer.id}';

 

Link to comment
Share on other sites

1- pour id_customer essaye avec Context::getContext()->customer->id

2- met (int) devant, c'est une bonne habitude à prendre

3- évite de mettre dans les requetes fz_customer, utilise _DB_PREFIX_

4- elle fait quoi ta requete dans ton premier post ? qu'est ce que tu veux obtenir ?

Link to comment
Share on other sites

ok, donc tu as une colonne counts (qui n'existe pas par défaut), essaye avec :

 

$find_counts = (int)Db::getInstance()->getValue('SELECT `counts` FROM `'._DB_PREFIX_.'customer` WHERE `id_customer` = '.(int)Context::getContext()->customer->id);

Link to comment
Share on other sites

Il fait un point virgule à la fin de la ligne, J'ai modifié le code.

J'ai un problème au niveau de "echo", l'erreur suivante s'affiche:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '56 LIMIT 1' at line 1

try {
        $conn= new PDO("mysql:dbname=dev;host=localhost" , "dev", "admin987" ,array(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION));
        $find_counts = null;
 
       
//$find_counts = $conn->query('SELECT counts FROM fz_customer WHERE  id_customer="{$customer.id}" ');
$find_counts = (int)Db::getInstance()->getValue('SELECT `counts` FROM `'._DB_PREFIX_.'customer` WHERE `id_customer` = '.(int)Context::getContext()->customer->id);
        echo '<br>DEBUT WHILE';
         
        //cas d'un retour vide
        if (!is_null($find_counts) && $find_counts !== FALSE) {
            //$row = $find_counts->fetch();
$row = Db::getInstance()->getRow($find_counts);
        }
         
        echo '<br>Cette page a été vue : '.$row['counts'];
        //$update_count = "UPDATE fz_customer SET counts= counts + 1";
$update_count=' UPDATE `'._DB_PREFIX_.'customer` SET counts= counts+1 ';
        /*$stmt = $conn->prepare($update_count);
        if (!$stmt->execute()) {
            echo '<br>ERREUR';
            throw PDOException('ERREUR PDO TUTU',100);
        } else {
            echo '<br>Compteur modifie';
        }*/
        echo '<br>FIN WHILE';
    } catch(PDOException $pdoE) {
        //CATCH ERREURS PDO
        die('Erreur:' .$pdoE->getMessage());
    } catch(Exception $e) {
        //CATCH TOUTE ERREURS
        die('Erreur:' .$e->getMessage());
    }
Edited by Talal Abderrazzak (see edit history)
Link to comment
Share on other sites

Bonsoir,

Voila j'ai arrivé à m'adapter mon code :

  $conn= new PDO("mysql:dbname=dev;host=localhost" , "dev", "mot_passe" ,array(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION));
        $find_counts = null;
 
       
$find_counts='SELECT counts FROM '._DB_PREFIX_.'customer  WHERE id_customer = '.(int)Context::getContext()->customer->id;
if ($row = Db::getInstance()->getRow($find_counts))
        echo '<br>Nombre de visite: '.$row['counts'];
 $update_count=' UPDATE `'._DB_PREFIX_.'customer` SET counts= counts+1 WHERE id_customer = '.(int)Context::getContext()->customer->id;
       $results = Db::getInstance()->Execute($update_count);

Tout marche bien sauf que la mise à jour de la valeur de 'counts' n'apprend pas en compte la valeur de l'ID

Des solutions?

Link to comment
Share on other sites

1- pour id_customer essaye avec Context::getContext()->customer->id

2- met (int) devant, c'est une bonne habitude à prendre

3- évite de mettre dans les requetes fz_customer, utilise _DB_PREFIX_

4- elle fait quoi ta requete dans ton premier post ? qu'est ce que tu veux obtenir ?

L'id que récupéré par cette fonction est statique en fait :D

Link to comment
Share on other sites

1- tu mélanges un peu tout

2- oublie PDO 

3- $find_counts est un nombre (3, 8, 51...), donc Db::getInstance()->getRow($find_counts); ne peut rien donner

4- relis ça : https://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/ :

 

Db::getInstance()->getValue renvoi une valeur

Db::getInstance()->getRow renvoi une ligne

Db::getInstance()->executeS renvoi un tableau avec éventuellement plusieurs lignes

Db::getInstance()->delete c'est pour effacer une ligne

Db::getInstance()->update c'est pour mettre à jour une ou plusieurs valeurs

Db::getInstance()->insert c'est pour ajouter des données (lignes)

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...