probleme requete pour afficher nombre de membre en ligne

Eléphanteau du PHP | 23 Messages

09 sept. 2007, 00:02

voila j essaye d afficher le nombre de membres en ligne sur mon site voici ma requete:

$compte = mysql_query(" SELECT *
FROM `espm_membres`
WHERE 1
LIMIT 0 , 30 " );
$compte1 = mysql_fetch_array($compte);
$nombre = $compte1['nombre'];
(j ai trouve se resultat par phpmyadmin oui je suis debutant lol

et voici mon code d 'afficage:
Vous etes <?php echo $nombre;?> membres inscrits
il ne m indique pas d erreur mais ne m'affiche pas le nombre ?

quanf je fait le test d'affichage des erreurs avec ce code:
mysql_query($compte1) or die (mysql_error());
voici sa que sa me dit:

Code : Tout sélectionner

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Array' at line 1
[/code][/php]

voci une partie du code de ma page install de la table:
if(!@mysql_query("CREATE TABLE ". $_POST['prefix'] ."membres (
id MEDIUMINT NOT NULL AUTO_INCREMENT ,
identifiant VARCHAR( 30 ) NOT NULL ,
pseudo VARCHAR( 15 ) NOT NULL ,
passe VARCHAR( 40 ) NOT NULL ,
email TEXT NOT NULL ,
valide BINARY NOT NULL ,
rang SMALLINT NOT NULL ,
INDEX ( id ))"))	{		//Création de la table membres
		echo'<span style="color:#d00000">La table ', $_POST['prefix'] ,'membres n\'a pas put être créé.</span>';	
		exit;

Mammouth du PHP | 881 Messages

09 sept. 2007, 03:00

Pour ma part, je décompose toutes les étapes d'une requête.

Voici ta requête originale:
$compte = mysql_query(" SELECT *
FROM `espm_membres`
WHERE 1
LIMIT 0 , 30 " );
$compte1 = mysql_fetch_array($compte);
$nombre = $compte1['nombre']; 

La voici maintenant décomposée:
$requete = " SELECT * FROM `espm_membres` WHERE 1 LIMIT 0 , 30 ";
$resultat = mysql_query($requete, $db );
$Liste = mysql_fetch_array($resutltat);

La voici maintenant qui donne la bonne réponse:
$requete = " SELECT * FROM `espm_membres` WHERE 1 LIMIT 0 , 30 ";
$resultat = mysql_query($requete, $db );
$nombre = mysql_numrows($resultat);
Soyez artisans de paix

Eléphanteau du PHP | 23 Messages

09 sept. 2007, 04:07

ok mais vla le prob maintenant

Code : Tout sélectionner

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/www/acceuil.php on line 125 Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/www/acceuil.php on line 126
personne pour m'aider???

j ai essayer de cette maniere aussi:
$requete = " SELECT * FROM `espm_membres` WHERE 1 LIMIT 0 , 30 "; 	//Requète permetant de récup les infos du membre nombre de membres
$sql_donnees_membre = mysql_query($requete) or die ('Erreur, impossible de récupérer les informations du membre');	//Execution de la requete
$resultat_donnees_membre = mysql_fetch_array($sql_donnees_membre);	//Triage de la requète

mais quand je lui demande d afficher le nombres de membres voila se qu il m'affiche:
Vous etes Array membres inscrits
[/php]

Mammouth du PHP | 881 Messages

09 sept. 2007, 19:20

Oui, c'est parce que tu ne prends pas la bonne commande.

Il ne faut pas prendre mysql_fetch_array
mais

mysql_numrows


J'utilise souvent cela avant de faire un fetch, ça m'évite de provoquer des erreurs. Ma façon de travailler est la suivante:
$requete = ...
$resultat = ...
if ( mysql_numrows($resultat) > 0) { 
     $contenu = mysql_fetch_object($resultat); 
     print "Dans ton cas j'ajouterais ceci: qu'il y a ".$mysql_numrows($resultat)." visiteurs en ligne.";
} else { 
     print "Aucun résultat"; 
}
Soyez artisans de paix

Eléphanteau du PHP | 23 Messages

09 sept. 2007, 21:00

ok jviens d 'essayer a ta maniere mais tjr rien :cry: :cry: :cry:

voici ma requete:
<?php
//ouverture de la connection a la bdd
connexion();

$requete = " SELECT * FROM `espm_membres` WHERE 1 LIMIT 0 , 30 "; 
$resultat = mysql_query($requete, $db ); 
if ( mysql_numrows($resultat) > 0) { 
     $contenu = mysql_fetch_object($resultat); 
     print $mysql_numrows($resultat);
} else { 
     print "Aucun résultat"; 
} 
//fermeture de la connection a la bdd
mysql_close();
?>
   
et voici le message d'erreur qui ressort
Aucun résultat
!
apparament j utilise mal mes commandes de requetes

Mammouth du PHP | 881 Messages

10 sept. 2007, 14:26

Est-ce que ton appel à la base de données s'appelle bien $db?
Est-ce que ton script est dans un "function"? Si c'est le cas, il faudra fournir la valeur de $db en argument.
$db devrait être quelque chose comme:
$db = mysql_connect ("localhost", "Code_acces_a_la_base", "Mot_de_passe");
$sel = mysql_select_db("nom_de_la_base_de_donnees");
Soyez artisans de paix

Eléphanteau du PHP | 23 Messages

10 sept. 2007, 15:46

voici mon fichier fonctions.php
<?php

error_reporting(E_ALL ^ E_NOTICE);	//On ne rapporte pas les erreurs NOTICE

function form($valeur)		//On sécurise la valeur
	{
	$valeur = (!get_magic_quotes_gpc()) ? addslashes($valeur) : $valeur;
	$valeur=trim(htmlspecialchars($valeur));
	return $valeur;
	}

function connexion()	//Cette fonction sera appelée dès que l'on aura besoin de toucher à la base
	{
	require_once 'configuration.php';	//On inclue le fichier de configuration
	if(!@mysql_connect(SERVEUR, UTILISATEUR, PASSE))	{
	echo'<div id="erreur_generale">', GENERAL_ERREUR_CONNEXION_BDD, '</div>'; exit;	}
	if(!@mysql_select_db(BASE, mysql_connect(SERVEUR, UTILISATEUR, PASSE)))	{
	echo'<div id="erreur_generale">', GENERAL_ERREUR_CONNEXION_BDD, '</div>'; exit;	}
	}

function id_aleatoire()
	{
	$elements = "abcdefghijklmnopqrstuvwxyz0123456789AZERTYUIOPMLKJHGFDSQWXCVBN";
	srand(time());
	for ($ligne=0;$ligne<30;$ligne++)
		{
		@$retour.=substr($elements,(rand()%(strlen($elements))),1);
		}
	return $retour;
	}
?>
et mon fichier

configuration.php
<?php
define(SERVEUR, "localhost");
define(UTILISATEUR, "root");
define(PASSE, "*******");//le mot de passe est correct mais pas inscris par discretion
define(BASE, "mysql");
define(PREFIX, "membres_");
?>


Mammouth du PHP | 881 Messages

10 sept. 2007, 17:51

Ta fonction "connexion" ne retourne aucune valeur.
C'est, je crois la source du problème.

La fonction devrait retourner la valeur $db ou son équivalent.
Soyez artisans de paix

Eléphanteau du PHP | 23 Messages

10 sept. 2007, 19:09

pouf je m y perd moi le script n est pas de moi donc difficile a comprendre voici le fichier connecte ou est place les membres connectes il me faudrais sa mais en chiffre et pas la liste des pseudos:

fichier connecte.php
<?php
include_once 'recup_config.php';	//On récupère la configuration du script
$titre_page = CONNECTES_TITRE;	//Définition du titre de la page
include_once 'verifications.php';	//On inclue les vérifications

if(@$_SESSION['session'])
	include_once 'verifications.php';	//On inclue les vérifications si le membre est connecté



echo'<div align="center"><h1>', CONNECTES_TITRE, '</h1>';

if($support_connectes != 1) exit;

echo'<table class="connectes"><tr><th class="pseudo">', CONNECTES_PSEUDO, '</th><th class="action">', CONNECTES_DERNIERE_ACTION, '</th></tr>';

$fichiers = array();
$repertoire = 'connectes/';
$ouverture = opendir($prefix.$repertoire);
while (FALSE !== ($lecture = readdir($ouverture))) {
   $fichiers[] = $lecture;
}

foreach ($fichiers as $element)
{
	if ($element !== '.' AND $element !== '..')
	{
	
	if( filectime($repertoire.$element) < filemtime($repertoire.$element) AND filemtime($repertoire.$element) < time()-300 )
		unlink($repertoire.$element);
	
	elseif( filectime($repertoire.$element) < time()-300 )
		unlink($repertoire.$element);
	
	$derniereAction = (filectime($repertoire.$element) < filemtime($repertoire.$element)) ? filemtime($repertoire.$element) : filectime($repertoire.$element);
	
	echo'<tr><td>', str_replace('.txt', '', $element), '</td><td>'. date('d/m/Y à H:i', $derniereAction) .'</td></tr>';
		
	}
}
echo'</table>
	<br /><br />
	<a href="acceuil.php">', GENERAL_RETOUR, '</a></div>';


?>
et le resultat donnse sa:
Pseudo Dernière action
admin 10/09/2007 à 19:17

Mammouth du PHP | 881 Messages

11 sept. 2007, 19:38

Ajoute une ligne à la fin de

function connexion()    //Cette fonction sera appelée dès que l'on aura besoin de toucher à la base
    {
    require_once 'configuration.php';    //On inclue le fichier de configuration
    if(!@mysql_connect(SERVEUR, UTILISATEUR, PASSE))    {
    echo'<div id="erreur_generale">', GENERAL_ERREUR_CONNEXION_BDD, '</div>'; exit;    }
    if(!@mysql_select_db(BASE, mysql_connect(SERVEUR, UTILISATEUR, PASSE)))    {
    echo'<div id="erreur_generale">', GENERAL_ERREUR_CONNEXION_BDD, '</div>'; exit;    }
    return mysql_connect(SERVEUR, UTILISATEUR, PASSE);
    }
et ta ligne de programme principal deviendra
$db = connexion();
Soyez artisans de paix

Eléphanteau du PHP | 23 Messages

11 sept. 2007, 19:43

impec sa fonctionne merci beaucoup Patriboom tu ma été d'un grand secour!!!!j ai bien cru ne pas y arrive merci encore