PHP : nefunguje rekurzivni fce... - Vyřešeno

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
PachezZ
Začátečník
Začátečník
Uživatelský avatar
Registrován: 08. lis 2004
Bydliště: české Velenice
Kontaktovat uživatele:

PHP : nefunguje rekurzivni fce... - Vyřešeno

Příspěvek od PachezZ »

mam tu mensi problem mam dve rekurzivni fce , jedna funguje a druha i kdyz je v podstate jen upravena prvni nefunguje... potřebuju radu

Kód: Vybrat vše

function smazsubpolozky($nadrazena) {
$query = "SELECT id FROM auta WHERE nadrazena='$nadrazena' ORDER BY nazev";
$result = mysql_query($query)
    or die("Dotaz nelze provést");
while ($zaznam =  mysql_fetch_array($result)):
     	
	  $id = $zaznam["id"];
	  $query2 = "DELETE FROM auta WHERE id='$id'";
	  $result2 = mysql_query($query2)
		or die("Dotaz nelze provést");
	
	  smazsubpolozky($id);

endwhile;
return 0;
}
a tahle fce prostě nefunguje... jo struktura tabulky auta je:
id : integer
nazev : tinytext
nadrazena : integer (tady je ulozeno id polozky ktera je ve stromu rodicem polozky - 0 pokud jde o polozku nejvyssi urovne)

Jestli mi nekdo muzete poradit, pripadne tu fci vyzkoušet u sebe...
Naposledy upravil(a) PachezZ dne pon 10. dub 2006, 14:09, celkem upraveno 1 x.
(Pokud jste docetli az sem a zda se vam ze tento post nema zadny vyznam pro vas psychicky rozvoj, stejne jakozto pro celosvetovy rozvoj jaderne fyziky, chemie, a vyzkum zivota chrousta srilanskeho, jste dusevni chudaci a nicemu nerozumite.)
TDi - Ten Dým Ignoruj
Chap
Začátečník
Začátečník
Uživatelský avatar
Registrován: 14. bře 2004
Bydliště: Všude
Kontaktovat uživatele:

Příspěvek od Chap »

co takhle tam dat WHERE nadrazena=$nadrzena.
pokud je nadrazena typu integer tak proc tam davas ty apostrofy.
Smoke it for PEACE please
Chap
Začátečník
Začátečník
Uživatelský avatar
Registrován: 14. bře 2004
Bydliště: Všude
Kontaktovat uživatele:

Příspěvek od Chap »

teda este lip:
SELECT id,nazev FROM auta WHERE nadrazena=$nadrazena ORDER BY nazev";
myslim ze by ti to podle nayvu neradilo, pokud das select jen na id.
Smoke it for PEACE please
Lamicz
Začátečník
Začátečník
Uživatelský avatar
Registrován: 30. kvě 2005
Bydliště: In a galaxy far away...
Kontaktovat uživatele:

Příspěvek od Lamicz »

Chap píše:teda este lip:
SELECT id,nazev FROM auta WHERE nadrazena=$nadrazena ORDER BY nazev";
myslim ze by ti to podle nayvu neradilo, pokud das select jen na id.
Ale to vis, ze se mu to seradi, i kdyz to neni v SELECTu. Jinak IMHO je to tim, ze prachsproste se ten $query2 neprovede, protoze nikde nevolas tu promennou $result2, tzn -

Kód: Vybrat vše

mysql_query( "DELETE FROM `auta` WHERE `id`='$id'" ) or die (mysql_error()); 
Jinak doporucuju pouzivat fci mysql_error() protoze tak vidis kde je chyba,ne jenom "Dotaz se neprovedl" ;)
:: DESKA :: Asus A8V-XE (VIA K8T890) :: CPU :: AMD Athlon 64 3700+ :: VGA :: ATI Asus GF7600 512MB - passive solution :: RAM :: 4x 256MB Samsung :: HDD :: 80GB Maxtor PATA ::
Chap
Začátečník
Začátečník
Uživatelský avatar
Registrován: 14. bře 2004
Bydliště: Všude
Kontaktovat uživatele:

Příspěvek od Chap »

no nevim, ja teda delam spis v postgreSQL a tam to proste nejde.
A s tim result 2, tak te se provede, jen je zbytecny davat
$result2 = mysql_query($query2) ;
kdyz staci dat je mysql_query($query2) ;, protoze u DELETE neocekavame vraceni nejakeho vsledku
Smoke it for PEACE please
PachezZ
Začátečník
Začátečník
Uživatelský avatar
Registrován: 08. lis 2004
Bydliště: české Velenice
Kontaktovat uživatele:

Příspěvek od PachezZ »

Lamicz píše: Jinak IMHO je to tim, ze prachsproste se ten $query2 neprovede, protoze nikde nevolas tu promennou $result2, tzn -

Kód: Vybrat vše

mysql_query( "DELETE FROM `auta` WHERE `id`='$id'" ) or die (mysql_error()); 
Jinak doporucuju pouzivat fci mysql_error() protoze tak vidis kde je chyba,ne jenom "Dotaz se neprovedl" ;)
Vyzkoušim , fce mysql_error je mi tu naprd protože on se dotaz provede ale nefunguje rekurze , no zkusim a dám vědět

edit// tak se nakonec podařilo... díky všem co se snažili poradit

Kód: Vybrat vše

function smazsubpolozky($nadrazena,$uroven) {
$query = "SELECT id FROM auta WHERE nadrazena='$nadrazena' ORDER BY nazev";
$result = mysql_query($query)
    or die("Dotaz nelze provést");
while ($zaznam =  mysql_fetch_array($result)){
     	
	  $zid = $zaznam["id"];
	  smazsubpolozky($zid,$uroven+1);

}
$query2 = "DELETE FROM auta WHERE nadrazena='$nadrazena'";
 mysql_query($query2) or die (mysql_error()); 

return 0;
}
(Pokud jste docetli az sem a zda se vam ze tento post nema zadny vyznam pro vas psychicky rozvoj, stejne jakozto pro celosvetovy rozvoj jaderne fyziky, chemie, a vyzkum zivota chrousta srilanskeho, jste dusevni chudaci a nicemu nerozumite.)
TDi - Ten Dým Ignoruj
Odpovědět

Zpět na „Programování a web“