Je pense que pas mal d'entre vous ont rencontré ce soucis :
comment remplir automatiquement la table parentchilddepth ?
Situation :
- la table category est déja remplie avec les bons id catégories parent renseignés (par exemple vous avez travaillé la liste dans un fichier excel que vous avez importé)
- vous souhaitez remplir la table parentchilddepth quasi automatiquement sans a avoir a tout ressaisir.
Je vous propose un petit script php permettant de créer les commandes sql pour remplir la table parentchilddepth
genereParentChildDepth.php
- Code: Tout sélectionner
<?php
// remplacer par vos valeurs de connexion
$host="";
$user="";
$pwd="";
$base="";
$mysql_link = mysql_connect($host,$user,$pwd);
mysql_select_db($base);
$dbsite=""; // prefixe de votre table sans "_" par exemple : "arfooo"
echo "TRUNCATE TABLE `".$dbsite."_categoryparents`;<br>\n";
$sql = "SELECT * FROM ".$dbsite."_categories";
$result=mysql_query($sql);
while ($row=mysql_fetch_object($result)) {
$depth=0;
echo "INSERT INTO `".$dbsite."_categoryparents` (`parentId`, `childId`, `depth`) VALUES ($row->categoryId,$row->categoryId,$depth);<br>\n";
$parentId = $row->parentCategoryId;
while ($parentId<>0){
$sql2 = "SELECT * FROM ".$dbsite."_categories WHERE categoryId = $parentId";
$result2=mysql_query($sql2);
while ($row2=mysql_fetch_object($result2)) {
$depth=$depth+1;
echo "INSERT INTO `".$dbsite."_categoryparents` (`parentId`, `childId`, `depth`) VALUES ($row2->categoryId,$row->categoryId,$depth);<br>\n";
$parentId = $row2->parentCategoryId;
}
}
$depth=$depth+1;
echo "INSERT INTO `".$dbsite."_categoryparents` (`parentId`, `childId`, `depth`) VALUES (0,$row->categoryId,$depth);<br>\n";
}
?>
Il faut déposer ce script sur votre site et de le lancer via le navigateur.
La liste des commandes sql va s'afficher, il suffira alors de faire un copier coller dans phpmyadmin par exemple et le tour est joué

On peut facilement modifier le script afin d'enregistrer automatiquement dans mysql.
A+

SiteOfficiel.fr