Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2004 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Erreur PHP - débutant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur PHP - débutant

n°1597110
pepita8
do di dutty whine
Posté le 08-08-2007 à 11:59:48  profilanswer
 

Bonjour,
J'ai un script tout simple qui bug et génére l'erreur suivante : "script not found or unable to stat"
Qu'est ce que ça signifie ? voici le code :
 

Code :
  1. <?php 
  2.   if (!isset($_COOKIE['listing']))
  3.   {
  4.    $user=uniqid(rand(),true);
  5.                      setCookie('listing',$user,time()+3600*24*30,'/','.monsite.fr');
  6.  
  7.    $sql="CREATE TABLE '".$user."' (`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`url` VARCHAR( 100 ) NOT NULL ,`ladate` VARCHAR( 20 ) NULL ,`lheure` VARCHAR( 10 ) NULL) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'details des visites'";
  8.    mysql_query($sql) or die('<b>Erreur SQL sur creation de table :<br>'.mysql_error());
  9.    /*  on y insère les données sur la page en cours  */
  10.    $url_en_cours = 'http://www.monsite.fr/'.$_SERVER['REQUEST_URI'];
  11.    $datedujour = date('Y-m-d');
  12.    $heureencours = date('H:i');
  13.    $sql2="insert into '".$user."' (id,url,ladate,lheure) values ('',$url_en_cours,$datedujour,$heureencours)";
  14.    mysql_query($sql2) or die('<b>Erreur SQL d\'insertion de table :<br>'.mysql_error());
  15.     }
  16. ?>


En fait ce script sert à enregistrer le parcours des visiteurs; étant débutante, c'est le seul moyen que j'ai trouvé.
Merci

mood
Publicité
Posté le 08-08-2007 à 11:59:48  profilanswer
 

n°1597112
pepita8
do di dutty whine
Posté le 08-08-2007 à 12:03:19  profilanswer
 

Juste une précision, ce script est appelé depuis un fichier javascript comme ceci : <script language="text/javascript" src="http://www.monsite.fr/test/listing.php"></script>

n°1597114
flo850
moi je
Posté le 08-08-2007 à 12:05:24  profilanswer
 

<script language="text/javascript" tu veux executer du javascript ( cote client ) et ton script est du php ( coté serveur )  
 
pour suivre tes visiturs, il faut que tu inclus ton code php au debut de chacune des pages de ton site

n°1597116
Kyfun
Les choses se passent !
Posté le 08-08-2007 à 12:09:50  profilanswer
 

Code :
  1. $sql2="INSERT INTO $user (url,ladate,lheure) VALUES ('$url_en_cours', '$datedujour', '$heureencours')";
 

Y'a des chances que ça marche mieux comme ça aussi :D


Message édité par Kyfun le 08-08-2007 à 12:10:03

---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
n°1597119
FlorentG
Posté le 08-08-2007 à 12:16:50  profilanswer
 

Je rêve ou il créé une table à chaque user [:pingouino]

Message cité 2 fois
Message édité par FlorentG le 08-08-2007 à 12:16:57
n°1597131
Kyfun
Les choses se passent !
Posté le 08-08-2007 à 12:47:03  profilanswer
 

FlorentG a écrit :

Je rêve ou il créé une table à chaque user [:pingouino]


 
Elle  :o  
 
Niveau perf ca va etre catastrophique je pense mais bon :D


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
n°1597134
LePhasme
Les Belges domineront le monde
Posté le 08-08-2007 à 12:57:33  profilanswer
 

FlorentG a écrit :

Je rêve ou il créé une table à chaque user [:pingouino]


 
Figure 1 : J'ai séché les cours sur les modèles de données
[:vapeur_cochonne]
 

n°1597191
pepita8
do di dutty whine
Posté le 08-08-2007 à 14:17:08  profilanswer
 

Merci flo850 et InTh3WinDDD : le pb c que mon site tourne avec CMS particulier et je peux uniquement insérer quelque chose dans un fichier Javascript.
 
Oui effectivement je crée une table a chaque user, pour l'instant je souhaite faire tourner ce script que pendant des laps de temps brefs (30 min). D'ailleurs sinon comment gérer ça autrement : j'attends vos lumières (sincèrement) !!!
 
