8722 sujets

Développement web côté serveur, CMS

Bonjour j'aimerais récuperer la derniere idVideo correspondante à sa categorie tout en affichant toute les categories mais le problème c'est que je n'arrive pas a récuperer cette derni-re idVideo.
Pourtant la SQL est bonne car quand je remplace $imgCategory par une catégorie existante dans ma BDD j'obtient bien la derniere idVideo correspondante à la catégorie mais pourtant sur ma page videoCategory['idVideo'] reste vide.
$imgCategory contient bien le label de la category car quand je fais un echo de ce dernier le il s'affiche pour chaque categorie.
Je n'ai aucun message d'erreur.
Voici mon code :

<?php
 $bdd = new PDO('mysql:host=localhost;dbname=jalysia;charset=utf8', 'root', '');
$queryCategory = $bdd->query('SELECT * FROM category');
?>
<main id="category">
    <ul>
    <?php while ($requestCategory = $queryCategory->fetch()) {
        $bdd = new PDO('mysql:host=localhost;dbname=jalysia;charset=utf8', 'root', '');
        $imgCategory = $requestCategory['labelCategory'];
        $queryVideo = $bdd->query("SELECT idVideo from possess WHERE idCategory = (SELECT idCategory FROM category WHERE labelCategory = ' .$imgCategory. ') ORDER BY idVideo DESC LIMIT 0,1");
        $videoCategory = $queryVideo->fetch();
        echo $videoCategory['idVideo'];?>
        <li>
            <a href="<?php echo $requestCategory['linkCategory'] ?>">
                <h3><?php echo $requestCategory['labelCategory']?></h3>
                <img src="screenshot/<?php echo $videoCategory['idVideo'];?>.jpg" alt="Preview <?php echo $requestCategory['labelCategory']?> category">
            </a>
        </li><?php } ?>
    </ul>
</main>
<?php include('footer.php') ?


Je vous remercie d'avance.
Modifié par Chibrax (30 May 2017 - 09:05)
Bonjour,

c'est délicat de dire quelque chose à quelqu'un qui procède tellement différemment. Dès lors, où se situe exactement le problème ?

La méthode 'query' de PDO ne doit pas - en principe - s'utiliser avec les variables. Pour les variables - toujours en principe - on utilise soit ? soit une étiquette ':imgCategory' par exemple... Je pense que vous devriez revoir vos sources sur PDO et les requêtes avec variables.

Smiley smile
Bonjour, pourtant si j'enlève la partie qui effectue la recherche sur idVideo, j'obtient le résultat attendu.
<?php
 $bdd = new PDO('mysql:host=localhost;dbname=jalysia;charset=utf8', 'root', '');
$queryCategory = $bdd->query('SELECT * FROM category');
?>
<main id="category">
    <ul>
    <?php while ($requestCategory = $queryCategory->fetch()) {
   
        <li>
            <a href="<?php echo $requestCategory['linkCategory'] ?>"></a>
                <h3><?php echo $requestCategory['labelCategory']?></h3>
                 <?php echo $requestCategory['labelCategory']?> category">
            </a>
        </li><?php } ?>
    </ul>
</main>
<?php include('footer.php') ?

Modifié par Chibrax (30 May 2017 - 09:55)
Je suis pas sûr du
' .$imgCategory. '

utilise plutot des guillemet double
" .$imgCategory. "
Salut,
est ce que $imgCategory est une chaine de caractère ? Si oui il ne faut pas oublier les guillemets dans la requete sql :
SELECT idVideo from possess WHERE idCategory = (SELECT idCategory FROM category WHERE labelCategory ="toto") ORDER BY idVideo DESC LIMIT 0,1

Lorsque tu veux remplacer toto (et donc laisser les guillemets avant et apres) par ta variable php il y a juste besoin de couper le string et de faire de la concaténation de string
$queryVideo = $bdd->query('SELECT idVideo from possess WHERE idCategory = (SELECT idCategory FROM category WHERE labelCategory = [b]"'.$toto.'"[/b]) ORDER BY idVideo DESC LIMIT 0,1');

Modifié par mathieu1004 (30 May 2017 - 17:24)
C'est bon problème résolu! Mathieu avait raison cela viens bien des guillemets que j'avais oublié merci bcp à toi et à tous les autres! Smiley biggrin Smiley biggrin Smiley biggrin