jackbocar

  • Site web
  • Nombre de sujets
    152
  • Nombre de messages
    456
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

jackbocar
le 09/03/2009 à 19:34
Erreur répétition d'IP
Bonjour

J’ai essayé ce que tu m’as proposé. Je n’y arrive pas, le serveur m’envoie des erreurs du genre « vérifie ta syntaxe, revoie ton manuel pauvre C… ».

J’ai remarqué que lorsque je vide la table, il m’envoie l’erreur :
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '127.0.0.1' for key 'PRIMARY'

Je ne comprends pas, vu qu’elle est vide !!!

Une fois le premier enregistrement effectué, je n’ai plus d’erreurs, mais le compteur reste bloqué à 1.

Je crains qu’il ne me faille mettre les mains dans le cambouis…

Jack Bocar
jackbocar
le 17/02/2009 à 12:07
Erreur répétition d'IP
Bonjour,

Mon compteur de nombre connecté, ne fonctionne pas, il affiche uniquement celui qui est en ligne, et pas les autres. Autrement dit, tu ne vois que ta connexion (1).

Alors que mon code avec une connexion MYSQLI, fonctionne correctement !!!

Je ne comprends pas ce qui ne va pas dans mon code PDO ?

Si tu as une solution, merci de m’en faire part.

Jack Bocar


<?php
function db_connect()
{
$result = new mysqli('localhost', 'jackbocar', 'password', 'login');
if (!$result)
throw new Exception('Connexion impossible au serveur de base de donn&eacute;es');
else
return $result;
}

$tps_max_connex = 60;

$temps_actuel = date("U");

$conn = db_connect();
$result = $conn->query('SELECT count(*) FROM visiteurs_online WHERE ip= "'.mysql_escape_string($_SERVER['REMOTE_ADDR']).'"');
$data = $result->fetch_array(MYSQLI_NUM);
$result->close();



if ($data[0]) {
$result = $conn->query('UPDATE visiteurs_online SET time = "'.$temps_actuel.'" WHERE ip = "'.mysql_escape_string($_SERVER['REMOTE_ADDR']).'"');
}
else {
$result = $conn->query('INSERT INTO visiteurs_online VALUES("'.mysql_escape_string($_SERVER['REMOTE_ADDR']). '", "'.$temps_actuel.'")');
}

$heure_max = $temps_actuel - $tps_max_connex;


$result2 = $conn->query('DELETE FROM visiteurs_online where time < "'.$heure_max.'"');
?>

<?php
$conn = db_connect();
$result = $conn->query('SELECT count(*) FROM visiteurs_online');
$data = $result->fetch_array(MYSQLI_NUM);
$result->close();

echo '<span class="visites">Actuellement &nbsp; <em class="bold">' , $data[0] , ' </em> &nbsp; visiteur(s) sur le site </span>';
echo '<span class="visites"> - Votre adresse IP est : <em class="bold"> ';
echo htmlentities($_SERVER["REMOTE_ADDR"], ENT_QUOTES);
echo '</em> </span>';
?>
jackbocar
le 17/02/2009 à 10:37
Erreur répétition d'IP
Bonjour,

Merci de ta réponse.

Désolé, j’ai fais une erreur dans mon modèle de code, je t’ai envoyé un test qui est visiblement le bon.

Dans celui que je me sers en ce moment, l’erreur vient de Mysql : SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '127.0.0.1' for key 'PRIMARY'

J’ai simplement oublié de changer dans mon code qui est en ligne : foreach($result as $row) par foreach($result as $data).

Bien sur, je peux aussi tout passer en $row, mais, je pense que $data dans ce ca la, est préférable.

Merci

Jack Bocar
jackbocar
le 17/02/2009 à 08:17
Erreur répétition d'IP
Bonjour,

J’ai une erreur qui se produit de temps en temps sur mon serveur de test après un rafraichissement de page et sur UBUNTU : « violation répétition de l’adresse IP »

Ca ne se produit pas sur mon serveur de test Windows et Wampserveur.

Voyez-vous une erreur dans mon code ?

Merci de votre aide.

Jack Bocar


