IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Afficher une partie des news


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    if(mysql_num_rows($rqtNews)>=1) {
    Merci

  2. #2
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    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.

  3. #3
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    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?
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Parcours les résultats
    		while($ftchNews=mysql_fetch_array($rqtNews)) {
    Je fetch mal mon résultat là?

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    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

  5. #5
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    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 ?

  6. #6
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    J'utilise les PDO (ou du moins un truc comme ça )
    Ouais j'ai remarqué merci

    voici ma chaine de connexion en local:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Par défaut
    A mon avis il ce sert de pdo pour ce connecter à sa table, d'où la classe bdd

  8. #8
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  9. #9
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Wahou merci Tesing et ton lien est chouette.
    C'est sympa à vous merci encore
    Allez je me relance dans mes codes

  10. #10
    Membre expérimenté
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    j'avais oublié les parenthèses après le rowCount(), ajoutes-les dans ton code si nécessaire.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/12/2010, 19h51
  2. afficher une partie des titres seulement
    Par jane40 dans le forum Beamer
    Réponses: 6
    Dernier message: 03/12/2009, 10h56
  3. afficher une partie des infos de mon sitemap
    Par kaygee dans le forum ASP.NET
    Réponses: 0
    Dernier message: 10/02/2009, 09h22
  4. Réponses: 7
    Dernier message: 04/10/2007, 10h10
  5. [Beamer] Afficher seulement une partie des subsections
    Par gama2ee dans le forum Mise en forme
    Réponses: 1
    Dernier message: 21/09/2007, 23h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo