[PHP] Suri's faq: question4b: C quoi Cron?

Suri's faq: question4b: C quoi Cron? [PHP] - PHP - Programmation

Marsh Posté le 25-02-2003 à 13:30:15    

  • Question 1:

en fait je voudrais remplacer tous les [b ]*[/b ] par <b>*</b>  
donc si ya qu'une balise b ca marche avec ca: "\[b\](.*)\[\/b\]"  
mais quand yen a plusieurs faut un truc du genre... et j'arrive pas a passer une chaine derriere ^ ...:  
\[b\](^"\[b\]"*)\[\/b\]  
 

Réponse1 :
preg_replace("/\[b\](.*?)\[\/b\]/s", "<b>\\1</b>", $chaine);

Citation :

By default, a quantified subpattern is "greedy", that is, it will match as many times as possible (given a particular starting location) while still allowing the rest of the pattern to match. If you want it to match the minimum number of times possible, follow the quantifier with a "?". Note that the meanings don't change, just the "greediness":
 
    *?    Match 0 or more times
    +?    Match 1 or more times
    ??    Match 0 or 1 time
    {n}?   Match exactly n times
    {n,}?  Match at least n times
    {n,m}? Match at least n but not more than m times    
 


 
 
----------------------------------------
 

  • Question 2:

bon encore un pb de regexp qui me prend la tete depuis hier:
je remplace les : ), : /, : ( par des images de smiley, jusque la c bon, par ailleurs, je remplace les http://blablabla par des balises <a>.. la aussi ca va, le pb c quand les deux sont combinés... evidemment mon smiley : / va matcher ds les urls aussi... :(
Donc je suis en fait toujours plus ou moins sur le pb de la question 1 ou comment dire: matche ce qui ne commence pas par telle chaine...
actuellement ma regexp c ca:
$str = eregi_replace("http:\/\/([^\t\[ ]*)", "<a target=\"_blank\" class=\"text_xsmall\" href=\"http://\\1\">http://\\1</a>", $str);
mais ces messieurs les smileys sont passés avant:
$str = str_replace($smiley->smiley_code, "<img src=\"".$smiley->smiley_url."\" border=0> ", $str);

 
Reponse2:
verifier si le smiley n'est pas précédé de p et suivit de /  
 
----------------------------------------
 

  • Question 3:

j'y comprend plus rien ds mes cookies la...
je le crée comme ca: setcookie("ck_login", $login, time()+3600);
il est bien créé (je verifie avec getallheaders())
par contre, si je fais print $HTTP_COOKIE_VARS['ck_login']; ds une fct ca marche pas...  et le plus bizarre c que print $ck_login marche lui :o

 
Reponse3
déclarer le $_COOKIE en tant que variable globale dans la fonction :
http://www.php.net/manual/fr/langu [...] .scope.php
 
----------------------------------------
 

  • Question 4:

Du SQL cette fois....:
j'aimerais faire un truc du genre:
UPDATE matable SET champ=1 WHERE plop=31
             and SET champ=2 WHERE plop=53
 
jsuis obligé de faire deux requetes update? :/
 
merci
 :jap:


Message édité par Suri le 10-03-2003 à 10:36:23

---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 25-02-2003 à 13:30:15   

Reply

Marsh Posté le 25-02-2003 à 13:37:14    

preg_replace("/\[b\](.*?)\[\/b\]/s", "<b>\\1</b>", $chaine);


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 25-02-2003 à 13:40:21    

et si on ecrit comme ça, ça marche ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 25-02-2003 à 13:40:58    

j'ai intérêt à m'accrocher moi  :ouch:  
 
bon ben je vais aller relire ma doc, ça m'apprendra à décrypter le truc ;)
 
(oui j'avoue que le sujet m'intéressait :whistle:)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 25-02-2003 à 13:47:07    

Reply

Marsh Posté le 25-02-2003 à 14:08:41    

bah oui ca marche merci :jap:
mais je capte pas ce qu'est censé remplacer le "?" ?? (ds ce cas la)


Message édité par Suri le 25-02-2003 à 14:12:21

---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 25-02-2003 à 14:10:16    

pour ceux qui veulent un peu d'explications sur les perl regexp : http://www.perl-gratuit.com/cgi-bi [...] erlre.html

Reply

Marsh Posté le 25-02-2003 à 14:53:17    

http://www.php.net/manual/fr/pcre.pattern.syntax.php
http://www.perldoc.com/perl5.6/pod [...] xpressions
 
? c pour la greediness, voir deuxieme lien


Message édité par beleg le 25-02-2003 à 14:53:49
Reply

Marsh Posté le 25-02-2003 à 14:58:51    


aah merci... jsavais meme pas qu'on pouvait combiner * + et ? comme ca [:splinter]  
:jap:


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 25-02-2003 à 21:29:42    


 
 \o/ merci


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 25-02-2003 à 21:29:42   

Reply

Marsh Posté le 25-02-2003 à 21:41:24    

kadreg a écrit :


 
 \o/ merci


 
rhoooo, enfin un slip propre pour rincevent, les fans l'attendaient avec impatience

Reply

Marsh Posté le 26-02-2003 à 11:39:50    

  • Question 2:


bon encore un pb de regexp qui me prend la tete depuis hier:
je remplace les : ), : /, : ( par des images de smiley, jusque la c bon, par ailleurs, je remplace les http://blablabla par des balises <a>.. la aussi ca va, le pb c quand les deux sont combinés... evidemment mon smiley : / va matcher ds les urls aussi... :(
Donc je suis en fait toujours plus ou moins sur le pb de la question 1 ou comment dire: matche ce qui ne commence pas par telle chaine...
actuellement ma regexp c ca:
$str = eregi_replace("http:\/\/([^\t\[ ]*)", "<a target=\"_blank\" class=\"text_xsmall\" href=\"http://\\1\">http://\\1</a>", $str);
mais ces messieurs les smileys sont passés avant:
$str = str_replace($smiley->smiley_code, "<img src=\"".$smiley->smiley_url."\" border=0> ", $str);


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 26-02-2003 à 14:46:45    

Reply

Marsh Posté le 26-02-2003 à 15:52:57    

Il faut modifier tes codes de smileys. En gros il faut lui dire de ne pas remplacer le ":/" s'il est précédé (ou suivi) d'un caractère qui n'est pas un espace.
En clair, il faut remplacer si tu tombes sur " :/" ou un :/ en début de ligne.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 26-02-2003 à 16:51:07    

gm_superstar a écrit :

Il faut modifier tes codes de smileys. En gros il faut lui dire de ne pas remplacer le ":/" s'il est précédé (ou suivi) d'un caractère qui n'est pas un espace.
En clair, il faut remplacer si tu tombes sur " :/" ou un :/ en début de ligne.


 
oui merci en fait je verifie si le smiley n'es pas  precede de p et suivit de /
;)


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 27-02-2003 à 23:35:05    

