8796 sujets

Développement web côté serveur, CMS

Bonjour
je me lance dans le PHP

j'ai fait une page que j'ai enregitre en .php

<?php
// Connexion à MySQL
mysql_connect("localhost", "  ", "  ");
mysql_select_db(" ")or die(mysql_error());

// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont 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) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ETAPE 3 : 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);


// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur mon site !'</p>
?>


sur ma page de mon site j'ai mis

<? include('essais.php'); ?>


j'ai cree une table pour une base de donnees et quand je vais sur mon serveur qui heberge mon site et que je vais
-sur administrateur de MySQL
-Administrateur
-SQL
que je selectionne ma table qui est sur mon disque dur et que j'ai cree avec essyPHP
quand je fais execute
voila le message que j'ai



requête SQL:

-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Vendredi 05 Janvier 2007 à 08:40
-- Version du serveur: 4.1.9
-- Version de PHP: 4.3.10
--
-- Base de données: `absalonp`
--
-- --------------------------------------------------------
--
-- Structure de la table `news`
--
CREATE TABLE `news` (
`ip` varchar( 15 ) NOT NULL default '',
`timestamp` int( 11 ) NOT NULL default '0',
KEY `ip` ( `ip` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1

MySQL a répondu:Documentation
#1064 - 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 'DEFAULT CHARSET=latin1' at line 23

je ne comprend pas tous cela ne fonctionne pas est ce que l'on peut m'aider SVP

et bonne journee

Patrick
Administrateur
il suffit de retirer l'instruction DEFAULT CHARSET = latin1 qui n'est pas supportée par cette version de MySQL.
Je m'excuse de revenir mais quand je retire
a écrit :

il suffit de retirer l'instruction DEFAULT CHARSET = latin1 qui n'est pas supportée par cette version de MySQL.


voila mintenant se qu'il me dit

MySQL a répondu:Documentation
#1064 - 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 '-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmya

patrick
De toute façon tu peux supprimer tout ce qui commence par "--" et n'utiliser que la requête SQL:

CREATE TABLE `news` (
`ip` varchar( 15 ) NOT NULL default '',
`timestamp` int( 11 ) NOT NULL default '0',
KEY `ip` ( `ip` )
) ENGINE = MYISAM


Bon courage ++
pour la base de donnees et la table chez mon hebergeur c'est ok en faite je les refais avec notepade2 et c'est ok

par contre ce qui devrait ce passer sur mon site (Il y a actuellement ? visiteurs connectés sur mon site !) ne fonctionne pas

<?php

// Connexion à MySQL

mysql_connect("mon hebergeur", " nom d'utilisateur ", " mot de passe ");

mysql_select_db("nom de la base ")or die(mysql_error());



// -------

// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table

// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont 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) // L'ip ne se trouve pas dans la table, on va l'ajouter

{

    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');

}

else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp

{

    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');

}



// -------

// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes



// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :

$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes

mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);



// -------

// ETAPE 3 : 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);





// Ouf ! On n'a plus qu'à afficher le nombre de connectés !

echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur mon site !'</p>

?>


et sur la page de mon site

<? include('essais.php'); ?>


patrick
Qu'est ce que tu veux dire par "ça ne fonctionne pas" ? Tu as une erreur où il y'a juste rien qui s'affoche ?
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur mon site !'</p>


Là il y'a une erreur c'est :

echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur mon site !</p>';


J'ai testé ton script chez moi et il fonctionne nickel, j'ai juste décomposer mysql_query parce que je trouve que c'est plus clair.

<?php

// Connexion à MySQL
mysql_connect("localhost", "login", "mdp");
mysql_select_db("bdd")or die(mysql_error());

// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont 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) // L'ip ne se trouve pas dans la table, on va l'ajouter 
{
	$sql="INSERT INTO connectes VALUES('".$_SERVER['REMOTE_ADDR']."', '". time()."')";
    mysql_query($sql);
}

else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
	$sql="UPDATE connectes SET timestamp='.time().' WHERE ip=". $_SERVER['REMOTE_ADDR'];
    mysql_query($sql);
}


// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes
// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :

$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ETAPE 3 : 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);

// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur mon site !</p>';
?>


Courage t'es pas loin Smiley cligne
Heu "<? include('essais.php'); ?>" c'est du php donc ça marcherait mieux si c'était inclu dans une page ".php" et non ".htm" je pense Smiley cligne
bonsoir

sa s'ameliore la phrase" Il y a actuellement visiteurs connectés sur mon site !" s'affiche bien mais j'ai un message d'erreur

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\utilisateur\mes documents\test\essais.php on line 25

la ligne est

$donnees = mysql_fetch_array($retour);


ont va y arriver

patrick
Salut,

ca veut dire qu'il y'a une erreur dans la requête SQL.

Mets ça après la ligne "$retour = mysql_query('SELECT COUNT(*) [...];" :

if(!$retour) die mysql_error();


Ca te permettra de voir qu'elle est l'erreur exactement
Modifié par skatybabe (07 Jan 2007 - 08:50)
bonsoir

C'est deja mieu sa fonctionne sur mon pc mais pas sur mon site(sur le net)

voila le message que j'ai.


Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

voir sur http://www.paroissevertsaintvrain.fr

patrick
Modifié par absalonp (07 Jan 2007 - 18:29)