Aucun Update/insert de ma BDD

Répondre
neo1828
le 22/08/2006 à 11:07
neo1828
Bonjour tout le monde,

J'ai posté un wall
http://www.lephpfacile.com/wall/wall.php?id=3059

Et ma base ne se met pas à jour ni d'insert, je vous ai proposé mon code sur ce wall, j'espère que vous sauriez m'aider...

David.
neo1828
le 22/08/2006 à 11:09
neo1828
RE...

J'ai oublier de préciser que j'ai également changé la ligne ou
INSERT INTO statistique
y est posté, celui-ci est tbl_statistique comme indiqué en fin de script.

Mais malheureusement là n'est pas le problème.
i M@N
le 22/08/2006 à 16:22
i M@N
Hello !

Et c'est quoi l'erreur ? y'en a une ou rien ne s'affiche ??

Sinon essaye comme ça pour voir :
<?php 
/*on ouvre la session*/
session_start();
$session_id = session_id();
/*connexion*/
$base = mysql_connect ('Server', 'user', 'pass') or die('Erreur de connexion');
mysql_select_db ('bases', $base) or die('Base inexistante');
if(!isset($_SESSION['parcours']))
{
/*il s'agit d'un nouveau visiteur*/
/*on crée $_SESSION['parcours'] et $_SESSION['date']*/
$_SESSION['date'] = date('Y-m-d');
$_SESSION['time'] = time('H:i:s');
$_SESSION['parcours']= $_SERVER['REQUEST_URI'];
$parcours=$_SESSION['parcours'];
$time=$_SESSION['time'];
$date=$_SESSION['date'];
$pseudo=$_SESSION['pseudo'];
/*on crée un enregistrement dans la table*/
$sql = "INSERT INTO tbl_statistique VALUES ('$pseudo','$date','$time','$parcours','$session_id')";
}
else
{
/*on ajoute la nouvelle page vue, séparée par un point virgule, à la variable de session*/
$_SESSION['parcours'].= ';'.$_SERVER['REQUEST_URI'];
/*on ajoute à la variable de session l'heure à laquelle la page a été vue*/
$_SESSION['time'].= ';'.time('H:i:s');
$parcours=$_SESSION['parcours'];
$time=$_SESSION['time'];
/*on met la table à jour*/
$sql = "UPDATE tbl_statistique SET parcours='$parcours' WHERE sessid='.$session_id.'";
}
mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
?>

Les concaténations sont souvent chiantes avec les UPDATES, mais tu devrais aussi éviter de compliquer l'écriture de tes requêtes :
$sql = "UPDATE tbl_statistique SET parcours='$parcours'";
$sql .= "WHERE sessid='".session_id()."'";

mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
mouarf !

Enfin j'ai fermé le } avant de lancer la requête, sinon ta première requête ne se fait pas.

@+...
One Love, One Heart, One Unity.
neo1828
le 22/08/2006 à 19:16
neo1828
j'ai exactement mis ton code tel quel... c'est vrai que maintenant il m'affiche une erreur:

Erreur SQL !
INSERT INTO tbl_statistique VALUES ('david','2006-08-22','1156263288','/famille2/nous_test.php','')
Column count doesn't match value count at row 1

j'y travail dessus... autre chose tu ajoute un $ devant session_id, est ce du fait que e "$" fait une "match" sur la donnée de la base?
neo1828
le 22/08/2006 à 19:32
neo1828
Juste une question, si j'ai bien compris, le $session_id, peut être un code aléatoire généré par php non?
neo1828
le 22/08/2006 à 19:40
neo1828
aha trouvé une astuce... .session_id() avec la parenthèze :-) mais là j'ai un truc sur session start heuu
session_start(): Cannot send session cache limiter - headers already sent ...

là je capte rien...
i M@N
le 22/08/2006 à 20:38
i M@N
Reuh ...

lis le code que je te donne :
<?php
/*on ouvre la session*/
session_start();
$session_id = session_id();
/*...*/
?>
je prends la fonction session_id() et j'en fait une variable $session_id ... t'as pas à modifier ça. smiley

Lis aussi les erreurs :
Erreur SQL !
INSERT INTO tbl_statistique VALUES ('david','2006-08-22','1156263288','/famille2/nous_test.php','')
Column count doesn't match value count at row 1
si tu parles anglais ça coule de source, sinon ça veut dire que le nombre de colonnes mentionné dans la requête ne correspond pas au nombre de colonne de la table.
Essaye en insérant toutes les valeurs pour tous les champs de la table.

aha trouvé une astuce... .session_id() avec la parenthèze :-) mais là j'ai un truc sur session start heuu
session_start(): Cannot send session cache limiter - headers already sent ...
là je capte rien...
No comment ... smiley

@+...
One Love, One Heart, One Unity.
neo1828
le 22/08/2006 à 21:06
neo1828
Heu oui en effet... désolé... Je parle trop vite sur le forum :-)! mais le code fonctionne!

Jusque là tout va bien, mais c'est assez bizarre...
- lorsque je me logge d'un auter PC, le pseudo n'est pas inscrit dans la base, une case vide y est affiché à la place.
- lors de viste d'une autre page, si je me trompe pas l'on doit y inclure la ligne tout au dessus "include('stats.php');"
- Si ceci est le cas, je devrais avoir un update avec la seconde page visitée dans ma BDD? Mais ceci ne se fait pas...smiley

Je te remercie beaucoup, je m'escuse d'avoir parlé trop vite et changé trop vite quelques paramètres...
neo1828
le 23/08/2006 à 08:57
neo1828
Boujour à tous...

Je ne sais pas si je me suis bien exprimé. Mais voici le problème enfin une chose que j'aimerais résoudre.

Grâce au Script codé et corrigé ci-dessus, que je remercie d'ailleurs, je parviens à insérer une ligne dans la table pour une connexion d'un pseudo. Les champs dans l'ordre suivant id, sessid, pseudo, parcours se remplissent bien de mon ordinateur.
Lors de la connexion de n'importe quel pseudo d'un autre endroit/pc, seul le champ pseudo reste vide comme si aucune valeur n'y est proposé, par contre les autres champs se complètent.

Aussi à chaque connexion d'un même pseudo, une nouvelle ligne se crée, mais je pensais justement au début d'éviter ceci pour une même date et une même Session ID, seul si qqun par exemple se connecte sur mon ou le même pc une nouvelle ligne se crée avec le pseudo différent. Et biensûr juste une mise à jour de la ligne par le parcour effectué et l'heure. Avez vous une astuce, ou peut être la personne qui à renvoyé se script peut il m'éclaircir?

En tout cas le but de ce script est simple, le nombre de pseudos et les pseudos même sont connus, seul le parcour, la date et l'heure ne sont pas connu. le but est de faire un tracé de ce qui sa passe sur notre site.

Merci d'avance, et encore désolé d'avoir posté trop vite les erreurs qui étaient de ma faute (en plus)...
i M@N
le 23/08/2006 à 09:58
i M@N
Hello !

Donne tous les champs de ta tale tbl_statistique dans l'ordre stp.

Quand un visiteur arrive sur ton site, la première chose qu'il fait c'est se connecter ou il peut surfer sans être connecté ?

@+...
One Love, One Heart, One Unity.
Répondre
LoadingChargement en cours