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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  464  465  466  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1723609
ratibus
Posté le 24-04-2008 à 14:04:36  profilanswer
 

Reprise du message précédent :

chaced a écrit :


 
Pourquoi en premiere page le limit a moins d'inpact ?


L'impact n'est pas lié au limit mais à l'offset élevé ;)


---------------
Mon blog
mood
Publicité
Posté le 24-04-2008 à 14:04:36  profilanswer
 

n°1723623
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 14:14:58  profilanswer
 

chaced a écrit :


 
Pourquoi en premiere page le limit a moins d'inpact ?


 
Parce qu'un "LIMIT 0, 50" traite et récupère 50 résultats tandis qu'un "LIMIT 500000, 50" traite 500000 résultat pour en retourner 50
 

fabien a écrit :


tu oublie que les robots des moteurs de recherche lisent toutes les pages, que ca soit du debut, du milieu ou de la fin.
Sans compter les visiteurs qui arrivent sur n'importe quelle page via les pages de resultats des moteurs de recherche.
bref, faut tout optimiser.


 
Je sais bien oui, mais on me fait comprendre qu'une table de navigation n'est pas une bonne idée à cause des ressources utilisées pour la suppression d'un post (et qu'en cas de mass delete ça va foutre le serveur sur les rotules), tandis qu'un limit bouffe beaucoup de ressource lorsqu'on atteint un offset élevé.
 
J'essaye donc de trouver un compromis entre les deux.


---------------
Gamertag: CoteBlack YeLL
n°1723636
kao98
...
Posté le 24-04-2008 à 14:24:46  profilanswer
 

La méthode du between fonctionne dans tous les cas ! Non ?
Si oui, pourquoi vouloir ne la réserver que dans certains cas, et utiliser une autre méthode dans d'autres cas ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1723638
skylight
Made in France.
Posté le 24-04-2008 à 14:25:11  profilanswer
 

Dj YeLL a écrit :


J'essaye donc de trouver un compromis entre les deux.


La mise en cache :love:

n°1723657
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 14:32:46  profilanswer
 

kao98 a écrit :

La méthode du between fonctionne dans tous les cas ! Non ?
Si oui, pourquoi vouloir ne la réserver que dans certains cas, et utiliser une autre méthode dans d'autres cas ?

 

Parce qu'une table de navigation pour un topic de 1.000.000 de post par exemple va contenir l'ID de tous les posts, ainsi que leur "position" :

 


POST_ID | TOPIC_ID | POS
   25   |   12     |  1
   32   |   12     |  2
   51   |   12     |  3
   75   |   12     |  4
  ...   |   ...    | ...
2831433 |   12     | 999998
2831457 |   12     | 999999
2831492 |   12     |1000000

 

Il se passe quoi quand tu supprimes le post 32 ? => il faut recalculer le champ "POS" des 999997 posts qui le suivent avec du "POS - 1", ce qui est "très très très long".

 

Donc si en plus tu massdelete un gugus et qu'il a par exemple 60 posts vers le debut du topic, ben tu fais 60 fois "très très très long"

 
skylight a écrit :


La mise en cache :love:

 

Oué mais je doute que le cache de la page 1732 sur 4871 du topic 3218 sera réutilisé souvent vois tu :o

Message cité 1 fois
Message édité par Dj YeLL le 24-04-2008 à 14:33:28

---------------
Gamertag: CoteBlack YeLL
n°1723701
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 14:54:07  profilanswer
 

J'ai lancé un massdelete de 13000 posts ... je vous dirais quand ça sera fini :whistle:

 

Edit : pour info j'en suis à ~16 minutes

Message cité 1 fois
Message édité par Dj YeLL le 24-04-2008 à 14:58:30

---------------
Gamertag: CoteBlack YeLL
n°1723723
skylight
Made in France.
Posté le 24-04-2008 à 15:06:39  profilanswer
 

Dj YeLL a écrit :


Donc si en plus tu massdelete un gugus et qu'il a par exemple 60 posts vers le debut du topic, ben tu fais 60 fois "très très très long"


Bah non, tu le fais qu'une fois sur chaque topic, ça :spamafote:

n°1723728
drasche
Posté le 24-04-2008 à 15:08:53  profilanswer
 

Dj YeLL a écrit :

J'ai lancé un massdelete de 13000 posts ... je vous dirais quand ça sera fini :whistle:
 
Edit : pour info j'en suis à ~16 minutes


C'est trop. Marque les pour effacement puis efface-les pendant une phase de maintenance. Un update te coûtera moins cher qu'un delete.


---------------
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)
n°1723730
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:10:07  profilanswer
 

skylight a écrit :


Bah non, tu le fais qu'une fois sur chaque topic, ça :spamafote:


 

Code :
  1. FOR EACH ROW BEGIN
  2.    DELETE FROM nav WHERE post_id = OLD.id;
  3.    UPDATE nav SET pos = pos - 1 WHERE post_id > OLD.id;
  4. END//


 
T'es bien obligé de tout recalculer à chaque suppression de ligne ...


---------------
Gamertag: CoteBlack YeLL
n°1723731
masklinn
í dag viðrar vel til loftárása
Posté le 24-04-2008 à 15:10:32  profilanswer
 

drasche a écrit :


C'est trop. Marque les pour effacement puis efface-les pendant une phase de maintenance. Un update te coûtera moins cher qu'un delete.


Dans ce cas il peut plus utiliser between, qui est justement ce qu'il veut faire :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 24-04-2008 à 15:10:32  profilanswer
 

n°1723734
masklinn
í dag viðrar vel til loftárása
Posté le 24-04-2008 à 15:11:42  profilanswer
 

Dj YeLL a écrit :


 

Code :
  1. FOR EACH ROW BEGIN
  2.    DELETE FROM nav WHERE post_id = OLD.id;
  3.    UPDATE nav SET pos = pos - 1 WHERE post_id > OLD.id;
  4. END//


 
T'es bien obligé de tout recalculer à chaque suppression de ligne ...


Ben non, tu mets tout dans une transaction, tu commences par supprimer tous les posts puis tu recalcules tous les ids positionels, et tu commit.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1723737
skylight
Made in France.
Posté le 24-04-2008 à 15:13:19  profilanswer
 

Dj YeLL a écrit :

 
Code :
  1. FOR EACH ROW BEGIN
  2.    DELETE FROM nav WHERE post_id = OLD.id;
  3.    UPDATE nav SET pos = pos - 1 WHERE post_id > OLD.id;
  4. END//
 

T'es bien obligé de tout recalculer à chaque suppression de ligne ...


C'est pas de l'algo optimisé ça :o

Code :
  1. FOR EACH ROW BEGIN
  2.    DELETE FROM nav WHERE post_id = OLD.id;
  3. END//
  4.  
  5. ID = 0;
  6. FOR EACH ROW ORDER BY POST_ID BEGIN
  7.    UPDATE nav SET pos = ID++;
  8. END//
 


:o

Message cité 1 fois
Message édité par skylight le 24-04-2008 à 15:13:56
n°1723740
masklinn
í dag viðrar vel til loftárása
Posté le 24-04-2008 à 15:15:13  profilanswer
 

skylight a écrit :


C'est pas de l'algo optimisé ça :o

Code :
  1. FOR EACH ROW BEGIN
  2.    DELETE FROM nav WHERE post_id = OLD.id;
  3. END//
  4.  
  5. ID = 0;
  6. FOR EACH ROW ORDER BY POST_ID BEGIN
  7.    UPDATE nav SET pos = ID++;
  8. END//


 
 
:o


Code :
  1. DELETE FROM nav WHERE post_id IN ids_to_delete;
  2.  
  3. ID=0;
  4. FOR EACH ROW ORDER BY POST_ID BEGIN
  5.    UPDATE nav SET post = ID++;
  6. END//


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1723745
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:16:48  profilanswer
 

drasche a écrit :


C'est trop. Marque les pour effacement puis efface-les pendant une phase de maintenance. Un update te coûtera moins cher qu'un delete.


 
Je sais, mais même de cette manière ça sera trop long quand même... On peu tpas fermer un forum pendant 3h même s'il est 2h du mat, juste pour supprimer des messages ...
 
Nan je pense que je vais foutre un flag "deleted" à 1, et laisse comme ça...
 
Et à l'affichage on aura :


----------------------------------------
Machin  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message
        |
        |
        |
----------------------------------------
Truc    | Le 23/04/2008 à 16:37
        |-------------------------------
        | Mon message aussi
        |
        |
        |
----------------------------------------
           Message supprimé
----------------------------------------
Bidule  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message aussi, aussi
        |
        |
        |
-----------------------------------------


 
Alors du coup je sais que si sur un page de 30 posts y'avait 25 posts d'un user massdeleté ça va foutre 25 fois "message supprimé" et il ne restera que 5 posts à lire mais :
 
1> Est-ce si courant de mass-delete un user ?
2> A-t-on vraiment souvent 25 posts d'un même user sur un page de 30 posts
3> Quand bien même le 2> arriverait de tps en tps, est-ce vraiment dramatique ?
4> Ne pas oublier qu'en cas de suppression "normal" d'un post par un modo/user, le message sera bien supprimé ... et interdiction de supprimer les messages de plus de X jours.
 
Je pense qu'en prenant tout ça en compte, ça devrait rouler.


---------------
Gamertag: CoteBlack YeLL
n°1723746
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:17:54  profilanswer
 

Merci pour votre aide, je vais regarder ça de plus près :jap:


---------------
Gamertag: CoteBlack YeLL
n°1723747
skylight
Made in France.
Posté le 24-04-2008 à 15:18:17  profilanswer
 

Dj YeLL a écrit :


 
Je sais, mais même de cette manière ça sera trop long quand même... On peu tpas fermer un forum pendant 3h même s'il est 2h du mat, juste pour supprimer des messages ...
 
Nan je pense que je vais foutre un flag "deleted" à 1, et laisse comme ça...
 
Et à l'affichage on aura :


----------------------------------------
Machin  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message
        |
        |
        |
----------------------------------------
Truc    | Le 23/04/2008 à 16:37
        |-------------------------------
        | Mon message aussi
        |
        |
        |
----------------------------------------
           Message supprimé
----------------------------------------
Bidule  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message aussi, aussi
        |
        |
        |
-----------------------------------------




 
 
Avis perso, mais au niveau de l'interface utilisateur finale, je trouve ça à gerber.
les gens s'en foutent de voir des trucs "supprimés"
c'est comme sur clubic, donc ça fait moche :o
 

n°1723750
skylight
Made in France.
Posté le 24-04-2008 à 15:19:50  profilanswer
 

Dj YeLL a écrit :


4> Ne pas oublier qu'en cas de suppression "normal" d'un post par un modo/user, le message sera bien supprimé ... et interdiction de supprimer les messages de plus de X jours.
 
Je pense qu'en prenant tout ça en compte, ça devrait rouler.


 
Oui et non, normalement, tout utilisateur doit pouvoir supprimer ses messages quand il veut, où il veut... loi de 1978 :spamafote:

n°1723752
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:20:08  profilanswer
 

skylight a écrit :


 
 
Avis perso, mais au niveau de l'interface utilisateur finale, je trouve ça à gerber.
les gens s'en foutent de voir des trucs "supprimés"
c'est comme sur clubic, donc ça fait moche :o
 


 
L'exemple n'est pas terrible, ça serait plutôt :
 


/!\ Cette page comporte 27 posts supprimés /!\
----------------------------------------
Machin  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message
        |
        |
        |
----------------------------------------
Truc    | Le 23/04/2008 à 16:37
        |-------------------------------
        | Mon message aussi
        |
        |
        |
----------------------------------------
Bidule  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message aussi, aussi
        |
        |
        |
-----------------------------------------


 
:whistle:


---------------
Gamertag: CoteBlack YeLL
n°1723756
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:21:47  profilanswer
 

skylight a écrit :


 
Oui et non, normalement, tout utilisateur doit pouvoir supprimer ses messages quand il veut, où il veut... loi de 1978 :spamafote:


 
La loi dit qu'il a un droit de modification et de suppression des infos personnelles ... pas qu'il doit pouvoir le faire lui même :o


---------------
Gamertag: CoteBlack YeLL
n°1723759
skylight
Made in France.
Posté le 24-04-2008 à 15:23:05  profilanswer
 

Dj YeLL a écrit :


 
L'exemple n'est pas terrible, ça serait plutôt :
 


/!\ Cette page comporte 27 posts supprimés /!\
----------------------------------------
Machin  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message
        |
        |
        |
----------------------------------------
Truc    | Le 23/04/2008 à 16:37
        |-------------------------------
        | Mon message aussi
        |
        |
        |
----------------------------------------
Bidule  | Le 23/04/2008 à 16:30
        |-------------------------------
        | Mon message aussi, aussi
        |
        |
        |
-----------------------------------------


 
:whistle:


Wi, mais ça revient au même :spamafote:
 
Moi-même, je préfère voir une interface claire, épurée, sans informations inutiles... et pour la plupart des gens ça sera pareil !

n°1723772
ixemul
Nan mais sans blague ! ⚡
Posté le 24-04-2008 à 15:28:07  profilanswer
 

Citation :


Error : Lock wait timeout exceeded; try restarting transaction
INSERT INTO byb_post (category_id, forum_id, topic_id, user_id, username, content, content_cache, is_topic) VALUES(3, 10, 4, 1, "", "plop !", "plop !", 0)


 
[:hahaguy]


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°1723774
masklinn
í dag viðrar vel til loftárása
Posté le 24-04-2008 à 15:28:40  profilanswer
 

Flag => caca, si ça affiche des pages qui au final n'ont pas le même nombre de posts :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1723782
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:33:18  profilanswer
 

masklinn a écrit :

Flag => caca, si ça affiche des pages qui au final n'ont pas le même nombre de posts :o


 
Je n'arrive pas comprendre ton code :
 

Code :
  1. DELETE FROM nav WHERE post_id IN ids_to_delete;
  2. ID=0;
  3. FOR EACH ROW ORDER BY POST_ID BEGIN
  4.    UPDATE nav SET post = ID++;
  5. END//


 
C'est quoi, un trigger ? Le ids_to_delete il sort d'où ?


---------------
Gamertag: CoteBlack YeLL
n°1723787
skylight
Made in France.
Posté le 24-04-2008 à 15:37:15  profilanswer
 

Dj YeLL a écrit :

 

Je n'arrive pas comprendre ton code :

 
Code :
  1. DELETE FROM nav WHERE post_id IN ids_to_delete;
  2. ID=0;
  3. FOR EACH ROW ORDER BY POST_ID BEGIN
  4.    UPDATE nav SET post = ID++;
  5. END//
 

C'est quoi, un trigger ? Le ids_to_delete il sort d'où ?


Bah c'est la liste des posts à deleter.
mais masklinn a oublié qu'il fallait une requete pour récupérer les id des posts a deleter :o

Message cité 1 fois
Message édité par skylight le 24-04-2008 à 15:37:42
n°1723792
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:40:22  profilanswer
 

skylight a écrit :


Bah c'est la liste des posts à deleter.
mais masklinn a oublié qu'il fallait une requete pour récupérer les id des posts a deleter :o

 

Sans blague ? :o

 

Mais pour moi un FOR EACH ROW BEGIN ça veut dire "pour chaque ligne supprimée, fait ..."

 

Ce qui au final voudrait dire :

 

Pour chaque post supprimé fait "UPDATE nav SET post = ID++" ... ce qui n'a pas bcp de sens pour moi :??:

 

Edit : À moins que le FOR EACH ROW est utilisable en dehors des trigger ... mais dans ce cas je ne vois aucune référence quant à la table à utiliser ...


Message édité par Dj YeLL le 24-04-2008 à 15:41:14

---------------
Gamertag: CoteBlack YeLL
n°1723796
masklinn
í dag viðrar vel til loftárása
Posté le 24-04-2008 à 15:45:05  profilanswer
 

Dj YeLL a écrit :


 
Je n'arrive pas comprendre ton code :
 

Code :
  1. DELETE FROM nav WHERE post_id IN ids_to_delete;
  2. ID=0;
  3. FOR EACH ROW ORDER BY POST_ID BEGIN
  4.    UPDATE nav SET post = ID++;
  5. END//


 
C'est quoi, un trigger ? Le ids_to_delete il sort d'où ?


C'est pas du vrai SQL, c'est du pseudocode :o
 
Logiquement, si tu massdelete quelqu'un tu fais un delete sur tous les posts avec son userid dans la base/le topic, pas besoin d'itérer sur les posts.
 
Et si tu delete qu'un seul post, pas besoin d'itérer pour faire la suppression, puisqu'il n'y a qu'un post à supprimer [:dawa]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1723797
skylight
Made in France.
Posté le 24-04-2008 à 15:45:33  profilanswer
 

Ah, mais j'ai repris tes lignes de codes sans savoir que c'était des triggers. Moi je te parlais d'algo.
 
Grosso-modo : tu fais une boucle pour avoir les id des posts à supprimer.
Tu en fais un tableau.

(ou comme le dis masklinn, tu vires tous les posts selon l'id_user) :D
Tu fais une requête pour supprimer ces posts

Code :
  1. DELETE FROM nav WHERE post_id IN ids_to_delete;


 
Ensuite, vu que tu as plein de trous dans ta table, tu reparcours toute ta table (avec un WHERE sur le topic_id, et un ORDER BY post_id ASC), et tu renumérotes tous tes posts en une seule itération, pas la peine de réitérer à chaque suppression. (edit)
Chaque post a un identifiant unique, créé lors de la création du post, ils sont forcément croissants.

Message cité 1 fois
Message édité par skylight le 24-04-2008 à 15:49:07
n°1723800
masklinn
í dag viðrar vel til loftárása
Posté le 24-04-2008 à 15:47:37  profilanswer
 

skylight a écrit :

Ah, mais j'ai repris tes lignes de codes sans savoir que c'était des triggers. Moi je te parlais d'algo.
 
Grosso-modo : tu fais une boucle pour avoir les id des posts à supprimer.
Tu en fais un tableau.

(ou comme le dis masklinn, tu vires tous les posts selon l'id_user) :D
Tu fais une requête pour supprimer ces posts

Code :
  1. DELETE FROM nav WHERE post_id IN ids_to_delete;


 
Ensuite, vu que tu as plein de trous dans ta table, tu reparcours toute ta table (avec un WHERE sur le topic_id, et un ORDER BY post_id ASC), et tu renumérotes tous tes posts en une seule requête.
Chaque post a un identifiant unique, créé lors de la création du post, ils sont forcément croissants.


vala, pareil :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1723808
drasche
Posté le 24-04-2008 à 15:51:44  profilanswer
 

Dj YeLL a écrit :

Alors du coup je sais que si sur un page de 30 posts y'avait 25 posts d'un user massdeleté ça va foutre 25 fois "message supprimé" et il ne restera que 5 posts à lire mais :
 
1> Est-ce si courant de mass-delete un user ?
2> A-t-on vraiment souvent 25 posts d'un même user sur un page de 30 posts
3> Quand bien même le 2> arriverait de tps en tps, est-ce vraiment dramatique ?
4> Ne pas oublier qu'en cas de suppression "normal" d'un post par un modo/user, le message sera bien supprimé ... et interdiction de supprimer les messages de plus de X jours.
 
Je pense qu'en prenant tout ça en compte, ça devrait rouler.


1> ça dépend plus des utilisateurs, modérateurs, administrateurs.
2> idem
3> non
4> chez moi, peu importe qui procède à l'effacement, je mets l'id du mec qui a effacé dans un champ (nullable) prévu pour, dans la table des messages. Si le champ contient une valeur, le message est effacé, et je peux en prime savoir qui a effacé le message.


---------------
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)
n°1723811
theredled
● REC
Posté le 24-04-2008 à 15:51:54  profilanswer
 

DJ, je veux aller à la page 48 du topic a flood, je fais comment ? :(

Message cité 1 fois
Message édité par theredled le 24-04-2008 à 15:52:14

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1723813
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:52:31  profilanswer
 

Je vais passer pour un gros con ... mais je vois toujours pas comment faire :/
 
Comment on fait une boucle en MySQL ?
 
DELETE FROM nav WHERE post_id IN (post_ids) ... mais la boucle après, pour recalculer pour un topic donné ?


---------------
Gamertag: CoteBlack YeLL
n°1723814
fabien
Vive la super 5 !
Posté le 24-04-2008 à 15:52:51  profilanswer
 

Dj YeLL a écrit :


 

Code :
  1. FOR EACH ROW BEGIN
  2.    DELETE FROM nav WHERE post_id = OLD.id;
  3.    UPDATE nav SET pos = pos - 1 WHERE post_id > OLD.id;
  4. END//


 
T'es bien obligé de tout recalculer à chaque suppression de ligne ...


 [:kzimir]  
 


---------------
Découvre le HFRcoin ✈ - smilies
n°1723816
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:53:23  profilanswer
 

theredled a écrit :

DJ, je veux aller à la page 48 du topic a flood, je fais comment ? :(

 

Tu patientes et tu attends que je foute le champ pour accès direct à une page :o


Message édité par Dj YeLL le 24-04-2008 à 15:53:58

---------------
Gamertag: CoteBlack YeLL
n°1723821
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 15:53:52  profilanswer
 


 
Je sais :o Je m'en susi rendu compte :whistle: Mais je sais toujours pas comment changer ça :cry:


---------------
Gamertag: CoteBlack YeLL
n°1723829
skylight
Made in France.
Posté le 24-04-2008 à 15:58:23  profilanswer
 

Dj YeLL a écrit :

Je vais passer pour un gros con ... mais je vois toujours pas comment faire :/

 

Comment on fait une boucle en MySQL ?

 

DELETE FROM nav WHERE post_id IN (post_ids) ... mais la boucle après, pour recalculer pour un topic donné ?

 

Une fois que tu as viré tous les posts d'untel

Code :
  1. DELETE FROM ta_table WHERE topic_id = xx AND user_id = yyy;
 

Tu reparcours ta table en fonction de l'ordre de tes posts

Code :
  1. $i = 0;
  2. $query = mysql_query("SELECT post_order FROM ta_table WHERE topic_id = xxx ORDER BY post_id ASC" )
  3. while (list($post_id) = mysql_fetch_row($query))
  4. mysql_query("UPDATE ta_table SET post_order = $i++ WHERE post_id = $post_id" );
 

A l'arrache, mais c'est comme ça que ça fonctionne.

 

C'est pas spécialement évident :/


Message édité par skylight le 24-04-2008 à 15:59:29
n°1723833
theredled
● REC
Posté le 24-04-2008 à 15:59:29  profilanswer
 

Je suis pas sûr de comprendre ce que t'as pas compris, mais ce que font Masklinn & co, c'est tout supprimer, et *ensuite* recalculer les positions des posts qui restent...

 

Là où toi tu supprimais 1 par 1, et à chaque fois recalcule toute la table...

 

edit : en plus d'etre inutile, je suis grillé.


Message édité par theredled le 24-04-2008 à 16:00:16

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1723835
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 16:00:14  profilanswer
 

skylight> Ah oué mais là ça repasse par Php ... et ça fait X requêtes dans la BDD ... d'autant que pendant ce temps le topic reste en rade ... je trouve pas ça top du tout :o

 

theredled> Oui mais justement, je ne vois pas comment recalculer les positions, dans le même lock... Si quelqu'un tombe sur un topic pendant la suppression ça va être tout pété, moi je pensais qu'il existait un moyen de faire une boucle directement dans MySQL en fait, dans une procédure stockée...

Message cité 1 fois
Message édité par Dj YeLL le 24-04-2008 à 16:01:41

---------------
Gamertag: CoteBlack YeLL
n°1723844
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 16:06:07  profilanswer
 

D'ailleurs skylight, je comprends toujours pas ton code :
 

Code :
  1. SELECT post_order FROM ta_table WHERE topic_id = xxx ORDER BY post_id ASC


 
Il sort d'où ce topic_id ? C'est pas un topic qu'on supprime ... c'est un user avec ses posts ...


---------------
Gamertag: CoteBlack YeLL
n°1723865
skylight
Made in France.
Posté le 24-04-2008 à 16:15:10  profilanswer
 

Oui, mais quand tu va réarranger les compteurs de tes posts, va bien falloir que tu le fasses PAR topic.
 

n°1723875
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-04-2008 à 16:21:58  profilanswer
 

skylight a écrit :

Oui, mais quand tu va réarranger les compteurs de tes posts, va bien falloir que tu le fasses PAR topic.
 


 
Ah mais je sais bien, c'est bien pour ca que je te demande d'où tu sors ton topic_id là :D


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  464  465  466  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)