Classe connexion
<?php
class db{
private static $instance = NULL;

private function __construct() {
}

public static function getInstance() {

if (!self::$instance)
{
self::$instance = new PDO("mysql:host=localhost;dbname=my_counter", 'login', 'password');;
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}

private function __clone(){
}

} /*** END class ***/

?>




Code visiteurs connectés
<?php
try {

$tps_max_connex = 60;

$temps_actuel = date("U");

$result = DB::getInstance()->query('SELECT count(*) FROM visiteurs_online WHERE ip= "'.mysql_escape_string($_SERVER['REMOTE_ADDR']).'"');
foreach($result as $data)
$dbh = null;

if ($data[0]) {
$result = DB::getInstance()->query('UPDATE visiteurs_online SET time = "'.$temps_actuel.'" WHERE ip = "'.mysql_escape_string($_SERVER['REMOTE_ADDR']).'"');
}
else {
$result = DB::getInstance()->query('INSERT INTO visiteurs_online VALUES("'.mysql_escape_string($_SERVER['REMOTE_ADDR']). '", "'.$temps_actuel.'")');
}

$heure_max = $temps_actuel - $tps_max_connex;

$result2 = DB::getInstance()->query('DELETE FROM visiteurs_online where time < "'.$heure_max.'"');
?>

<?php
$result = DB::getInstance()->query('SELECT count(*) FROM visiteurs_online');
$dbh = null;

echo '<span class="visites">Actuellement &nbsp; <em class="bold">' , $data[0] , ' </em> &nbsp; visiteur(s) sur le site </span>';
echo '<span class="visites"> - Votre adresse IP est : <em class="bold"> ';
echo htmlentities($_SERVER["REMOTE_ADDR"], ENT_QUOTES);
echo '</em> </span>';

}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
jackbocar
le 09/11/2008 à 19:01
Utiliser PDO dans une autre classe
Bonjour,

Si tu veux trouver de la doc et des tutoriels de hautes qualités, sur PDO vas sur ce site :
http://www.phpro.org/

Perso, j'ai refais tous mes sites pour PDO, et pour les serveurs qui sont équipés de PHP 5.2 au minimum.

Moi, je n'utilise pas de class, pour faire des usines à gaz. Je reste simple et fonctionnel. Avec PDO tu peux être simple ou très compliqué, à toi de voir.

Mais le top, c'est le clonage des classes de connexions.

Jack Bocar
jackbocar
le 01/11/2008 à 11:28
Define PATH
Bonjour,

Y a t'il une autre façon de faire ?

<?php
define('PATH_HTTP', 'http://www.monsite.com');
define('PATH_INCLUDE', '/home/m/monsite/www');
?>


Par exemple avec :

<?php
define('SITE_URL', $_SERVER['DOCUMENT_ROOT'] . '/');
?>


Merci de me donner une adresse où voir, j'ai pas trouvé de bonnes explications et un modèle.

Merci

Jack Bocar
jackbocar
le 30/10/2008 à 19:29
Recherche d'un nouvel hébergeur
Je recherche un nouvel Hébergeur pour mes sites Web, il faut qu'il accepte totalement le langage PDO et possède au moins PHP5.2

J'ai un site sur www.nuxit.com/
Deux autres chez www.planet-work.com/

J'ai vu www.nexenservices.com/, je ne sais quoi en dire, il me parait parfait.

Avez-vous d'autres idées pour un bon hébergeur de sites web. Pour le prix, entre 80 et 100 euros l'an, multi domaines.

Merci

Jack Bocar
jackbocar
le 07/10/2008 à 08:48
Problème de syntaxe
Bonjour,

Merci beaucoup, ça fonctionne parfaitement bien.

Jack Bocar
jackbocar
le 06/10/2008 à 16:27
Problème de syntaxe
Problème de syntaxe

Voici mon code complet qui fonctionne très bien, mais avec une limite manuelle de 5 champs par page.

<?php
$hostname = 'localhost';
$username = 'jackbocar';
$password = 'XXXXXXXXXXX';
$dbname = 'base_test';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $dbh->prepare("SELECT id, auteur, type, image, titre, menu, news, isbn FROM librairie ORDER BY auteur ASC LIMIT 5");


/*** bind the paramaters ***/
$stmt->bindParam(':id', $id);
$stmt->bindParam(':auteur', $auteur);
$stmt->bindParam(':titre', $titre);
$stmt->bindParam(':image', $image);
$stmt->bindParam(':menu', $menu);
$stmt->bindParam(':news', $news);
$stmt->bindParam(':isbn', $isbn);

$stmt->execute();

while($row = $stmt->fetch())
{
print ('<a name="'.$row['id'].'"></a>');
print '<div class="LIBRAIRIE"><span class="LIBRAIRIE-id">'.$row['id'].' |</span> &nbsp; <span class="LIBRAIRIE-auteur">Auteur (s) : '.$row['auteur'].'</span> &nbsp; <span class="LIBRAIRIE-titre">'.$row['titre'].'</span>
</div><div class="clearfix" id="LIB"><p class="LIB-style-img">'.$row['image'].'</p>'.nl2br($row['news']).'</div><div class="LIB-FOOT"><span class="LIB-FOOT-isbn">Isbn : '.$row['isbn'].'</span><span class="LIB-FOOT-top"><a href="#" class="menuNav">Top</a></span><span class="LIB-FOOT-print">Print</span></div><br>';
} /*fin première execution */

print ('</div><div id="sidebar" class="column">');
print ('<div class="menuBarTop">La Librairie</div>');

$stmt->execute();
while($row = $stmt->fetch())
{

print ('<a href="#'.$row['id'].'" class="menuNav">'.$row['menu'].'</a><br />');
} /*fin deuxième execution */

$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
<br />


Merci de votre aide

Jack Bocar
LoadingChargement en cours