Question 3:
 
j'y comprend plus rien ds mes cookies la...
je le crée comme ca: setcookie("ck_login", $login, time()+3600);
il est bien créé (je verifie avec getallheaders())
par contre, si je fais print $HTTP_COOKIE_VARS['ck_login']; ca marche pas... (alors que j'ai tjs fait comme ca, ca marchait bien) et le plus bizarre c que print $ck_login marche lui :o
bon moi je veux bien.. mais ca peut pas poser un pb de sécu? de plus, si le register_globals est sur off je suppose que ca ne marchera plus... :/
 


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 27-02-2003 à 23:43:50    

Reply

Marsh Posté le 27-02-2003 à 23:55:15    

gm_superstar a écrit :

$_COOKIE["ck_login"] :??:


ben c la meme chose que $HTTP_COOKIE_VAR[]...
 
mais c bon... je viens enfin de trouver apres bien 2h de recherche ds le vide..
je faisais un test d'une variable cookisée ds une fct... maintenant que je le fait plus dans une fct mais direct ds la page ca marche normalement...
ca reste bizarre... :heink:
 
edit: si si j'ai dit... qd j'appelle mon test de variable via une fct ca marche plus:
details:
entete.php inclu ds mes pages, je met ca:
$var = 0
if ($_COOKIE["ck_login"] == "toto" )
  $var = 1;
ca marche.
 
si je fais:
 
$var = is_user();
print $var; // vaut toujours 0
 
avec is_user()
{
$var = 0
if ($_COOKIE["ck_login"] == "toto" )
  $var = 1;
return $var;
}


Message édité par Suri le 28-02-2003 à 00:08:35

---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 28-02-2003 à 00:08:06    

d'ou ma question, comment ca se passe en fait au niveau des include. car en gros:
 
index.php:
 include(fct_user.php); // qui contient is_user();
 include(entete.php) qui appelle is_user();
 suite...
 
pourtant entete executait bien is_user... mais merdait ds le test du cookie... c tres tres trouble... :/


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 28-02-2003 à 01:03:35    

rien a voir avec les includes, c la portée des variables quil faut etudier

Reply

Marsh Posté le 28-02-2003 à 09:25:46    

Oui exact, tu dois déclarer ton $_COOKIE en tant que variable globale dans ta fonction :
 
http://www.php.net/manual/fr/langu [...] .scope.php


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 28-02-2003 à 12:43:30    

gm_superstar a écrit :

Oui exact, tu dois déclarer ton $_COOKIE en tant que variable globale dans ta fonction :
 
http://www.php.net/manual/fr/langu [...] .scope.php


ah bah voila! merci bien :)
je pensais que les variables d'env, get etc.. ne pouvaient pas etre redefinies en local..


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 09-03-2003 à 20:11:04    

