Affichage des 4 dernier enregistrement

g-pers - Modifié par g-pers le 16/08/2013 à 17:21
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 - 20 août 2013 à 15:35
Bonjour,
j'ai fais ce code pour l'interet d'afficher les 4 derniere personnes inscrit sur mon site .
j'ai une base de données mysql avec un auto-increment qui est id
mais ça ne marche pas , ça m donne ce message d'erreur
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in 'localhost'line 32
-----
voici mon code php

<?php

$bdd='database';
$host="localhost";
$user="root";
$mdp="";

$connect=mysql_connect ($host,$user,$mdp);
if ($connect > 0)
{




}
else {

echo ("echec de connection");


}
mysql_select_db($bdd) or die("Erreur de connexion à la base de donnée" );

mysql_query("SET NAMES UTF8");

// requette

$query ="SELECT * FROM 'insc' ORDER BY 'id' DESC LIMIT 0 , 4";
$result = mysql_query($query);

//affichage

while ($data= mysql_fetch_array($result))
{

echo $data['nom'] ;
}

// on ferme la connection
mysql_close();

?>

2 réponses

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
19 août 2013 à 19:38
Hello,

Alors avant toute chose je crois qu'il est nécessaire de rappeler qu'il est beaucoup mieux, depuis déjà quelques temps tout de même, de se connecter à une base de données via PDO.

Ensuite j'ajouterai que l'utilisation des requêtes préparées, via PDO bien entendu, c'est top.

Donc voici comment tu peux récupérer les 4 derniers enregistrements des derniers membres inscrits sur ton site... Via PDO :

$req = $pdo->prepare("SELECT * FROM insc ORDER BY id DESC LIMIT 4");
$req->execute();
while($d = $req->fetch()){
$id = $d['id'];
...etc.
}


Voici la classe que j'utilise pour me connecter à mes bases de données via PDO, et ce en précisant une récupération des données en UTF8 (induisant donc un encodage en UTF8 pour ta base de données) :

class PDO2 extends PDO {

	private static $_instance;

	public function __construct( ) {
	
	}

	public static function getInstance() {
	
		if (!isset(self::$_instance)) {
			
			try {
			
				self::$_instance = new PDO(SQL_DSN, SQL_USERNAME, SQL_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
			
			} catch (PDOException $e) {
			
				echo $e;
			}
		} 
		return self::$_instance; 
	}
}


Pour ce qui est de renseigner les identifiants de connexion à la base tu procèdes ainsi (dans ton fichier config.php chargé en amont par exemple) :

define('SQL_DSN', 'mysql:dbname=nom-de-ta-base;host=localhost');
define('SQL_USERNAME', 'utilisateur-de-ta-base');
define('SQL_PASSWORD', 'mot-de-passe-utilisateur');


Et pour la connexion (toujours en amont, par exemple juste après la définition des identifiants de connexion à ta BDD) :

$pdo = PDO2::getInstance();


Après tu es pénard : tu n'as plus qu'à effectuer tes requêtes tel que je te l'ai montré tout en haut, sans avoir à te soucier de lancer la connexion à la base.

A+
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
20 août 2013 à 15:35
Bonjour si tu veux les derniers inscrits il faut utiliser une date c'est plus simple

SELECT *
FROM 'matable'
ORDER BY 'champdate' DESC
LIMIT 0, 4

SELECT *
FROM 'matable'
ORDER BY 'champdate' ASC
LIMIT 0, 4

il faut un champdate de type datetime ou timestamp dans matable (insc)
0
Rejoignez-nous