Enregistrement statistique.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Enregistrement statistique.

par charabia » 09 févr. 2007, 15:32

Tu dois avoir un souci de conflit entre les deux requêtes.
Pour éviter ça, nommes la première requête en $sql et $sql1 ça devrait le faire.

par dunbar » 09 févr. 2007, 14:59

Re,

Voici mes deux requetes.
$sql = "INSERT
                              INTO
                              statistique
                              (login, date, chemin, time, ip)
                              values
                              ('".$login."',
                              '".$date."',
                              '".$chemin."',
                              '".$time."',
                              '".$ip."')";

                    $insert = mysql_query($sql) 
or die('Erreur SQL Insert table statistique !'.$sql.'<br>'.mysql_error());
                    

                              $sql = "INSERT
                              INTO
                              statistique_complet
                              (login, date, chemin, time, ip)
                              values
                              ('".$login."',
                              '".$date."',
                              '".$chemin."',
                              '".$time."',
                              '".$ip."')";

                  $insert = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
et la structure de ma TABLE les deux sont identique puisque simplement copié :(
CREATE TABLE `statistique_complet` (
  `id_2` mediumint(11) unsigned NOT NULL auto_increment,
  `login` varchar(50) NOT NULL,
  `time` time NOT NULL,
  `date` date NOT NULL,
  `chemin` text NOT NULL,
  `ip` text NOT NULL,
  PRIMARY KEY  (`id_2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Alors mon soucis est qu'il enregistre bien dans les deux tables mais dans la seconde il oublie un enregistrement à chaque fois :?:

D'avance merci

par sadeq » 09 févr. 2007, 14:12

Si ta clé primaire est le "login" ou l'adresse "IP" dans la deusième table cela ne m'étonne guère. Car ton enregistrement ne supportera pas les doublons.

Tu dois revoir la composition de ta clé primaire dans la table de base et la table de copie en choisissant les champs capables d'identifier un enregistrement dans le temps d'une façon unique tout en autorisant l'enregistrement de l'historique dans le temps des mêmes login ou IP.

La procédure proposée par charabia est la plus simple. Quoiqu'il existe une autre technique basée sur les triggers.

En effet, au niveau de la base de données, tu peux créer et placer un trigger qui observe les ajouts dans la table de base pour qu'il ajoute l'entrée dans la table de copie. Ainsi, le programmeur n'aura qu'à envoyer un seul ordre INSERT (comme tu le fais) qui déclenchera automatiquement ton trigger.

par dunbar » 09 févr. 2007, 13:27

Tu peux juste faire 2 requêtes, une qui enregistre dans la table statistique et l'autre dans statistique1 par exemple. Ca devrait fonctionner.
Non est prie en compte la dernière requete seulement :?:

par charabia » 09 févr. 2007, 12:22

Tu peux juste faire 2 requêtes, une qui enregistre dans la table statistique et l'autre dans statistique1 par exemple. Ca devrait fonctionner.

Enregistrement statistique.

par dunbar » 09 févr. 2007, 11:40

Bonjour,

J'ai créer des statistisque pour mon site et je les enregistre dans la table (statistique) --> :wink: c'est original je sais.
Mon code :
$login                     = $_SESSION['login'];
$date                      = date("Y-m-j");
$_SESSION['chemin']        = $_SERVER['REQUEST_URI'];
$chemin                    = $_SESSION['chemin'];
$time                      = $heure = date("H:i");
$ip                        = $_SERVER["REMOTE_ADDR"];

/********Requete SQL**************************/

$sql = "INSERT
        INTO
        statistique
        (login, date, chemin, time, ip)
        values
        ('".$login."',
        '".$heure."',
        '".$chemin."',
        '".$time."',
        '".$ip."')";

$insert = mysql_query($sql) or die (mysql_error());
Je voudrais pouvoir enregistrée les même dans une autre table (par exemple stat_2 parce que je vide régulièrement la table statistique ce qui me permettrais quand même de garder une trace .

J'ai bien essayer de créer deux fichiers, pour que quand j'éfface les stat il les enregistre dans une autre table juste avant mais alors le soucis est qu'il ne me prend que la première ligne du tableau.



d'avance merci.