Autor Zpráva
Tomtomas
Profil
Mam původní skript (třídu), co navazuje na předešlé pole a z nějakého dotazu do DTB k němu přidává další hodnoty.
<?php

while ($radek = $dotaz->FetchRow())
{
$trida = new Class();
$trida->jmeno = $radek['tabulka_jmeno'];
$trida->prijmeni = $radek['tabulka_prijmeni'];
$trida->rok = $radek['tabulka_rok'];

array_push($predeslepole, $trida);
} ?>

Nyní je výsledkem větší pole, co se dále zpracovává. Já zkoumám, jak v tomto kroku omezit přidávané hodnoty jen na určité řádky. Jde mi o přidání třeba jen těch řádků, u kterých je rok 2000.

Nějak mě nic ne a ne napadnout (ani jakou konstrukci konkrétně hledat). Díky moc za pomoc. A poučení.
koudi
Profil
Že by třeba přidat něco jako if($radek['rok']) > 2000 nebo tak něco?
Tomtomas
Profil
No ona ta konstrukce bude ve výsledku o poznání složitější, dal jsem spíš jednoduchou ukázku. K tomu "if", nevím, jak by to mohlo fungovat – bude tam nejspíš uvnitř použito "foreach" nebo něco na ten způsob, ale já momentálně nejsem s to vidět, kde, co a jak užít; něco jsem prozkoušel, neco dělalo psí kusy, něco nic, zkrátka v cyklech tak trochu plavu. Jednoduše: mám pole o neznámém počtu řádků a potřebuju, aby na výstupu do "array_push" místo všech vstupovaly jen ty řádky (žádný, jeden nebo i všechny), u nichž některá hodnota odpovídá mému požadavku.
k
Profil *
Kazdopadne nestastne je mit v cyklu $trida = new Class(); - tohle dej jeste pred while (pokud nepredavas konstruktoru nejaka data).

Absolutne si nedovedu z tveho prikladu predstavit tvuj objektovy model, coz by se mi k vyreseni problenu dost hodilo:)

Z toho tveho prikladu se moc vycist neda. Uved vetsi cast zdrojaku, ve kterem si myslis ze by se to dalo resit.
Nevim napriklad kde mas tu fci array_push(); (v jake tride se nachazi)??

Tohle by bylo na delsi dobu. Jake pozadavky by ty fce meli splnovat?
nightfish
Profil
Nevim napriklad kde mas tu fci array_push(); (v jake tride se nachazi)??
built-in
k
Profil *
nightfish
Nechapu co jsi tim chtel rici. Samozrejme znam fci array_push.
Jde o to ze nevim kde presne (v jake fci, tride) ma tu fci array_push. Z toho vynatku(da-li se to tak popsat) kodu toho moc o jeho objektovem modelu zjistit nelze.
Tomtomas
Profil
Ten daný skript je původní, je součástí cizí, nikoliv mojí soustavy skriptů. Já pouze v tomto místě potřebuju redukovat předávané informace.

F-ci "while" v tomto skriptu předchází jen vykonání DTB dotazu " $dotaz =& $db->Execute($zadanidotazu); ". Formát proměnné "$zadanidotazu" je ve své podobě pro mě značně komplikovaný, není to jednoduché "SELECT ..." a je na něm závislých nekolik dalších skriptů/proměnných, proto jsem si říkal, že pro mě menší zlo bude ošetřit data až u tohoto "array_push".

Nicméně, chci poprosit, zda mi můžete alespoň osvětlit, v jaké podobě jsou data v proměnné "$třída", vstupující do array_push?
* Mám chápat, že $trida je normální pole (soustava polí)?
* A pokud ano, můžu s tím pracovat způsobem "foreach ($trida as $jmeno => $hledanejmeno)"? Hádám, že asi ne.

Jestli problematice polí rozumím zčásti, tak objektům ne a ne přijít na kloub (nikde jsem nenašel vysvětlení, jak konkrétně a prakticky to s daty pracuje). Díky za trpělivost. A navíc se dívám, že už v nadpise tématu mám blbost: u pole (pokud není vícerozměrné), řádky nejsou, snad jen "sloupce". No což :)
k
Profil *
aha
$trida je objekt.. neni to pole.. tomuto objektu "predavas hodnoty"

Vubec tu nejde o pole ale o objektove oriontovane programovani(OOP).

http://cz2.php.net/manual/cs/ref.classobj.php

Koukni se na netu na OOP, popr. hledej "tridy"
Driv se do toho kodu nepoustej.
Tomtomas
Profil
Díky, jasně, je to objekt, ale právě i vzhledem ke zkutečnosti, že se mě nahlídnutím do principu objektů obtížně prokousává, chtěl jsem nějaké polopatistické osvětlení, že když cyklus WHILE provede pro všechny $radek (tedy všechny pole, jenž jsou načtenými řádky z DTB = výsledky nějakého dotazu) nějaký příkaz, kterým je onen objekt, co to vlastně dělá? Tedy co dělá onen příkaz (objekt) a co je pak výsledkem v $trida (hm, hodnoty, ale v jaké podobě)?

Programátor holt nejsem a nikdy nebudu = vysvětlení objektů, tak jak je popsáno v dokumentaci nebo mě dostupné literatuře, je pro mě zvláštně abstraktní. Jen jsem prostě přišel k případu, kdy bych potřeboval jednoduše zjistit, co takovýto objekt provádí.

EDIT:
A když se celou tu "mou" konstrukci dívám teď z odstupu, asi by bylo nejrozumější nevhodné řádky ošetřit už před objektem a tím se pak už vůbec nezabývat. Ale přesto mě zajímá ta funkce objektu.
Toto téma je uzamčeno. Odpověď nelze zaslat.