PhP erreur Mysql

Résolu/Fermé
yunamdr Messages postés 14 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 19 septembre 2010 - 29 avril 2010 à 11:28
Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 - 4 mai 2010 à 11:51
Bonjour à tous,
j'ai uns ite internet qui est actuellement en construction et j'ai entrepris de faire un compteur de visiteurs par jours.
Malheureusement je reçois une erreur de php :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a5265329/public_html/compteur.php on line 8
voici mon code php
<?php
include ('connexion_bdd.php');


// le champ "ip" est l'adresse ip du visiteur
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . 

$_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // si ip n'est pas dans la table, on l'ajoute.
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . 

')');
}
else // ip déja présente, on met juste à jour le timestamp (temp entre les deux derniers chargements de page)
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . 

$_SERVER['REMOTE_ADDR'] . '\'');
}

// on supprime toutes les entrées dont le timestamp est plus vieux que 1 jour
// On stocke dans une variable le timestamp qu'il était il y a 1 jour :
$timestamp_5min = time() - (86400); // 3600*24 = nombre de secondes écoulées en 1 jour
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


//  affichage du nombre de connectés !
echo '<p>' . $donnees['nbre_entrees'] . '  visiteurs aujourd\'hui</p>';
?>

merci d'avance pour vos réponse :)

10 réponses

Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 3
3 mai 2010 à 09:46
C'est une erreur quand tu as changé les noms pour poster le dump, les doubles guillemets dans :
'"nom de table' ?

Si oui enleve les en recreant ta table avec le nom sans le double guillemet .
Ou alors quand tu fait ta requete met "devant connectes.
1
gabbermaniac Messages postés 137 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 août 2011 12
29 avril 2010 à 11:35
et si tu ajoutes cela à ta ligne mysql_query: or die(print_r($bdd->errorInfo()));


soit

$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' .

$_SERVER['REMOTE_ADDR'] . '\'') or die(print_r($bdd->errorInfo()));

est ce que le message d'erreur est plus précis?
0
yunamdr Messages postés 14 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 19 septembre 2010
29 avril 2010 à 11:39
maintenant il me met avec ce code
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' .

$_SERVER['REMOTE_ADDR'] . '\'') or die(print_r($bdd->errorInfo())); 
$donnees = mysql_fetch_array($retour);


Fatal error: Call to a member function errorInfo() on a non-object in /home/a5265329/public_html/compteur.php on line 9
0
Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 3
29 avril 2010 à 11:47
essaie de remplacer ton :

or die(print_r($bdd->errorInfo()));


Par : or die(mysql_error());
0

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

Posez votre question
gabbermaniac Messages postés 137 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 août 2011 12
29 avril 2010 à 11:51
ah oui c'est pas du pdo !! :S
0
Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 3
29 avril 2010 à 11:54
;)
0
yunamdr Messages postés 14 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 19 septembre 2010
29 avril 2010 à 18:55
:) merci de répondre aussi vite à mes questions :)
alors après implémentation de ton code j'obtient le message d'erreur
Table 'database.nom de la table' doesn't exist

pourtant cette base de donnée existe bien et la table existe aussi.

Les informations avec mon code de connexion à la bdd correspondent
exactement
<?php // Connexion à MySQL
mysql_connect('host', 'user', 'mdp');
mysql_select_db(database');
?>
0
Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 3
Modifié par Tryphon71 le 30/04/2010 à 11:28
Euhhhh

mysql_connect('host', 'user', 'mdp');
Sa correspond a tes valeurs de connexion ou ce sont des variables ? si ce sont des variables il me semble qu'il te manque le '$' avant celles-ci et il ne faut pas les mettre en quote.

Rajoute des or die de la meme facon à la suite de mysql_connect et mysql_select_db....

D'ailleurs je viens de voir, sur ta ligne mysql_select_db(database');

il te manque une simple quote

mysql_select_db('database');
0
yunamdr Messages postés 14 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 19 septembre 2010
Modifié par yunamdr le 1/05/2010 à 00:45
ok merci pour les cotes sinon se sont mes valeurs de connexions sinon il aurait effectivement fallu que je rajoute des $ je vais essayer de rajouter des or die pour voir quel requete pose probleme, merci :) en réalité les cote ne manque mais erreur de copiage :(
0
Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 3
30 avril 2010 à 11:17
ok ok sa te renvoie cette erreur pour toutes tes requêtes ?

Si oui, poste un dump de ta base stp.

Autrement, tu ajoute un texte différent dans chaque or die(mysql_error()); pour cibler quelle requete te pose soucis :

or die(mysql_error()."Texte différent a chaque fois");


Et tu poste le code et la requete qui provoque l'erreur.
0
yunamdr Messages postés 14 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 19 septembre 2010
1 mai 2010 à 18:33
Re alors voila le dump de ma bdd
-- phpMyAdmin SQL Dump
-- version 2.11.4
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Generation Time: May 01, 2010 at 09:32 AM
-- Server version: 5.0.67
-- PHP Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: 'nom de la bdd'//j'ai changer le nom
--

-- --------------------------------------------------------

--
-- Table structure for table '"nom de table'//j'ai changer le nom
--

CREATE TABLE '"nom de table'//j'ai changer le nom (
  'ip' varchar(15) collate latin1_general_ci NOT NULL,
  'timestamp' int(11) NOT NULL,
  PRIMARY KEY  ('ip')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Dumping data for table '"nom de table'//j'ai changer le nom
--
0
yunamdr Messages postés 14 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 19 septembre 2010
3 mai 2010 à 19:19
Merci beaucoup :)
ca marche enfin
a force de relire mon code je voyais plus rien même une erreur aussi stupide que sa
Bonne soirée
0
Tryphon71 Messages postés 41 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 26 juillet 2010 3
4 mai 2010 à 11:51
De rien ;)

C'est vrai que quand on est dans le code a fond, on pas forcément le recul nécessaire pour voir des erreurs dans ce genre ;)

Bonne journée.
0