Décrivez ici votre problème ou ce que vous cherchez à faire.

$ch=explode("|",$resultat[0]['taches']);

//resultat de explode BDD
echo "<br/>";
foreach($ch as $value)
{
echo $value.'<br>';
}
echo "<br/><br/><br/><br/>";

$sql = $bdd->query ("SELECT * FROM `liste_taches`WHERE `id_taches`= $value;");            
$sql ->rowCount();

while ($donnees = $sql->fetch())
  {

echo $donnees['Taches']; 
    }

$sql->closeCursor();

Ce que je veux
Bonjour

Le resultat de explode est un tableau avec ces données
5
7
8

Je recherche toutes ces valeurs dans une table ; mais j'obtiens que la dernière ligne correpondant à 8
Ce que j'obtiens

5
7
8

la ligne de la colonne id_taches = 8

6 - Rechercher, comparer et choisir des solutions techniques

8 réponses


Hello,

En vrai j'ai rien compris mais déjà quand je vois des echo avec plusieurs <br> je pense qu'il faut d'abord revoir le code en amont. Pareil pour rowCount qui ne doit pas être utilisé sur une requête de type SELECT. Et je ne parle pas de l'indentation qui est horribles.

Je te conseil de mieux présenter ton code et de revenir plus tard en expliquant mieux ton problème.

Andre66
Auteur

**
$ch=explode("|",$resultat[0]['taches']);

foreach($ch as $value)
{
echo $value.'<br>';
}

$sql = $bdd->query ("SELECT * FROM liste_tachesWHERE id_taches= $value;");

while ($donnees = $sql->fetch())
{

echo $donnees['Taches'];
}

$sql->closeCursor();**

Andre66
Auteur

Les echo BR c'est pour aller à la ligne

Andre66
Auteur

Ce que je veux
Bonjour

Le resultat de explode est un tableau avec ces données affichées
5
7
8

Andre66
Auteur

ce que je recherche:
C'est de chercher les 3 valeurs (dans l'exemple (voir plus)) dans une table "liste_taches" dans la colonne " id_taches"

bonsoir.
en même temps br sert comme tu dis à aller dans un paragraphe.
et en sql cela ne sert à rien.
regarde du côté de la fonction sql IN

Regarde du côté du IN comme là dit @Carouge10 mais quand je parlais de mieux écrire ton code, je ne parlais pas sur le forum

// $ch ne veut rien dire
$taskIds = explode('|', $result[0]['task_ids']);
$taskIds = array_filter($taskIds, static fn(int $id) => $id > 0);
$sqlTaskIds = implode(',', $taskIds);

$reqTasks = $db->prepare("SELECT id, task, completed FROM task_list WHERE id IN ({$sqlTaskIds})");
$reqTasks->execute();

$tasks = $reqTasks->fetchAll(PDO::FETCH_ASSOC); // Normalement le PDO::FETCH_ASSOC devrais être configuré par défaut
?>
<h2>Tasks<?= count($tasks) ?></h2>
<p class="task">
    <?php foreach ($tasks as $task): ?>
        <p>
            <input type="checkbox" name="task[]" value="<?= $task['id'] ?>" <?= $task['completed'] ? 'checked' : '' ?>>
            <?= $task['task'] ?>
        </p>
    <?php endforeach; ?>
</p>
Andre66
Auteur

Merci beaucoup quenti77!!

Je sais que mon code n'ai pas bien écrit.....
Le php et mysql me servent que en localhost pour me faciliter mes préparations de cours.

<pre><code>

$tableauTaches=explode("|",$resultat[0]['taches']);

$tableauTaches = array_filter($tableauTaches, static fn(int $id) => $id > 0);
$sqlTacheIds = implode(',', $tableauTaches);

$reqTaches = $bdd->prepare("SELECT * FROM liste_taches WHERE id_taches IN ({$sqlTacheIds})");
$reqTaches->execute();

$taches = $reqTaches->fetchAll(PDO::FETCH_ASSOC); // Normalement le PDO::FETCH_ASSOC devrais être configuré par défaut
?>
<h2>Tâches <?= count($taches) ?></h2>
<p>
<?php foreach ($taches as $tache): ?>
<p>
<?= $tache['Taches'] ?>
</p>
<?php endforeach; ?>

</code></pre>