Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Układanie w drzewo
Forum PHP.pl > Forum > Przedszkole
shtoc
Witam mam problem ze skryptem który powinien układać kategorie w drzewo przykładowo pobieram z jednej tabeli string w postaci /dom/ogrod/meble_ogrodowe/ i wrzucajac do drogiej tabeli odrzucam ostatni element /meble_ogrodowe/ i wyszukuje czy w tabeli do której wrzucam rekordy jest już /dom/ogrod/ jak tak to przypisuje jego id dla /dom/ogrod/meble_ogrodowe/. i wszystko działa jak rekord aktualnie wpisywany ma odnosnik do swojej kategori nadrzednej. problem sie pojawia jak nie ma czyli przykladowo mam juz wpisane /dom/ogrod/kwiatki/ a kolejny do wpisania to /dom/ogrod/drzewa/lisciaste/ i w tabeli nie ma jeszcze odnosnika do rekordu /dom/ogrod/drzewa/ chcaiłbym żeby skrypt odrzucił taki rekord a on go wpisuje z id = 0
kod skryptu

  1. <?php
  2.  
  3. $connect=mysql_connect('localhost', 'root', '') or die('błąd połączenia: '.mysql_error());
  4. mysql_selectdb('test') or die('błąd wyboru bazy: '.mysql_error());                          
  5. mysql_query("SET NAMES utf8");
  6.  
  7. $sql="SELECT * FROM categories WHERE id >'1'";                                                                
  8. $ask = mysql_query($sql);
  9.  
  10. while($row = mysql_fetch_array($ask))
  11. {
  12.    $link=mysql_real_escape_string($row['url']);
  13.    $name=mysql_real_escape_string($row['name']);
  14.  
  15.  
  16.  
  17.    $tab=explode('/',$link);  
  18.    $tab1=rtrim($tab);
  19.    $pom=array_pop($tab);
  20.    $pom=array_pop($tab);
  21.    $ful=implode('/',$tab);
  22.    $full=$ful."/";
  23.  
  24.    $sql_in="SELECT * FROM categories_back WHERE url='$full'";                        
  25.    $ask_in = mysql_query($sql_in);
  26.  
  27.  
  28.        while($row_in = mysql_fetch_array($ask_in))
  29.        {
  30.            $id=mysql_real_escape_string($row_in['id']);
  31.        }
  32.  
  33.    $sql_out = "INSERT INTO categories_back(`parent_id`,`url`,`name`)VALUES('$id','$link','$name')";    
  34.    $ask_out = mysql_query($sql_out);
  35.  
  36.    unset($tab,$pom,$full,$id,$body,$name);
  37. }
  38. ?>



wydaje mi sie ze bład jest gdzie w zapytaniu sql w 26 i 27 lini ale nie jestem pewien dlatego pytam smile.gif
skowron-line
  1. SELECT * FROM categories_back WHERE url="' .$full. '"
shtoc
nie chyba raczej nie smile.gif

nie wiem czy nie powinno byc tam jakiegos warunku po tym sql w 25 lini cos typu jezeli znalazł ten rekord to dodoaj a jak nie znalazł do odrzuc questionmark.gif

Poradziłem sobie inaczej!! można zamknąć!!
Jak by ktoś chciał zerknać załanczam kod :
  1. <?php
  2.  
  3. $connect=mysql_connect('localhost', 'root', '') or die('błąd połączenia: '.mysql_error());
  4. mysql_selectdb('test') or die('błąd wyboru bazy: '.mysql_error());                          
  5. mysql_query("SET NAMES utf8");
  6.  
  7. $sql="SELECT * FROM categories WHERE id >'1'";                                                                
  8. $ask = mysql_query($sql);
  9.  
  10. while($row = mysql_fetch_array($ask))
  11. {
  12.    $link=mysql_real_escape_string($row['url']);
  13.    $name=mysql_real_escape_string($row['name']);
  14.   $idfirst=mysql_real_escape_string($row['id']);
  15.  
  16.  
  17.    $tab=explode('/',$link);  
  18.    $tab1=rtrim($tab);
  19.    $pom=array_pop($tab);
  20.    $pom=array_pop($tab);
  21.    $ful=implode('/',$tab);
  22.    $full=$ful."/";
  23.  
  24.    $sql_in="SELECT * FROM categories WHERE url='$full'";                        
  25.    $ask_in = mysql_query($sql_in);
  26.  
  27.  
  28.        while($row_in = mysql_fetch_array($ask_in))
  29.        {
  30.            $id=mysql_real_escape_string($row_in['id']);
  31.        }
  32.  
  33.    $sql_out = "UPDATE categories SET `parent_id='$id' WHERE `id`='$idfirst'";    
  34.    $ask_out = mysql_query($sql_out);
  35.  
  36.    unset($tab,$pom,$full,$id,$body,$name);
  37. }
  38. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.