Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2010, 18h38   #1
Débutant
 
Avatar de SonnyFab
 
Fabrice Sonny
Étudiant
Inscription : mai 2010
Messages : 483
Détails du profil
Informations personnelles :
Nom : Fabrice Sonny
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 483
Points : 165
Points : 165
Envoyer un message via Yahoo à SonnyFab
Par défaut Afficher une partie des news

Bonjour à tous,

J'aimerais réaliser sur mon site une fonctionnalité que j'apprécie dans les grands sites à savoir:
A l'accueil, on affiche les 3 dernières nouvelles, mais rien qu'une partie.
J'ai du mal au moment de l'affichage c'est à dire une partie du message
disons juste quelques mots puis on rajoute un lien intitulé "lire la suite".

Et lorsque le visiteur clique sur ce lien on lui affiche tout le message.

Voici mon extrait de code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
<?php 
// inclure la chaine de connexion
include("connex.php");
//Sélectionne les trois dernières nouvelles (0,3 étant à partir du plus récent, 3 résultats en tout)
		$rqtNews = $bdd->query("SELECT n_id, n_titre, n_contenu, n_date FROM news ORDER BY n_date DESC LIMIT 0,3");
 
	//Affiche seulement s'il y a au moins une nouvelle dans la base de donnée
	if(mysql_num_rows($rqtNews)>=1) {
		$premier=true;
		//Parcours les résultats
		while($ftchNews=mysql_fetch_array($rqtNews)) {
 
 
			//Tronque les textes au nombre de caractères définis par $longueurMax
			//Tronque à l'espace avant ce caractère pour ne pas couper au milieu d'un mot
			$longueurMax=320;
			if(strlen($ftchNews['n_contenu'])>$longueurMax) {
				$ftchNews['n_contenu']=substr($ftchNews['n_contenu'], 0, $longueurMax);
				$position_espace = strrpos($ftchNews['n_texte'], ' ');
				$ftchNews['n_contenu'] = substr($ftchNews['n_contenu'], 0, $position_espace);
				$ftchNews['n_contenu'].='...';
			}
 
			//Ajoute au contenu HTML
			$contenu.='<h3><a href="nouvelles.php?nid='.$ftchNews['n_id'].'">'.$ftchNews['n_titre'].'</a></h3>';
			if($premier) {
				/*if($ftchNews['n_photo']!='') {
					$datePhoto=$ftchNews['n_date'];
					$explDate=explode(' ', $datePhoto);
					$datePhoto=$explDate[0];
					$datePhoto=str_replace('-', '', $datePhoto);
					$photo=$ftchNews['n_photo'];
					$path='im/nouvelles/'.$datePhoto.'_mn'.$photo;
					$contenu.='<p class="imgIndex"><a href="nouvelles.php?nid='.$ftchNews['n_id'].'"><img src="'.$path.'" alt="'.$ftchNews['n_titre'].'" /></a></p>';
				}*/
				$premier=false;
			}
// Puis le reste
Mais j'obtiens cette erreur à l'écran:
Citation:
Warning: mysql_num_rows() expects parameter 1 to be resource, object given in C:\wamp\www\PATRIMOINE\index.php on line 136
La ligne 136 représente celle là:
Code :
if(mysql_num_rows($rqtNews)>=1) {
Merci
__________________
C'est quand tout semble perdu qu'il ne faut jamais abandonner...
SonnyFab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 18h46   #2
Membre éprouvé
 
Avatar de Tesing
 
Xavier Schepler
Étudiant
Inscription : septembre 2009
Messages : 273
Détails du profil
Informations personnelles :
Nom : Xavier Schepler
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2009
Messages : 273
Points : 402
Points : 402
Salut,

Essaye avec count à la place de mysql_num_rows

Si ça ne fonctionne pas il faut que tu regardes la doc de ta librairie de connexion à Mysql. Une méthode doit te donner le nombre de lignes retournées.
__________________
Keep it simple, stupid !
Tesing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 18h53   #3
Débutant
 
Avatar de SonnyFab
 
Fabrice Sonny
Étudiant
Inscription : mai 2010
Messages : 483
Détails du profil
Informations personnelles :
Nom : Fabrice Sonny
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 483
Points : 165
Points : 165
Envoyer un message via Yahoo à SonnyFab
Merci je pense que cela a résolu l'erreur bien que je sais pas pourquoi ça générait cette erreur.

Là il y a une nouvelle erreur et toujours avec les fonctions mysql qu'est- ce qui se passe?
Citation:
Warning: mysql_fetch_array() expects parameter 1 to be resource, object given in C:\wamp\www\PATRIMOINE\index.php on line 139
Je pense que c'est la ligne de:
Code :
1
2
//Parcours les résultats
		while($ftchNews=mysql_fetch_array($rqtNews)) {
Je fetch mal mon résultat là?
__________________
C'est quand tout semble perdu qu'il ne faut jamais abandonner...
SonnyFab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 19h19   #4
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
La seule chose que je peux voir c'est que la fonction que tu utilise, à savoir:

Ne retourne pas ses résultats sous le même format que la fonction traditionnelle

Et c'est probablement ça qui fait planter les fonctions et . Il faudrait que tu vois ce que ta fonction renvoie et sous quel format.

Bonne chance,

Osu
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 19h20   #5
Membre éprouvé
 
Avatar de Tesing
 
Xavier Schepler
Étudiant
Inscription : septembre 2009
Messages : 273
Détails du profil
Informations personnelles :
Nom : Xavier Schepler
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2009
Messages : 273
Points : 402
Points : 402
Tu n'as pas compris d'où venait le problème.
Apparemment tu utilises une librairie de connexion à mysql qui n'est pas celle de PHP avec les fonctions de la famille mysql_*.
Ça ne peut pas marcher. Tu fournis en argument aux fonctions mysql_* des objets avec lesquels elles ne peuvent pas fonctionner.

Quelle librairie as tu choisis pour te connecter à MySQL ?
De quelle classe est l'objet $bdd ?
__________________
Keep it simple, stupid !
Tesing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 19h25   #6
Débutant
 
Avatar de SonnyFab
 
Fabrice Sonny
Étudiant
Inscription : mai 2010
Messages : 483
Détails du profil
Informations personnelles :
Nom : Fabrice Sonny
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 483
Points : 165
Points : 165
Envoyer un message via Yahoo à SonnyFab
J'utilise les PDO (ou du moins un truc comme ça )
Ouais j'ai remarqué merci

voici ma chaine de connexion en local:
Code :
$bdd = new PDO('mysql:host=localhost;dbname=teste', 'root', '');
Voici mon code qui passe (du moins qui affiche une partie du message j'ai pas encore codé la page qui affichera tout le contenu)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
?php
// Le debut du code
 
//Affiche seulement s'il y a au moins une nouvelle dans la base de donnée
	if(count($rqtNews)>=1) {
		$premier=true;
		//Parcours les résultats
		while($ftchNews = $rqtNews->fetch()) {
 
			//Tronque les textes au nombre de caractères définis par $longueurMax
			//Tronque à l'espace avant ce caractère pour ne pas couper au milieu d'un mot
			$longueurMax=320;
			if(strlen($ftchNews['n_contenu'])>$longueurMax) {
				 $ftchNews['n_contenu']=substr($ftchNews['n_contenu'], 0, $longueurMax);
				 $position_espace = strrpos($ftchNews['n_contenu'], ' ');
				 $ftchNews['n_contenu'] = substr($ftchNews['n_contenu'], 0, $position_espace);
				 $ftchNews['n_contenu'].='...';
			}
 
			//Ajoute au contenu HTML
		$contenu='<h3><a href="nouvelles.php?nid='.$ftchNews['n_id'].'">'.$ftchNews['n_titre'].'</a></h3>';
			if($premier) {
				/*if($ftchNews['n_photo']!='') {
					$datePhoto=$ftchNews['n_date'];
					$explDate=explode(' ', $datePhoto);
					$datePhoto=$explDate[0];
					$datePhoto=str_replace('-', '', $datePhoto);
					$photo=$ftchNews['n_photo'];
					$path='im/nouvelles/'.$datePhoto.'_mn'.$photo;
					$contenu.='<p class="imgIndex"><a href="nouvelles.php?nid='.$ftchNews['n_id'].'"><img src="'.$path.'" alt="'.$ftchNews['n_titre'].'" /></a></p>';
				}*/
				$premier=false;
			}
		echo	$contenu.='<p>'.$ftchNews['n_contenu'].' <a href="nouvelles.php?nid='.$ftchNews['n_id'].'" class="lOrange">Plus<span>&raquo;</span></a></p>';
			}
		$contenu='<a href="archives.php" class="lArchives">Archives<span>&raquo;</span></a>';
	}
	?>
Merci pour tout
__________________
C'est quand tout semble perdu qu'il ne faut jamais abandonner...
SonnyFab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 19h26   #7
Membre à l'essai
 
Alexis
Inscription : novembre 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : Alexis
Âge : 23

Informations forums :
Inscription : novembre 2010
Messages : 15
Points : 20
Points : 20
A mon avis il ce sert de pdo pour ce connecter à sa table, d'où la classe bdd
Ghostaunt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2010, 19h44   #8
Membre éprouvé
 
Avatar de Tesing
 
Xavier Schepler
Étudiant
Inscription : septembre 2009
Messages : 273
Détails du profil
Informations personnelles :
Nom : Xavier Schepler
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2009
Messages : 273
Points : 402
Points : 402
ok, si tu utilises PDO, alors fais le jusqu'au bout.

http://fr2.php.net/manual/fr/book.pdo.php

Read The Funny Manual (RTFM).

Code :
1
2
3
 
$rqtNews->rowCount() // à la place de mysql_num_rows($rqtNews)
$ftchNews = $rqtNews-> fetch(PDO::FETCH_ASSOC) // à la place de $ftchNews=mysql_fetch_array($rqtNews)
__________________
Keep it simple, stupid !
Tesing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 19h48   #9
Débutant
 
Avatar de SonnyFab
 
Fabrice Sonny
Étudiant
Inscription : mai 2010
Messages : 483
Détails du profil
Informations personnelles :
Nom : Fabrice Sonny
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 483
Points : 165
Points : 165
Envoyer un message via Yahoo à SonnyFab
Wahou merci Tesing et ton lien est chouette.
C'est sympa à vous merci encore
Allez je me relance dans mes codes
__________________
C'est quand tout semble perdu qu'il ne faut jamais abandonner...
SonnyFab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 20h03   #10
Membre éprouvé
 
Avatar de Tesing
 
Xavier Schepler
Étudiant
Inscription : septembre 2009
Messages : 273
Détails du profil
Informations personnelles :
Nom : Xavier Schepler
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : septembre 2009
Messages : 273
Points : 402
Points : 402
j'avais oublié les parenthèses après le rowCount(), ajoutes-les dans ton code si nécessaire.
__________________
Keep it simple, stupid !
Tesing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h05.


 
 
 
 
Partenaires

Hébergement Web