Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Układanie w drzewo
shtoc
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM categories_back WHERE url="' .$full. '"
Go to the top of the page
+Quote Post
shtoc
post
Post #3





Grupa: Zarejestrowani
Postów: 128
Pomógł: 0
Dołączył: 18.11.2008
Skąd: Polska

Ostrzeżenie: (10%)
X----


nie chyba raczej nie (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował shtoc 27.05.2009, 12:02:25
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 13:03