up :D
 

  • Question 4:

Du SQL cette fois....:
j'aimerais faire un truc du genre:
UPDATE matable SET champ=1 WHERE plop=31
             and SET champ=2 WHERE plop=53
 
jsuis obligé de faire deux requetes update? :/

Reply

Marsh Posté le 10-03-2003 à 00:48:57    

oui, je pense qu'il faut 2 requêtes [:proy]  
 
A moins de bidouiller un truc pas propre du tout, du genre :
UPDATE matable SET champ = 1 + (plop = 53) WHERE plop=31 OR plop=53

Reply

Marsh Posté le 10-03-2003 à 00:52:05    

gm_superstar a écrit :

Oui exact, tu dois déclarer ton $_COOKIE en tant que variable globale dans ta fonction :
 
http://www.php.net/manual/fr/langu [...] .scope.php

ou le passer à la fonction, ce qui selon moi serait plus propre :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-03-2003 à 00:53:32    

en fait, jvais exposer directement mon pb ca sera plus simple :D
gestion de messages privés
le contexte:
1 table topic_pm (topic_id, nom_auteur, nom_destinataire, suppr_by_auteur, suppr_by_dest,...)
1 table message_pm (topic_fk_id, post_id, auteur etc...)
 
Si une des deux personnes concernées par le msg privé suppr le topic, ca met son flag (suppr_by_auteur ou suppr_by_dest suivant qui il est) a 1.... et j'affiche que les topic ou ses flags sont a 0.
je peux pas faire de DELETE vu qu'il faut que l'autre personne puisse voir le message.
Le truc c que une fois que les deux flags sont a 1, je dois supprimer a la fois le topic de la table mais aussi les messages associés a ce topic dans l'autre table.
 
ya la methode sauvage de parcourir tout les topic pm de la personne est verifier si c les deux flag sont a 1, a ce moment, on supprime le topic et les messages vu qu'on connait le numero du topic mais bon, ca fait bcp de requetes pour pas grand chose et je trouve ca trop porc :/
 
edit: j'ai vraiment pas l'impression d'etre clair [:sisicaivrai]


Message édité par Suri le 10-03-2003 à 00:54:49

---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 10-03-2003 à 00:56:04    

