Hello,
En ce moment j'ai un petit problème d'objet que je n'arrive pas à résoudre, pourtant c'est pas très compliqué. Je m'explique:
J'ai une class SiteMap qui permet de gérer un plan de site web.
Je fais une méthode DeletePage() qui doit effacer une page de la table MySQL ainsi que toutes les pages filles, je fais donc un appel à DeletePage() au seins de DeletePage() mais ça fonctionne pas vraiment comme je voudrait; cet appel détruit les paramètres de DeletePage() mère et les pages parallèles ne sont plus effacées.
Un petit shéma pour voir ce qui se passe:
INDEX (page que j'efface)
|
|- VELO (ok - effacée)
| |
| |- PROUT (ok - effacée)
|
|- VOITURE ( pas effacée snif)
|
Et voilà le code:
Code :
- function DeletePage($page_id)
- {
- $sql0 = mysqli_query($this->link, "DELETE FROM `sitemap` WHERE `id`='$page_id'" );
- $sql1 = mysqli_query($this->link, "SELECT `id` FROM `sq_dzsitemap` WHERE `parent_id` = '$page_id'" );
- if(mysqli_affected_rows($this->link) !=0)
- {
- $id = mysqli_fetch_row($sql1);
- $this->DeletePage($id[0]); // ICI
- }
- else
- {
- $this->warning_DeletePage = 'Page et pages filles supprimées avec succès';
- }
- }
|
Si je comprend bien, ce qui se passe en gros c'est ca:
- la méthode efface la page que qu'on lui demande
- elle selectionne les pages filles
- à la première page fille à effacer elle s'auto-appelle, et à ce moment là elle perd la mémoire de sa selection et donc n'efface jamais les pages du même niveau.
J'ai regardé un peu du côté de clone, ::parent, mais je trouve pas vraiment ce que je veux, ou ce que je crois vouloir :)
Message édité par Big-Foot le 11-05-2007 à 16:20:02