Ma variable me renvoi array

Résolu/Fermé
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 - 6 juil. 2009 à 18:07
 le père - 7 juil. 2009 à 16:00
Bonjour,

J'ai créer un système de news et un autre de commentaire.

Ma table commentaires
id | idnews | pseudo | message

idnews correspond à l'id de la news pour savoir quel message va a quel news

Moi je souhaite que à coter du lien ou je clic pour écrire un commentaire il y est le nombre de commentaire.
J'ai essayer et ma variable me renvoi Array.


Voici mon code.
$retour = mysql_query('SELECT COUNT(*) AS nb_new FROM news');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_new'];


$nombreDeMessagesParPage = 7; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_new FROM news');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_new'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages



if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT '. $premierMessageAafficher.','.$nombreDeMessagesParPage.'') or die('Erreur :'.mysql_error());




$retourr = mysql_query('SELECT COUNT(*) AS nb_message FROM commentaires WHERE idnews=\''.$donnees['id'].'\'');
$nbcom = mysql_fetch_array($retourr);

while ($donnees = mysql_fetch_array($reponse))
{

$profil = mysql_query('SELECT * FROM connexion WHERE pseudo=\''.$donnees['auteur'].'\'');
$profil2 = mysql_fetch_array($profil);

echo '<p><h3 id="newws" style=" ">' . $donnees['titre'] . '</h3> <p style="font-size: small; text-align: right;" class="auteur">Ecrit par <a style="color: gray;" href="affichage_profil.php?membre='.$profil2['id'].'">' .$donnees['auteur'] . '</a> le ' . date('d/m/Y à H\hi', $donnees['timestamp']) . ' </p> ' . $donnees['contenu'] = bbcode($donnees['contenu']) . '</p><br/><a style="color: #79A325;" href="commentaires.php?id_news=' .$donnees['id']. '">Commentaires '.$nbcom.'</a><br/>';

}
echo ' <br/> Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="index.php?page=' . $i . '">' . $i . '</a> ';
}

27 réponses

Bonjour

$nbcom est le résultat d'un mysql_fetch_array, c'est donc bien un array, rien d'anormal que ça t'affiche array !
À toi de sortir la valeur qui t'intéresse de cet array : $nbcom[0]
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 juil. 2009 à 18:55
Hello,
A quel niveau dans ton code tu as un problème ? J'allais te suggerer de boucler sur ton tableau induit dans la variable $donnees par exemple.
Autre chose est-ce que tu t'es assuré que coté base de données tout est fonctionnel ?
0
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
6 juil. 2009 à 20:24
@lepère Oui mais moi je veut le nombre de commentaire qu'il y sur la news.
Hors je ne sais pas quoi récupérer :S.

@modero31 Oui niveau base de donnée tout fonctionne.
0
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
6 juil. 2009 à 20:36
@le père Oui mais je ne sais pas quoi récupérer.

@moderno31 Oui tout fonctionne correctement dans la base de donnée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
6 juil. 2009 à 20:37
le père: Je ne sais pas quoi récupérer

moderno31: Oui tout fonctionne dans la bdd
0
le père: Je ne sais pas quoi récupérer

moderno31: Oui tout fonctionne dans la bdd
0
Désolé, mes messages ne s'affichait pas donc je repostait après :(.
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 juil. 2009 à 20:50
Pas de souci je vois que tu nous aime bien, le père et moi vu le nombre de massages lol
Tu peux me dire à quelle ligne se situe ton problème de "array" ; il se peut qu'il y ait un rapport avec une boucle.
0
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
6 juil. 2009 à 21:04
Alors la ligne c'est le echo et a la variable $nbcom

$reponse = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT '. $premierMessageAafficher.','.$nombreDeMessagesParPage.'') or die('Erreur :'.mysql_error());




$retourr = mysql_query('SELECT COUNT(*) AS nb_message FROM commentaires WHERE idnews=\''.$donnees['id'].'\'');
$nbcom = mysql_fetch_array($retourr);

while ($donnees = mysql_fetch_array($reponse))
{

$profil = mysql_query('SELECT * FROM connexion WHERE pseudo=\''.$donnees['auteur'].'\'');
$profil2 = mysql_fetch_array($profil);

echo '<p><h3 id="newws" style=" ">' . $donnees['titre'] . '</h3> <p style="font-size: small; text-align: right;" class="auteur">Ecrit par <a style="color: gray;" href="affichage_profil.php?membre='.$profil2['id'].'">' .$donnees['auteur'] . '</a> le ' . date('d/m/Y à H\hi', $donnees['timestamp']) . ' </p> ' . $donnees['contenu'] = bbcode($donnees['contenu']) . '</p><br/><a style="color: #79A325;" href="commentaires.php?id_news=' .$donnees['id']. '">Commentaires '.$nbcom.'</a><br/>';

}
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
6 juil. 2009 à 22:24
Je ne vois pas de soucis dans le code, il faudrait que je l'exécute et que je vois.
S'il te renvoie "array" c''est qu'il n'a pas su le lire ou parce qu'il est vide.
Là j'ai pas le temps de renconstituer ton environnement. Y'a pas un message d'erreur ? Décrit moi exactement ce qui se passe quand tu exécute la page en question (page blanche, erreur, juste array ??)
0
Comme je l'ai mis dans mon premier message, il faudrait que tu affiches $nbcom[0] et non pas $nbcom :
...href="commentaires.php?id_news=' .$donnees['id']. '">Commentaires '.$nbcom[0].'</a><br/>';
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
7 juil. 2009 à 08:31
Suit ce que te dis le père.. J'avoue etre un peu perdu là
0
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
7 juil. 2009 à 09:18
Si je met $nbcom[0] cela va m'afficher 0 à toutes les news alors que certaine ont déjà des commentaires.

@moderno31 Ok pas de souci merci quand même.
0
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
7 juil. 2009 à 09:38
Essaye ça:

$retourr = mysql_query('SELECT *  FROM commentaires WHERE idnews=\''.$donnees['id'].'\'');
$nbcom = mysql_num_rows($retourr); 

// ici, $nbcom contient le nombre d'enregistrements présents dans ta requète
0
Pourquoi ça afficherait toujours 0 ? Si ta requête te retourne un nombre, ça va afficher ce nombre.
J'ai l'impression que tu n'as pas encore saisi que le mysql_fetch_array te retournait TOUJOURS un array (sauf quand il n'y a plus rien), même s'il y a un seul nombre dans la réponse. Et de même que tu utilises les informations extraites avec mysql_fetch_array avec un indice (par exemple tu utilises $donnes['auteur'], pas $donnees tout court), tu dois utiliser un indice pour accéder au contenu de $nbcom. Et comme il y a un seul élément, cet indice c'est 0
0
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
7 juil. 2009 à 10:04
Si j'ai bien sais que mysql_fetch_array me donne un array si je le met seul, mais ne sachant pas quoi récupérer je l'ai mis tout seul.

Maintenant j'ai essayé votre proposition $nbcom[0] et sa m'affiche 0 à toutes les news.

@ozimandias Je veut bien essayer mais a quoi sert ceci mysql_num_rows je ne l'ai jamais utilisé pour le moment.

Edit: ozimandias: Sa ne marche pas.
0
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
7 juil. 2009 à 11:40
mysql_num_rows sert à conter le nombre d'enregistrements dans le array résultant de ta requète.
0
Il y a un problème dans ta requête. Tu comptes les news WHERE idnews=\''.$donnees['id'].'\''); mais $donnees ne contint pas d'idnews... c'est le résultat d'un SELECT COUNT *
0
Remarque : je n'avais pas remarqué que tu avais utilisé un alias, tu peux donc écrire $nbcom['nb_message'] au lieu de $nbcom[0], c'est plus propre (même si ça ne change pas grand chose)
0
Tulifer Messages postés 69 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 13 décembre 2009 1
7 juil. 2009 à 10:27
Non je compte les messages dans commentaire ou idnews est égale à l'id de la news.

$retourr = mysql_query('SELECT COUNT(*) AS nb_message FROM commentaires WHERE idnews=\''.$donnees['id'].'\'');

$donnees['id'] correpond à l'id de la news.

Oui je sais que $donnees ne contient pas d'idnews. Je l'ai mis quelques part ?
0
$donnees['id'] correpond à l'id de la news.
de quelle news ? je ne vois pas où tu l'initialises, donc (sauf si j'ai mal vu) elle est vide, donc tu cherche des commentaires dont l' idnews est vide. Comme ils ont tous (je suppose) un idnews non vide, tu n'en trouves aucun.
Si tu veux afficher les commentaires correspondant à un idnews, il faut bien que tu dises auquel ! Et je ne vois pas où tu le dis.
0