PHP Mysql recherche éléments tableau ds une colonne table

Par Andre66, il y a 3 ans


Base de données MySQL

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

quenti77, il y a 3 ans

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, il y a 3 ans

**
$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, il y a 3 ans

Les echo BR c'est pour aller à la ligne

Andre66, il y a 3 ans

Ce que je veux
Bonjour

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

Andre66, il y a 3 ans

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"

Carouge10, il y a 3 ans

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

quenti77, il y a 3 ans

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, il y a 3 ans

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>