Rechercher : dans
Par :

Ma variable me renvoi array

Dernière réponse le 7 jui 2009 à 16:00:15 Tulifer, le 6 jui 2009 à 18:07:49 
 Signaler ce message aux modérateurs

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> ';
}

Configuration: Windows Vista
Firefox 3.5

Meilleures réponses pour « Ma variable me renvoi array » dans :
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[PHP] Méthodes de débogage VoirI. Informations sur une variable I.1 echo I.2 print_r() I.3 var_dump() / var_export() I.4 Rediriger la sortie (ne pas afficher à l'écran) II. "Backtrace" ou rapport de contexte III. Bien utiliser les rapports d'erreur IV. Le mot clé...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Variables d'environnement VoirVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...

1

le père, le 6 jui 2009 à 18:54:54

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]

Répondre à le père

2

moderno31, le 6 jui 2009 à 18:55:58

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 ?

Répondre à moderno31

3

Tulifer, le 6 jui 2009 à 20:24:28

@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.

Répondre à Tulifer

4

Tulifer, le 6 jui 2009 à 20:36:35

@le père Oui mais je ne sais pas quoi récupérer.

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

Répondre à Tulifer

5

Tulifer, le 6 jui 2009 à 20:37:35

Le père: Je ne sais pas quoi récupérer

moderno31: Oui tout fonctionne dans la bdd

Répondre à Tulifer

6

Tulifer, le 6 jui 2009 à 20:44:00

Le père: Je ne sais pas quoi récupérer

moderno31: Oui tout fonctionne dans la bdd

Répondre à Tulifer

7

Tulifer, le 6 jui 2009 à 20:45:12

Désolé, mes messages ne s'affichait pas donc je repostait après :(.

Répondre à Tulifer

8

moderno31, le 6 jui 2009 à 20:50:16

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.

Répondre à moderno31

9

Tulifer, le 6 jui 2009 à 21:04:47

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/>';

}

Répondre à Tulifer

10

moderno31, le 6 jui 2009 à 22:24:04

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 ??)

Répondre à moderno31

11

le père, le 6 jui 2009 à 23:22:30

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/>';

Répondre à le père

12

moderno31, le 7 jui 2009 à 08:31:22

Suit ce que te dis le père.. J'avoue etre un peu perdu là

Répondre à moderno31

13

Tulifer, le 7 jui 2009 à 09:18:28

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.

Répondre à Tulifer

14

Ozimandias, le 7 jui 2009 à 09:38:14

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
Deux intellectuels assis vont moins loin qu'une brute qui ma­rche.
!!! Vous avez obtenu une réponse ... Pensez à marquer vos su­jets comme résolus !!!

Répondre à Ozimandias

15

le père, le 7 jui 2009 à 09:51:06

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

Répondre à le père

16

Tulifer, le 7 jui 2009 à 10:04:53

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.

Répondre à Tulifer

24

Ozimandias, le 7 jui 2009 à 11:40:17

Mysql_num_rows sert à conter le nombre d'enregistrements dans le array résultant de ta requète. Deux intellectuels assis vont moins loin qu'une brute qui ma­rche.
!!! Vous avez obtenu une réponse ... Pensez à marquer vos su­jets comme résolus !!!

Répondre à Ozimandias

17

le père, le 7 jui 2009 à 10:20:58

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 *

Répondre à le père

18

le père, le 7 jui 2009 à 10:26:24

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)

Répondre à le père

19

Tulifer, le 7 jui 2009 à 10:27:50

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 ?

Répondre à Tulifer