delete from latable where topicid=x and flag1=1 and flag2=1 [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-03-2003 à 01:02:08    

the real moins moins a écrit :

delete from latable where topicid=x and flag1=1 and flag2=1 [:spamafote]


 
ouais mais les messages :o
vu que j'ai plein de topic deletables en meme tps c ds une boucle donc:
DELETE from topic_pm where flag1=1 and flag2=2 and (topicid=1 OR topicid=2 Or ....)
 
seulement apres, pour ma table des message, comment je sais quels topics ont été supprimés moi? [:huit] (c forcement le topic1 et/ou le topic2 et/ou.. mais faut aussi que la condition des flags soit validés... faudrait faire une jointure sur un DELETE [:meganne]  :whistle: )


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 10-03-2003 à 01:09:38    

si le delete du topic retourne 1 (ça veut dire que le topic a été deleté) tu peux deleter les messages correspondant  
 
sinon tu peux deleter en asynchrone, avec un cron par exemple, qui lui prendra le temps de bien regarder ce qu'il peut deleter ou pas  [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-03-2003 à 01:10:39    

Tu peux faire une boucle :
SELECT topic_id FROM topic_pm WHERE ...    // selection des topics à supprimer
...
while ($r = mysql_fetch_array(...)) {
    DELETE FROM message_pm WHERE topic_fk_id = $r['topic_id']
}


Message édité par mrbebert le 10-03-2003 à 01:14:06
Reply

Marsh Posté le 10-03-2003 à 01:11:36    

j'ai pas bien suivi mais je vois pas pourquoi vous voulez faire une boucle :heink:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-03-2003 à 01:15:08    

the real moins moins a écrit :

j'ai pas bien suivi mais je vois pas pourquoi vous voulez faire une boucle :heink:

Il peut avoir plusieurs topics supprimables en même temps [:proy]

Reply

Marsh Posté le 10-03-2003 à 01:20:19    

the real moins moins a écrit :

j'ai pas bien suivi mais je vois pas pourquoi vous voulez faire une boucle :heink:


c le meme principe que les pm d'hfr... t'as tes topic/msg privé.. qd tu le veut plus ben tu suppr.. (case a cocher)
au moment de valider tu peux te retrouver avec plusieurs topics a supprimer...
 
en gros j'ai une seule requete pour deleter les topics mais N requetes pour deleter les messages liés a ces topics :/
 
(avant je deletais direct (pas de flag, un user deletais le topic meme si l'autre voulait pas/avait pas lu) j'avais donc deux requetes:
DELETE FROM topic_pm WHERE topic_id=1 OR topic_id=2 OR ...
et
DELETE FROM msg_pm WHERE topic_id=1 OR topic_id=2 OR ...
c'etait simple [:sisicaivrai])


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 10-03-2003 à 01:21:18    

mrBebert a écrit :

Il peut avoir plusieurs topics supprimables en même temps [:proy]  


vi ca fait pas un peu lourd ca qd meme? :/
 


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 10-03-2003 à 01:30:19    

En fait, je vois pas trop pourquoi il peut en avoir plusieurs à supprimer simultanément :??:


Message édité par mrbebert le 10-03-2003 à 01:30:32
Reply

Marsh Posté le 10-03-2003 à 01:36:24    

mrBebert a écrit :

En fait, je vois pas trop pourquoi il peut en avoir plusieurs à supprimer simultanément :??:


 
http://forum.hardware.fr/forum1.ph [...] &cat=prive
ya plein de pitites cases a cocher sur la droite... et un gros bouton valider
 
 
je m'explique si mal que ca? :D


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 10-03-2003 à 01:52:39    

ha ok
ben ouais alors
sinon si tu veux deleter QUE dans la table topic, avec mysql tu peux faire delete from machin where truc in (x, y, z) mais bon ça t'avance pas pour aller deleter dans ta table de messages apres :)


Message édité par the real moins moins le 10-03-2003 à 01:52:57

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 10-03-2003 à 02:02:05    

the real moins moins a écrit :

ha ok
ben ouais alors
sinon si tu veux deleter QUE dans la table topic, avec mysql tu peux faire delete from machin where truc in (x, y, z) mais bon ça t'avance pas pour aller deleter dans ta table de messages apres :)

Il peut utiliser la même syntaxe avec les 2 tables.
- une requête qui recherche les topics ayant les 2 flags à 1
- construction de la liste à partir de ce résultat
- DELETE FROM topic_pm WHERE topic_id IN $la_liste
- DELETE FROM messages_pm WHERE topic_fk_id IN $la_liste
 
Ca fait 3 requêtes en tout, et ca peut passer dans un cron :)  

Reply

Marsh Posté le 10-03-2003 à 10:28:12    

mrBebert a écrit :

Il peut utiliser la même syntaxe avec les 2 tables.
- une requête qui recherche les topics ayant les 2 flags à 1
- construction de la liste à partir de ce résultat
- DELETE FROM topic_pm WHERE topic_id IN $la_liste
- DELETE FROM messages_pm WHERE topic_fk_id IN $la_liste
 
Ca fait 3 requêtes en tout, et ca peut passer dans un cron :)  
 


moui je vais faire comme ca :)
 
et heu... c koi au juste un cron? :whistle:  :??:


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 10-03-2003 à 10:39:02    

bon j'ai trouvé :D
mais vous vouliez dire de faire la suppression de la table qu'a certains moments? (genre tout les soirs/tous les dimanches des trucs comme ca?)


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed