Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Diskuze na Lopuchu,
pohlazení na duchu

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: ejmnpis
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 8.2.2010 21:06  2958
aha
tak na komentář jsem se, přiznám, nekoukal ...
huh huh 8.2.2010 21:04  2957
Chyba je v tom článku, je popsaná v tom jediném komentáři, který u článku je. Spočívá v tom, že v tabulce mají kořenové položky nastaveno NULL, ale ten PHP kód tam cpe 0. A nula není NULL. Řešení:
a) rychlé a hnusné:
* odstranit FOREIGN_KEY z tabulky
* změnít parentid z NULL na 0
b) korektní:
změnit hlavičku metody getCategoriesArray na:
function getCategoriesArray($parent_id ='NULL', ....
a metodu getAllSubCategories změnit na:
    function getAllSubCategories($parent_id) {
        $result = mysql_query("SELECT * FROM categories WHERE parentid" . ($parent_id == 'NULL' ? ' is ' : '=') . $parent_id);
        return $result;
    }
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 8.2.2010 20:28  2956
nesmyslchyba bude mezi klávesnicí a židlí
no jo

musím se s tím nějak poprat, řádek o řádku
těžké pro neprogramátora
ty moje metody pokus-omyl jsou v jistých fázích vývoje webu úžasné a někdy frstrující
:-)
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 8.2.2010 20:17  2955
kod umím sem vložit, ale bez řádků ...


<?php
class Categories{
function getCategoriesArray($parent_id = 0, $padding=0, $prefix="&raquo;"){
$return = array();
$return = $this->getSubCategoriesArray($parent_id, $padding, $prefix);
return $return;
}
function getSubCategoriesArray($parent_id, $padding, $prefix){
static $i=0;
$resource = $this->getAllSubCategories($parent_id);
static $return = array();
if (@is_resource($resource)){
while ($records_array = mysql_fetch_assoc($resource)) {
$return['id'][$i] = $records_array['id'];
if(is_int($padding)){
$return['name'][$i] = "<div style='padding-left:".$padding."px'>".$prefix ." &nbsp;".$records_array['name']."</div>";
}else{
$return['name'][$i] = $padding. $prefix .$records_array['name'];
}
$i++;
if(is_int($padding)){
$this->getSubCategoriesArray($records_array['id'], ($padding+15), $prefix);
}else{
static $pad ="";
if($pad == ""){
$pad = $padding;
}
$this->getSubCategoriesArray($records_array['id'], $padding.$pad, $prefix);
}
}
}
return $return;
}
function getAllSubCategories($parent_id=0) {
$result = mysql_query("SELECT * FROM categories WHERE parentid='" . $parent_id . "'");
return $result;
}

//when disabling the parent category its all subcategory should be disabled.
function changeAllSubCategoriesStatus($id, $status)
{
static $subcat = array();
$subcat[] = $id;
$result = mysql_query("UPDATE categories set status=$status WHERE id = $id");
$select_result = mysql_query("SELECT id FROM categories WHERE parentid=$id");
$hasSubcat = mysql_result($select_result, 0, 0);
if($hasSubcat){
$this->changeAllSubCategoriesStatus($hasSubcat, $status);
}
return $subcat;
}

//when enabling the subcategory its all parent category should be enabled.
function changeAllParentCategoriesStatus($id, $status)
{
static $parentcat = array();
$parentcat[] = $id;
$result = mysql_query("UPDATE categories set status=$status WHERE id = $id");
$select_result = mysql_query("SELECT parentid FROM categories WHERE id=$id");
$hasParentcat = mysql_result($select_result, 0, 0);
if($hasParentcat){
$this->changeAllParentCategoriesStatus($hasParentcat, $status);
}
return $parentcat;
}

//if you know the level of category then you use this other wise dont use this
function getCategoriesInTreeStructure($level = 10){
$query = " SELECT node0.name AS node0_name, node0.status as node0_status,node0.parentid as node0_parent, node0.id as node0_id";

//select nodes
for($l=1;$l<=$level;$l++) {
$query .= ",node".$l.".name AS node".$l."_name, node".$l.".status as node".$l."_status,node".$l.".parentid as node".$l."_parent, node".$l.".id as node".$l."_id ";
}
//join
$query .= " FROM categories AS node0 ";
for($l=1;$l<=$level;$l++) {
$query .= " LEFT OUTER JOIN categories AS node".$l." ON node".$l.".parentid = node".($l-1).".id";
}
//conditions
$query .= " WHERE ((node0.parentid IS NULL) OR (node0.parentid =0)) ORDER BY node0_name ";
for($l=1;$l<=$level;$l++) {
$query .= ",node".$l."_name ";
}
$resource = mysql_query($query);
return $resource;
}
}

$connect = mysql_connect("localhost", "user", "password");
$dh = mysql_select_db("database", $connect);
$cat_obj = new Categories();
$cat_array =$cat_obj->getCategoriesArray();

//For dropdowns
//$cat_array = $cat_obj->getCategoriesArray(0, "--", "");

foreach($cat_array['name'] as $key =>$catname) {
//id---->echo $cat_array['id'][$key];
echo $catname;
}

?>


puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 8.2.2010 20:08  2954
tady ? if(is_int($padding)){
huh huh 8.2.2010 20:04  2953
Máš chybu ve třetím sloupci na patnáctém řádku...
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 8.2.2010 20:00  2952
nic ?
:-)
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 8.2.2010 12:22  2951
prosba a dotazpo delší době jsem se vrátil ke stromové struktuře budu potřebovat vygenerovat z gtabulky v databázi menu

nechal jsem se inspirovat zde:
Display menu in tree structure – mysql parent child relation
první polovina článku je i pro mě (snad) jasná, ale při použití PHP API kódu na své stránce (zatím na localhost) narážím na problém, že se mi nic nezobrazí
...
počítám, že patrně neumím správně použít API ...
nemohl by mě někdo zkusit popostrčit, kde by mohla být chyba ??

Tabulku mám (svou, data vložená do struktury té originální ...)
Ty dva dotazy se také chovají správně a vygenerují to, co se píše v článku
...
takže mi zbává ten "výstup" a tam patrně něco mrvím
:-(
bighead BIGHead Pořádáte akci, vyzkoušejte - naše moderátory 3.2.2010 18:54  2950
Díky vám oběma, vyzkouším a dám vědět jak jsem pochodil...
huh huh 3.2.2010 17:52  2949
BIGHead [2945]:
SELECT @poradi := @poradi + 1 AS poradi, jmeno, pocet FROM (SELECT @poradi := 0) p, body ORDER BY 1;
nebo
SELECT (select count(*) from body b where b.pocet > body.pocet) + 1 AS poradi, jmeno, pocet FROM body ORDER BY 1;
themajkl themajkl All those moments will be lost in time - like tears in rain. 3.2.2010 12:21  2948
MySQL nevím, informix by byl něco jako
select a.zavodnik,
  (select count(*) from tabulka b)  - (select count(*) from tabulka c
                where c.body<a.body) poradi
  from tabulka a
order by 1  desc
bighead BIGHead Pořádáte akci, vyzkoušejte - naše moderátory 3.2.2010 12:12  2947
no ideálně přímo ten select :)
themajkl themajkl All those moments will be lost in time - like tears in rain. 3.2.2010 11:44  2946
čili
pořadí závodníka X = (počet všech účastníků) - (počet účastníků, co mají body menší, než závodník X)
? :-)
Nebo chceš přímo ten select?
bighead BIGHead Pořádáte akci, vyzkoušejte - naše moderátory 3.2.2010 11:18  2945
počítání umístěníMám výsledky závodů v bodech. Každý závodník má svůj vlastní profil a já tam potřebuju k těm bodům ještě dopočítat správné pořadí. Tzn. nějak porovnat body aktuálního závodníka se všemi ostatními závodníky a na základě toho mu určit pořadí.
Body jsou uloženy v MySQL. Není možné, aby měli dva závodníci stejný počet bodů. Závodníků může být i několik set.

Můžete poradit jak na to?
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 30.1.2010 18:31  2944
jsem takový malý "prasák"

:-)

ale čistý kód se mi vždy líbil a líbí a postupně se k němu posouvám ....

[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt