Autor Zpráva
!! MaRtin
Profil *
ahoj,
mam funkci, ktera vytiskne vysledek, jenze ne tam kde potřebuji, vzdycky nahore na strance.. jak tuto funkci opravit, abych si ji mohl vytisknout tam kde potrebuji.. Poradite?

puvodni kod.. // http://www.owebu.cz/php/vypis.php?clanek=403

function vypis($kdo,$strom) {
if ( count($strom)==($kdo+1) ) {
$posledni = count($strom)-1;
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$posledni]";
}
else
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$kdo]";
$nacti_polozku[$kdo] = mysql_query($dotaz_na_polozku[$kdo]);
while ($polozka[$kdo] = MySQL_Fetch_Array($nacti_polozku[$kdo])) {
$nazev_p = $polozka[$kdo]["nazev"];
$id_p = $polozka[$kdo]["id"];
$tata_p = $polozka[$kdo]["tata"];
$space = mezera($kdo);
if (strlen($nazev_p)>0) print " $space <a href='index.php?ak=$id_p'>$nazev_p </a> <br>";
if ( (count($strom)>=($kdo+1)) and ($strom[$kdo+1]==$id_p)) vypis($kdo+1,$strom);
}
}

vypis(0,$strom); //vypsani





zkousel jsem to opravit takto, ale nc se nevypise :(


function vypis($kdo,$strom) {
if ( count($strom)==($kdo+1) ) {
$posledni = count($strom)-1;
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$posledni]";
}
else
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$kdo]";
$nacti_polozku[$kdo] = mysql_query($dotaz_na_polozku[$kdo]);
while ($polozka[$kdo] = MySQL_Fetch_Array($nacti_polozku[$kdo])) {
$nazev_p = $polozka[$kdo]["nazev"];
$id_p = $polozka[$kdo]["id"];
$tata_p = $polozka[$kdo]["tata"];
$space = mezera($kdo);
if (strlen($nazev_p)>0) $vysledek = " $space <a
href='index.php?ak=$id_p'>$nazev_p
</a> <br>";
if ( (count($strom)>=($kdo+1)) and ($strom[$kdo+1]==$id_p))
vypis($kdo+1,$strom);
}
}

echo $vysledek;


diky
Joker
Profil
To vypadá spíš na problém HTML/CSS... je někde ta výsledná stránka?
!! MaRtin
Profil *
bojuzel neni, mam to na locale, ale problem je v tom, ze ta funkce děla print, a ja potrebuji aby vracela výsledek jako řetězec, ktery si pak muzu vytisknout kdy chci.. a to nevim jak opravit :(
BetaCam
Profil
No vytiskne ti to tam kde tu funkci zavoláš. tak jí volej tam kde chceš tisknout.

Nebo zkus neco jako :

function vypis($kdo,$strom) {
if ( count($strom)==($kdo+1) ) {
$posledni = count($strom)-1;
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$posledni]";
}
else
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$kdo]";
$nacti_polozku[$kdo] = mysql_query($dotaz_na_polozku[$kdo]);
while ($polozka[$kdo] = MySQL_Fetch_Array($nacti_polozku[$kdo])) {
$nazev_p = $polozka[$kdo]["nazev"];
$id_p = $polozka[$kdo]["id"];
$tata_p = $polozka[$kdo]["tata"];
$space = mezera($kdo);
if (strlen($nazev_p)>0) $out .= " $space <a href='index.php?ak=$id_p'>$nazev_p </a> <br>";
if ( (count($strom)>=($kdo+1)) and ($strom[$kdo+1]==$id_p)) vypis($kdo+1,$strom);
}
return $out;
}

pak volat neco jako :

$strom = vypis(0,$strom);

a vypsat

echo $strom;

jinak nějak sem tu funkci nezkoumal tak doufám, že sem tu úpravu udělal validně a že sem pochopi o co ti vlastně jde :)
!! MaRtin
Profil *
tak tohle se opravdu vypisuje tam kde potrebuji, jenze prestalo fungovat to, ze kdyz kliknu na nejakou kategorii, tak se nerozbali.. nic se po kliknuti nestane..
dekuji
nightfish
Profil
function vypis($kdo,$strom) {

if ( count($strom)==($kdo+1) ) {
$posledni = count($strom)-1;
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$posledni]";
}
else
$dotaz_na_polozku[$kdo] = "SELECT * FROM `kat` WHERE tata=$strom[$kdo]";
$nacti_polozku[$kdo] = mysql_query($dotaz_na_polozku[$kdo]);
while ($polozka[$kdo] = MySQL_Fetch_Array($nacti_polozku[$kdo])) {
$nazev_p = $polozka[$kdo]["nazev"];
$id_p = $polozka[$kdo]["id"];
$tata_p = $polozka[$kdo]["tata"];
$space = mezera($kdo);
if (strlen($nazev_p)>0) $out .= " $space <a href='index.php?ak=$id_p'>$nazev_p </a> <br>";
if ( (count($strom)>=($kdo+1)) and ($strom[$kdo+1]==$id_p)) $out .= vypis($kdo+1,$strom);
}
return $out;
}


echo vypis(0,$strom);

(chybělo tam připojení na výstup ve volání sebe sama na konci funkce
!! MaRtin
Profil *
Ahoj,
jj to je přesně ono ;)

moc děkuji za pomoc!
Martin
!! MaRtin
Profil *
BTW: kdybych chtěl vypsat úplně celý strom, tak by ten kod vypdal jak? Poradéte prosím ještě? Děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0