Anonymní profil MaraIGI – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil MaraIGI – Programujte.comAnonymní profil MaraIGI – Programujte.com

 

Příspěvky odeslané z IP adresy 89.102.165.–

PHP › Problém s funkcí foreach
26. 8. 2015   #204551

Neber si to nijak zle, chci ti jen poradit... já když začínal tak sem dělal strašné pekla, a myslel jsem si jak to není OOP a perfektní :) Ale na to dříve či později určitě příjdeš sám :)

Jo, asi jsem to, že v OOP začínám programovat zmiňovat neměl a vzhledem k tomu že jsem se snažil napsat nějaké 'funkcionální' styled CMS, a měl jsem tam menší progress a nechtěl jsem to zahodit, tak jsem si to tam tak nechal a ještě jsem většinu do OOP nestihl přepsat. :)
A za názor se nezlobím, jen je faktem, že jsem to zmínil tak blbě. :|
Každopádně díky za 'radu' že die() se přímo asi používat takto určitě nemá a ještě ohledně těch returnů. - Díky Kite :)

Toho zvyku nepoužívat závorky pro jednořádkový ify se okamžitě zbav, je to šílenej neduh, kterej dělá v kódu akorát bordel.

Díky za radu, už jsem ji také od kamaráda dostal, časem by se mi to jinak docela vymstilo. :D
.. Jen že to v tom kódu vypadalo tak krásně. :D

A ať se vyhneme offtopicu a vzhledem k tomu že tu máte živou komunitu, tak pokud to tu tak funguje, dejte lock. :)

PHP › Problém s funkcí foreach
22. 8. 2015   #204490

Heh snad sem to nenapsal příliš zmateně :)

Sám jsem se na tu dokumentaci, jak jsi to napsal, ještě předtím podíval a tak jsem to tvoje 'vysvětlení' jakžtakž pobral. :)

Zvykl jsem si líně otevírat databázi a také ji líně zavírat. Resp. ji v PHP nezavírám nikdy, protože to nemá význam.

BindParam() připojí klíč na proměnnou, v tomto případě pokaždé na tu stejnou.

Pobírám, díky. :) 


PS: Zkoušel jsi se podívat třeba na knihovnu Doctrine DBAL? Ta to má kompletně všechno vyřešené a usnadní ti hodně práci a hlavně ti ušetří čas :) Takhle jen znova "vynalézáš kolo" :)

O té knihovně teda slyším poprvé, díky za radu, ale vzhledem k tomu že mám času dost a 'učím se' předělávat kód z špageťáku na něco lepšího, tak zůstanu u PDOčka a toho, co si zkomolím pro ulehčení práce díky OOP. :)

.. A koukám že jste tady na fóru dost aktivní. :D 

PHP › Problém s funkcí foreach
22. 8. 2015   #204486

Zajímavé, mně to udělalo také. Když jsem však řádky 

foreach($params as $param_key => $param_value) { $request->bindParam($param_key, $param_value); } $request->execute();

nahradil jediným řádkem 

$request->execute($params);

bylo najednou vše OK.

BTW: Nedá mi to: Proč zavíráš databázi po provedení každého SQL dotazu?

BTW2: Místo "return true" používám něco užitečnějšího: "return $request"

 

Toto řešení napadlo mého spolukódícího, ale stejně mi nedalo a chtěl jsem zjistit, proč 'nefunguje' toto řešení. :)
PS: Databázi zavírám kvůli tomu, že po vykonání dotazu si stejně wrapper otevřu, když to tady tak píšu, tak mi to přijde nepraktické.. a asi to i brzo změním. :D
 

Beru zpátky predchozi prispevek :-D s pdo sem dlouho nedělal, ta dvojtečka tam patří :-) každopádně vymen funkci bindParam za bindValue a melo by ti to slapat ;-) Pokud to tak bude tak dej vedet a ja ti vysvetlim proc

:-)

Tak nakonec to bindValue vyřešil. Asi si bindParam nedokáže vycucat přesný údaj z arraye a tak si bere ten poslední nasetovaný a tím je IP adresa. :|
PS: Return mám dělaný jinak - neuvedl jsem celou funkci, celou mám zde (http://pastebin.com/VvdjB2jf) a pro mé účely praktická doopravdy je. :D

Díky za pomoc. :)

MaraIGI
PHP › Problém s funkcí foreach
22. 8. 2015   #204481

Zdravím,
snažím se si ulehčit práci malou funkcí, do které zadám SQL dotaz který v funkci zpracuji pomocí pdo prepare 'funkce' (většinou s nějakými předdefinovanými místo pro 'vložení' variablu [:name, :id, atd..]), a parametry, které se pomocí pdo bindParam 'funkce' snažím 'nabindovat' do SQL dotazu.

<?
public function query($sql, $params) {
        try {
        $request = self::$connection->prepare($sql); // Přístup k databázi je vždy. :-) - V classe

        foreach($params as $param_key => $param_value) {
            $request->bindParam($param_key, $param_value);
        }

        $request->execute();

        self::close(); // Definováno v classe (ignorujte)

        return true;
    } catch (PDOException $error) {
        die("Nastala chyba v dotazu: ".$error->getMessage());
    }
}

A funkci volám tímto stylem:

$volana_classa->query("INSERT INTO `users` (`username`, `password`, `email`, `reg_time`, `reg_ip`) VALUES (:user, :pass, :email, :time, :ip)",
array(":user" => $d['user'] /* zkoušl jsem i přímý variable.. místo $d['....'] */, ":pass" => $d['pass'], ":email" => $d['email'], ":time" => $d['reg_time'], ":ip" => $d['reg_ip']));

.. A ta funkce se vlastně i provede, vše se do databáze vloží, ale na všech polích v databázi se místo dle předdefinovaných věci vloží jen IP adresa.. Zkoušel jsem si i všechny data vypsat, což také všechny má zadávaná data vypsalo - a dokonce správně.. Ale v rámci této funkce se tomu jakoby nechtělo..  :|

Budu rád za jakoukoliv radu  :)
Díky.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý