Afficher les données de ma base de données

Dodi -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
J'ai des images, et à chacune est identifiéepar une valeur spécifique comme suit:
<td><a href="post.php?value=123" rel="nofollow" target="_blank"><IMG src="image></a></td>

Puis j'ai récupéré mes valeurs en post.php comme cela:
<?php
if(isset($_GET['value'])){
 
$valeur_img = $_GET['value'];
}
?>


et ça marche bien, Maintenant je veux extraire les éléments correspondants à cette valeur de ma base de données mais j'arrive pas :(
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("ma_base"); // Sélection de la base
  
$reponse = mysql_query("SELECT  Description,Place,Image FROM table WHERE ID='$valeur_img';")

or die(mysql_error());

mysql_close(); ?>


EDIT : Ajout des balises de code

4 réponses

  1. arshi92 Messages postés 141 Statut Membre 17
     
    Bonjour.
    Quel erreur reçois-tu ?

    Si ta table s'appelle réellement "table" c'est surement cela qui génère l'erreur. Il s'agit d'un mot clé donc il faudra renommer ta table.
    0
    1. Dodi
       
      Bonjour,
      rien ne s'affiche dans l'écran, alors que quand j'écrie un script sql dans ma base de données je reçois l'élément
      je pense qu'il y'a une faute dans [ selecr * from..]
      0
      1. arshi92 Messages postés 141 Statut Membre 17 > Dodi
         
        D'accord. Apparemment les valeurs sont bien récupérées. Maintenant il te faut les afficher. Ton code PHP ne permet que la récupération.
        0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
     
    Bonjour,

    Déjà : Attention ... tu utilises l'ancienne extension Mysql (considérée comme obsolète ! )
    Je t'invite fortement à passer à mysqli ou ( perso je préfère...) la PDO.

    Je t'invite à lire ceci :
    - https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete
    - https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

    Ensuite, il faut récupérer "proprement" les variables AVANT de les utiliser.
    Regardes ici : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index

    Puis ajoutes au début de ton script PHP la ligne de code suivante :
    error_reporting(E_ALL);
    

    pour afficher les éventuelles erreurs PHP.

    Et enfin... si tu as un doute sur ta requête....
    fais en un ECHO puis copie/colle dans PHPMyadmin pour voir si elle fonctionne

    0
  3. arshi92 Messages postés 141 Statut Membre 17
     
    Sur ce point, @jordane45 a raison. Mysql est obsolète et je te conseille également PDO.
    0
  4. arshi92 Messages postés 141 Statut Membre 17
     
    Avec PDO sa donnera. N'hésite pas si tu as des questions.

    <?php
    
    try
    {
     	$bdd = new PDO('mysql:host=localhost;dbname=ma_base;charset=utf8', 'root', 'root');
    }
    catch (Exception $e)
    {
        die('Erreur : ' . $e->getMessage());
    }
    
    //Eviter de mettre directement les valeurs dans la requete. Mettre ? à la place
    $donnees = $bdd->prepare("SELECT Description,Place,Image FROM table WHERE id=?");
    //Mettre les valeurs dans le array suivant l'ordre des ? . Ici id = $valeur_img.
    $donnees->execute(array($valeur_img));
    //Récupère les données après éxécution de la requete dans un tableau
    $reponse = $donnees->fetchAll();
    //Récupère les données de la premiere ligne vu que Id unique donc une seule ligne. Numero va de 0 à l-1
    $reponse = $reponse[0];
    
    echo 'Description : '.$reponse['Description'].'<br/>';
    echo 'Place : '.$reponse['Place'].'<br/>';
    echo 'Image : '.$reponse['Image'].'<br/>';
    
    ?> 
    
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
       
      Si je peux me permettre....

      1 - On place le code de connexion à la BDD dans un fichier à part qu'il suffit d'inclure ensuite dans les pages où on en a besoin. Ca évite de le réécrire sur chaque page du site....

      2 - On pense à activer l'affichage des Erreurs PDO (désactivé par défaut)


      Fichier CnxBDD.php
      try{
      $bdd =new PDO('mysql:host=localhost; 
       dbname=mabdd; charset=utf8', 'user', 'password');
       $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
      } catch(PDOException $e) {
          die('Erreur : ' . $e->getMessage());
      }
      


      3 - On place la requête dans une variable (pour pouvoir en faire un Echo si besoin)

      4- On utiliser la gestion des erreurs PDO (via des Try/Catch)

      Ce qui donnerait donc :
      <?php
      //affichage des erreurs php
      error_reporting(E_ALL);
      
      //connexion à la bdd
      require_once "CnxBDD.php";
      
      //récupération "propre" des variables
      $valeur_img = !empty($_GET['value']) ? $_GET['value'] : 0;
      
      //traitement :
      $sql = "SELECT  Description,Place,Image FROM table WHERE ID= :id"
      $variables = array(':id'=>$valeur_img);
      
      try{
       $donnees = $bdd->prepare($sql);
       $donnees->execute($variables);
      
        //Récupère les données après éxécution de la requete dans un tableau
        $result= $donnees->fetchAll();
        //Récupère les données de la premiere ligne vu que Id unique donc une seule ligne. Numero va de 0 à l-1
        $reponse = !empty($result) ? $result[0] : NULL;
      
      
      
      }catch(Exception $e){
        echo 'Erreur : ' . $e->getMessage();
        echo '<br>Dans la requete :'.$sql;
      
      }
      
      if($reponse){
        echo 'Description : '.$reponse['Description'].'<br/>';
        echo 'Place : '.$reponse['Place'].'<br/>';
        echo 'Image : '.$reponse['Image'].'<br/>';
      }
      
      
      0