Bonsoir à tous ! Smiley biggrin

J'ai un soucis au niveau d'un de mes projet. En effet je l'ai quasiment abouti mais je n'arrive pas a l'étape ultime Smiley confus !

Concrètement, je vais essayer d'être compréhensif, j'ai une galerie d'image donc le chemin d'acces est inscrit dans ma base de donnée entrée par les utilisateurs => le nom de chaque image est donc aléatoire (c'est mieux).

Je voudrais pouvoir afficher aléatoirement les images sur une page php, par le biais de ma base de données (ex : image a lID 3252 , chemin d'acces :

<p style="">
 
<img src="dossier/<?php echo $affichage_aleatoire;?>"/></p>


Quoi de plus simple avec des variables ? Smiley cligne

Le code php :


<?php
try
{
    // On se connecte à MySQL
    $bdd = new PDO('mysql:host=localhost;dbname=cine', 'root', '');
}
catch(Exception $e)
{
    // En cas d'erreur, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
}
  
// Si tout va bien, on peut continuer
  
$reponse = $bdd->query('SELECT idimage FROM film');
  
// On affiche chaque entrée une à une
while($image = mysql_fetch_array($donnees)
{
 
 $image = array($donnees['idimage']);
}
  
 echo $image
 
 
//on fait un trie aléatoire
 
 
$reponse->closeCursor(); // Termine le traitement de la requête
 
 
  
  
 $reponse = $bdd->query(' SELECT COUNT(*) AS idimage FROM film');
  
$donnees2 = $reponse->fetch() ;
  
  
 echo $donnees2['idimage'];
  
$reponse->closeCursor();
 
$donnees2 = $donnees2['idimage'] - 1 ;
echo $donnees2;
 
 
 $affichage_aleatoire = $image[rand(0,$donnees2)];
 
?>


Ce code bien sur ne fonctionne pas intégralement... Smiley sweatdrop

La composition est très simple : connexion à la base de données , requête pour récupérer le contenu de la table , L'INSERER DANS LA VARIABLE $IMAGE , pour au final avoir un ARRAY utilisable pour la fonction rand (array obligatoire pour générer aléatoirement).

Bref , TOUT fonctionne, sauf l'insertion des données sous forme de ARRAY dans la variable $image... Smiley bawling

En recherchant un peu j'avais trouver la fonction : mysql_fetch_array qui le faisait mais même avec les arguments définies pour dire quel type d'ARRAY nous voulions j'obtiens un message d'erreur "1 argument manquant pour la fonction '. Smiley sweatdrop

Pour moi cette fonction doit être obsolescente , car tout le reste fonctionne parfaitement BIEN !! Smiley fache

N'y aurait t'il pas une autre fonction ou un autre manière plus simple de faire ? Smiley confused

J' attend avec impatience vos retours et vos idées : expert en php je sollicite toute votre attention Smiley smile Smiley smile !
Toutes les fonctions en mysql_ sont obsolètes de toute façon.

Et j'en suis pas certaine, mais à vue de nez le problème vient d'utiliser pdo et mysql_ en même temps^^

Soit tu travailles avec l'extension mysql_ (ou plutôt mysqli_, la première étant obsolète), soit avec PDO, mais pas avec les deux en même temps^^

$mysqli=new mysqli($host,$user,$pass,$db);
 if ($mysqli->connect_error) {
	die('Erreur de connexion (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
}
$reponse = $mysqli->query('SELECT idimage FROM film');

while($image = mysqli_fetch_array($donnees)
{
	$image = array($donnees['idimage']);
}


*code fait de tête, peut comporter des erreurs*
Modifié par Lothindil (02 Sep 2013 - 09:56)
Pour récupérer les enregistrement dans un tableau avec PDO il faut utiliser la commande fetchAll().
Pour sélectionner tes images de manière aléatoire tu peux faire un simple ORDER BY RAND() dans ta requête.


<?php
try
{
  // On se connecte à MySQL
  $bdd = new PDO('mysql:host=localhost;dbname=cine', 'root', '');
}
catch(Exception $e)
{
  // En cas d'erreur, on affiche un message et on arrêt  le tout
  die('Erreur : '.$e->getMessage());
}
  
$reponse = $bdd->query('SELECT idimage FROM film ORDER BY RAND()');

$images = $reponse->fetchAll();

foreach ($images as $image) {
  echo $image['idimage'];
}
Lothindil => le code que je voulais exécuter ne pouvais pas faire comme la technique que tu as annoncé, disons que c'est bon, mais pas pour mon cas précis. Smiley langue

jb_gfx => Par contre la on a vraiment une autre manière de pensée le code , une façon de faire à laquelle je n'avais même pas pensé ! Franchement chapeaux pour la logique qui à découlé de la mienne Smiley smile .

Après adaptation , ca marche encore mieux que dans mes attentes ! Merci encore à tout les deux pour vos réponse, je vous en suis très reconnaissant Smiley lol !

A la prochaine ! Smiley ravi