requete délicate ( avec fonction PHP )

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 : requete délicate ( avec fonction PHP )

par bigfzzz » 13 nov. 2005, 19:48

BON !

le fait d'avoir :
 $tr = ereg_replace("http://www.","",$url);	
$tr = ereg_replace("http://","",$tr); 
me permettait de supprimer soit le HTTP:// seul ou le HTTP://WWW suivant les domaines avec ou sans WWW.

Mon travail (merci du conseil ouckileou ) a été de refaire ma requête SQL comme suit :
SELECT page,COUNT(page) AS nbre,provenance,LEFT(REPLACE(provenance,'http://',''),LOCATE('/',REPLACE(provenance,'http://',''))-1) as prov FROM stats WHERE page='index' GROUP BY prov
et CA FONCTIONNE !!!!! (mais je suis obligé de conservé le WWW ... tant pis )

seul point délicat si mon url tronquée de son HTTP:// ne possède plus de / alors ma variable PROV est vierge et je ne peux plus l'afficher !

Un truc pour restituer ma variable pas 'standard' ?

par ouckileou » 13 nov. 2005, 17:26

Ce n'est pas vraiment une limite, tu ne peux simplement pas mélanger 2 langages aussi simplement que tu le souhaiterais... :)

Mais tente quand même de transposer ta fonction, car il y a des fonctions de chaines et des expressions régulières pour MySQL.
Or ta fonction n'est pas si compliquée et elle peut peut-être être allégée.
Je vois par exemple que tu as deux fois cette instruction :
ereg_replace("http://","",$tr)

par bigfzzz » 13 nov. 2005, 17:14

C'etait l'ultime solution qui s'offrait a moi ... reprendre ma table et la passer à la moulinette soit en créant un champs supplémentaire soit en appliquant directement une modif de mon champs URL ... SNIFFFFFFFF

Tout n'est donc pas possible ... il y a des limites a PHP/SQL ?

par ouckileou » 13 nov. 2005, 16:32

Non ça ne se fait pas, pour dialoguer avec une base de données on utilise du SQL, rien d'autre

Ce que tu peux faire c'est générer du SQL dynamiquent via PHP, mais tu ne peux pas mélanger les 2.

Donc je ne vois pas vraiment comment tu pourrais tout faire d'un coup.

Une solution pourrait être d'ajouter un champ dans ta table, contenant le domaine, et que tu va remplir en appliquant ta fonction à chaque url trouvée dedans.

Et ensuite tu pourras effectuer ta requête en groupant sur les domaines.

Voic tout ce que j'ai à te conseiller personnellement ;)

par bigfzzz » 13 nov. 2005, 16:20

C'est beaucoup trop limité !
Je ne pense pas pouvoir reproduire la meme chose qu'avec ma fonction PHP...
Ca ne se fait pas de mettre une fonction dans une requete ?

Ma question vous laisse sans voix ?

par ouckileou » 12 nov. 2005, 18:32

regarde les fonctions de chaines de caractères mysql tu peux peut-être recréer ta fonction PHP pour MySQL :
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

par bigfzzz » 12 nov. 2005, 17:25

Voici ma fonction de réduction d'URL :
function redurl($url){
if (strpos($url,"/")<>""){
$tr = ereg_replace("http://www.","",$url);	
$tr = ereg_replace("http://","",$tr);
$tq = strpos($tr,"/");
$tr = substr(ereg_replace("http://","",$tr),0,$tq);} 
else {$tr=$url;} 
return $tr; }
Et ma requete :
$req="SELECT page,COUNT(page) AS nbre,[color=red]provenance[/color] FROM stats WHERE page='index' GROUP BY [color=red]provenance[/color]"; $result = mysql_query($req);
donc il faut que passe provenance dans ma fonction !

par ouckileou » 12 nov. 2005, 17:16

Salut,

tu peux montrer le petit bout de code qui correspond à ce que tu essayes de faire ?

Si je comprend tu souhaites juste insérer le résultat de ta fonction dans le code de la requête SQL ?
Si c'est bien ça il suffit juste de concaténer le code SQL avec le retour de ta fonction...

requete délicate ( avec fonction PHP )

par bigfzzz » 12 nov. 2005, 10:51

Bonjour ,
Premier post ici .... :D

je désire effectuer une requete SQL intégrant une fonction PHP... j'explique :
pour faire des stats, je récupère l'url de provenance des visiteurs de mon site sous la forme : "http://www.phpfrance.com/forums/posting ... wtopic&f=3". Je ne veux faire un tri que sur le site et pas sur la page DONC je crée une fonction PHP redurl($url) qui me reduit cette url a : "phpfrance.com" (jusque là tout va bien ! :wink: )
Je desire grouper mon résultat SQL par provenance:
SELECT page,COUNT(page) AS nbre,provenance FROM stats WHERE page='index' GROUP BY provenance (jusque là tout va bien ! :wink: )

Sauf que si la provenance vient d'une autre page d'un site ? alors je vais avoir un résultat groupé par page de site et non par site !

Il faut donc qu'au moment de la sélection SQL je fasse un GROUP BY redurl(provenance) (et là rien ne va plus ! :( )

CA NE FONCTIONNE PAS ! quelqu'un aurait-il une solution :?: