comment faire une requete avec un explode() avant

Par re gg, il y a 9 ans


Bonjour,

J'ai reçus depuis un champs des id qui sont séparé par des virgule je souhterais aprés les chercher sur ma base donnée voir si il correspond sauf que le probléme c'est je ne sais pas comment faire pour récuperer le nombre de partie qui à atait faite pour faire la requete.

$id_groups = explode('/', $id_group); $usergroup = $userModel->getUserGroup($id_groups);

Model :

public function getUserGroup($id) { $db = XenForo_Application::get('db'); $req = $db->query('SELECT * FROM xf_user_group WHERE id = ?', [$id]); return $req; }

8 réponses

SLK, il y a 9 ans

Oh super, je ne connaissais pas ça.
Merci Huggy ^^

SLK, il y a 9 ans

salut,

j'ai beaucoup de mal à te comprendre mais il me semble que ce que tu cherches c'est la fonction count().

Au passage, attention :

  • tu dis que les IDs sont séparés par des virgules mais dans ton "explode" tu utilise le "slash" comme "delimiter".
  • tu as écris $id_group une fois au singulier et au pluriel.
  • tu utilises une requête "query" avec la syntaxe d'une requête préparée.

Est-ce que ce genre de chose peut répondre à ta question ?

$id_groups = explode(',', $id_groups); $nb_id = count($id_groups);
massadu33, il y a 9 ans

Je pense que tu cherches à faire quelque chose du style :

$id_groups = explode(',',$id_group); foreach ($id_groups as $k => $v){ $usergroup = $userModel->getUserGroup($v); //après tu peux rajouter des conditions }

mais peut être ai-je mal compris ta demande !

SLK, il y a 9 ans

ah ouais bien vu, moi je pari sur ta réponse ^^

massadu33, il y a 9 ans

si ça marche n'hésites pas à valider mon commentaire ;)

re gg, il y a 9 ans

Normal que id_group est au pluriel car je stocke le "explode" dedans. J'utilise un CMS XenForo du coup j'ai pas besoin de faire la requete préparé.
En gros le explode ma déviser 3 id en 3 partie le probléme c'est pour faire ma requete car je vousdrais que pdo regarde si les 3 id existe dans la bdd

SLK, il y a 9 ans

Ah d'accord.

En gros le explode ma déviser 3 id en 3 partie
Attends, est-ce qu'on parle bien d'un truc comme ça ?

$id_group = "8,17,42"; $id_groups = explode(',', $id_group); // $id_groups vaut : // array( // [0] => "8", // [1] => "17", // [2] => "42" // )

Si c'est bien ça, massadu33 t'as donné la bonne réponse.

le probléme c'est pour faire ma requete car je vousdrais que pdo regarde si les 3 id existe dans la bdd
Maintenant que tu as les IDs qu'il faut vérifier, bien séparés, tu fait un foreach sur $id_groups pour faire ta requête.
Il me semble que le fait qu'ils soient des "string" ne pose pas de problème.

Si vraiment ce n'est pas ce que tu recherches, essaie d'expliquer clairement ce qu'il te faut.

Huggy, il y a 9 ans

Tu devrais pouvoir faire une requête en utilisant in :

SELECT * FROM xf_user_group WHERE id in (8, 17, 42)

donc en rajoutant la listes des groupes séparés par des virgules