Enfin je ne suis pas informaticienne, et je n'ai donc jamais eu de cours sur le modèle de donnée. Je grapille des infos à droite à gauche, sur le tas. L'hébergeur ne nous jettera pas car c dans le cadre de mon travail que je fais ce script (j'irai quand même pas m'amuser à faire du Php pour le loisir, lol !!!)

n°1597197
pepita8
do di dutty whine
Posté le 08-08-2007 à 14:30:05  profilanswer
 

Sinon serait-il possible d'appeler le script Php depuis l'évenement onLoad Javascript, pour que ça se lance dès le début ?

n°1597198
LePhasme
Les Belges domineront le monde
Posté le 08-08-2007 à 14:30:53  profilanswer
 

En gros pour faire quelque chose de viable dans ton cas, tu dois créer une table users (une seule fois) et tu insere les personnes dedans plutot que créer à chaque fois une table du nom de la personne qui ne contient qu'un enregistrement.
 
PS : tu utilise quel CMS ?

mood
Publicité
Posté le 08-08-2007 à 14:30:53  profilanswer
 

n°1597213
flo850
moi je
Posté le 08-08-2007 à 14:58:30  profilanswer
 

pepita8 a écrit :

Sinon serait-il possible d'appeler le script Php depuis l'évenement onLoad Javascript, pour que ça se lance dès le début ?


oui , mais c'est crade
 
utilsie plutot une image générée en php ( librairie gd ) , au sein de laquelle tu trace l'utilisateur  
 

n°1597326
pepita8
do di dutty whine
Posté le 08-08-2007 à 16:51:12  profilanswer
 

Ok pour faire une seule table, mais après je vais me retrouver avec des volumes de données pas possible dans une seule table, l'autre jour je me suis retrouvée avec une table de 57 000 entrées, c'est ingérable.
 
Le CMS il a été développé exprès pour la société à ce qu'on m'a dit, mais on utilise aussi une suite de logiciels IBM, qui donne des URL bizarres avec plein de chiffres et de lettres mélangées.
Disons qu'en fait ce serveur bizarre affiche les pages et mon script est sur un serveur apache.
 
"Image générée en PHP" : vous m'en demandez trop !!!

n°1597329
flo850
moi je
Posté le 08-08-2007 à 16:55:36  profilanswer
 

57 000 entrée , c'est tout a fait gérable ( un simple mysql gere sans problème des tables de plusieurs millions d'entrée )  
 
par contre, avoir 600 tables, avec en plus le risque qu'un user ai le nom d'une table existante, c'est gore :d
 
après pour la génération d'image , c'est pas si compliqué que ça , mais il faut que ton serveur ai gd

n°1597330
rufo
Pas me confondre avec Lycos!
Posté le 08-08-2007 à 16:58:27  profilanswer
 

image générée par php -> lib GD
et 57000 lignes dans une table, c'est rien. Ex : une table mysql peut contenir plusieurs millions de lignes.

Citation :

Selon la doc :
 
MySQL 3.22 had a 4GB (4 gigabyte) limit on table size. With the MyISAM storage engine in MySQL 3.23, the maximum table size was increased to 65536 terabytes (256^7 – 1 bytes). With this larger allowed table size, the maximum effective table size for MySQL databases is usually determined by operating system constraints on file sizes, not by MySQL internal limits.
 
The InnoDB storage engine maintains InnoDB tables within a tablespace that can be created from several files. This allows a table to exceed the maximum individual file size. The tablespace can include raw disk partitions, which allows extremely large tables. The maximum tablespace size is 64TB.


 
Donc, la limite dépend surtout de l'OS
 
Pour te donner un ordre de grandeur, j'ai actuellement une BD en prod pour un intranet qui fait 30 Mo pour 146000 entrées. Donc pour atteindre les 4Go, je peux en mettre des enregistrements ;)


Message édité par rufo le 08-08-2007 à 16:59:45
n°1597382
omega2
Posté le 08-08-2007 à 17:46:29  profilanswer
 

rufo > J'ai mieux comme exemple, là où je bossais l'an dernier, on avait une table qui recevait chaque jour plusieurs millions de lignes de données. On est très loin des 57 000 de pepita8.
 
