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

Fermé
Dodi - Modifié par jordane45 le 26/08/2016 à 13:50
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 - 26 août 2016 à 15:11
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

arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 17
Modifié par arshi92 le 26/08/2016 à 13:21
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
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
arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 17 > Dodi
26 août 2016 à 13:46
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
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 4 720
26 août 2016 à 13:52
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
arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 17
26 août 2016 à 14:22
Sur ce point, @jordane45 a raison. Mysql est obsolète et je te conseille également PDO.
0
arshi92 Messages postés 131 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 12 octobre 2017 17
26 août 2016 à 14:40
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
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 4 720
26 août 2016 à 15:11
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