pepita8 > A partir du moment où tu as l'identifiant de l'utilisateur dans ta table de log, alors l'ensemble est beaucoup plus facile à utiliser qu'un groupe de 5000 tables. En fait, c'est avoir 5000 tables qui contiennent toutes 10 lignes et qui servent toutes à la même chose qui est ingérable. T'imagines, ce que tu fais, c'est comme si la poste te livrait les pages blanche de ta ville en feuille volante (une feuille par rue ou par nom de famille) sous prétexte que c'est ingérable de tout avoir en un seul volume.
 
En fait, avec une seule table, tu peux savoir en une requête assez simple :
- combien de fois chaque page a été consulté dans la journée "select * from matable where ladate = 'ladatedaujourdhui' "  (ou "ladate>='(ladatedaujourd'hui)' and ladate <'ladatededemain' " si t'as aussi l'heure)  
- qui à demandé telle ou telle page "select dinstinct(userid) from matable where page='machin' "  
- quelles pages ont été regardé par "toto" "select * from matable where userid='(identifiantdetoto)' "  
 
Avec 5000 tables, tu es obligé d'exécuter 5000 requêtes pour avoir les deux premières informations. Impensable.


Message édité par omega2 le 08-08-2007 à 18:08:50
n°1597385
rufo
Pas me confondre avec Lycos!
Posté le 08-08-2007 à 17:53:25  profilanswer
 

c'est pas flo850 mais pepita8

n°1597395
omega2
Posté le 08-08-2007 à 18:08:25  profilanswer
 

Qu'elle idée aussi de citer sans quoter. ;)

n°1597401
pepita8
do di dutty whine
Posté le 08-08-2007 à 18:20:40  profilanswer
 

Après plusieurs tentatives, il apparait impossible d'ajouter quelque chose en haut de page.
 Je vais donc essayer la version image : comment tracer quelqu'un avec une image (dans le principe) ? Qu'est ce que va m'apporter le fait de mettre une image ? et si je l'insère comme avant (au travers de JS), est-ce que ça va mieux marcher ?

n°1597403
TheRom_S
Posté le 08-08-2007 à 18:26:26  profilanswer
 

non, tu l'insère avec un tag <img src="trace.php" />
et dans trace.php, tu fais la partie qui te sert à tracer puis tu génère une image que tu renvoies


---------------
The Rom's, à votre service
n°1597417
Maxaks
Posté le 08-08-2007 à 18:41:40  profilanswer
 

Code :
  1. <?php
  2. header ("Content-type: image/png" );
  3. /**
  4. * tes trucs SQL ici
  5. */
  6. $im = imagecreatetruecolor(1, 1);
  7. imagesavealpha($im, true);
  8. imagefill($im, 0, 0, imagecolorallocatealpha($im, 0, 0, 0, 127));
  9. imagepng($im);
  10. ?>

n°1597603
FlorentG
Posté le 09-08-2007 à 11:33:11  profilanswer
 

pepita8 a écrit :

Ok pour faire une seule table, mais après je vais me retrouver avec des volumes de données pas possible dans une seule table, l'autre jour je me suis retrouvée avec une table de 57 000 entrées, c'est ingérable.


D'après-toi, comment fait un forum comme celui-ci qui a des millions d'enregistrements ? :D

n°1597841
pepita8
do di dutty whine
Posté le 09-08-2007 à 16:54:30  profilanswer
 

Merci Maxaks pour le bout de code et aux autres qui m'ont apporté des éléments de réponse.
Malheureusement aujourd'hui je dois faire un reporting et pour ça écrire des demandes MySql, encore tout un bordel, mais heureusement que j'ai Internet !!! Mais peut-être demain je pourrai me remettre à ce script.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Erreur PHP - débutant

 

Sujets relatifs
erreur Move/Delete sur element ouvertPortail PHP pour club sportif ?
Erreur parse errorpb ligne de code debutant
Comment gerer une fenêtre de mise à jours fichiers due à une erreur?[Résolu] Erreur AJAX
[PHP] Couper une chaîne avec caractères html ?[PHP] Solde avec séparateur de milliers et 2 chiffres après la virgule
[Php][Classe][Debutant] hum, où est l'erreur dans ma classe?[PHP/MySQL] Probable erreur de débutant.
Plus de sujets relatifs à : Erreur PHP - débutant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR