Portál AbcLinuxu, 26. dubna 2024 01:55


Dotaz: Jak naplnit pole v PHP daty z Mysql

23.3.2014 19:34 Marián
Jak naplnit pole v PHP daty z Mysql
Přečteno: 543×
Odpovědět | Admin
Ahoj, poradí prosím někdo zkušený, jak bych mohl naplnit takové pole daty uložené v MySQL?
     $array = array('aaa' => array('a' => 'a-aaa', 'b' => 'b-aaa'),
                    'bbb' => array('a' => 'a-bbb', 'b' => 'b-bbb'),
                    'ccc' => array('a' => 'a-ccc', 'b' => 'b-ccc'),
                    'ddd' => array('a' => 'a-ddd', 'b' => 'b-ddd'),
                    'eee' => array('a' => 'a-ccc', 'b' => 'b-eee'));
Děkuji za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 23.3.2014 19:51 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Postav dotaz tak, aby první sloupeček obsahoval klíče vnějšího pole ('aaa') a pak použij:
$array = $pdo->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
Pokud to nebude vyhovovat, tak prostě volej obyčejné fetch a skládej si to pole dle libosti.
Hello world ! Segmentation fault (core dumped)
23.3.2014 20:30 Marián
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Díky ale vůbec jsem nepochopil tvou radu :-(
27.3.2014 11:41 Marián
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Postav dotaz tak, aby první sloupeček obsahoval klíče vnějšího pole ('aaa') a pak použij:
$array = $pdo->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
Když použiju tvé řešení které je mimo jiné parádní
$array = $pdo->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
dostanu takové pole
array('key1' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),),
      'key2' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),),
      'key3' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),),
     )
Jak ale můžu získat jen tohle? Bez tohoto: "array(0 =>"

a výsledek by pak byl takovej
array('key1' => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),
      'key2' => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),
      'key3' => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),
     )
Díky
Josef Kufner avatar 27.3.2014 12:34 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Tomu se věnuje hned první komentář v dokumentaci fetchAll:
$results = array_map('reset', $results);
Sice to je celkem krátké, ale přináší to zbytečnou režii navíc.

Otázkou je, o kolik je fetchAll s FETCH_GROUP rychlejší, než volání obyčejného fetch a vlastního skládání pole.
Hello world ! Segmentation fault (core dumped)
23.3.2014 19:52 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Však už ho máš naplněné. Nepleteš si náhodou databázi s nějakým úložištěm?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
23.3.2014 20:30 Marián
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
To mělo sloužit jako mustr, nic víc...
23.3.2014 20:49 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Tahat z databáze celou tabulku je obvykle zbytečné, ale když už to tak musíš mít, zkus tohle:
<php
$array = array();
foreach ($pdo->query('SELECT aaa, a, b FROM Array', PDO::FETCH_ASSOC) as $row) {
    $aaa = $row['aaa'];
    $array[$aaa] = array('a' => $row['a'], 'b' => $row['b']);
}
Vypadá to podivně, ale kdybys byl vymyslel lepší názvy proměnných, bylo by to vypadalo lépe.

Časem určitě zjistíš, že tohle nepotřebuješ a že se to dá udělat mnohem jednodušeji, když trochu změníš vstupní požadavky. Už pojmenování slovníku $array zní podivně. Podivné je i to, že chceš slovník a ne seznam.

Možná by se pro tento účel mnohem lépe hodilo XML nebo INIFILE.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
23.3.2014 20:55 Marián
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Díky za pomoc, jdu to vyzkoušet..
Podivné je i to, že chceš slovník a ne seznam.
Můžeš to prosím upřesnit?
Možná by se pro tento účel mnohem lépe hodilo XML nebo INIFILE.
Jako že to mám uložit místo do mysql do XML souboru?
23.3.2014 21:06 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Pole, seznam a slovník jsou 3 datové struktury, které se v PHP dají vytvořit pomocí array(). Každá by měla být pojmenována podle toho, co je v ní uchováno. Název "$array" je úplně nesmyslný, zejména pro tvůj slovník. Takový název proměnné by se v aplikaci neměl vyskytovat.

Pokud to vždy potřebuješ nacucnou všechno naráz, tak je XML mnohem vhodnější než databáze a INIFILE také. Načteš je zavoláním jedné funkce. Pokud však potřebuješ jen několik řádek nebo potřebuješ dělat nějaké operace s daty, je výhodnější databáze.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.4.2014 11:33 JV
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj. Pri pouziti takoveho pole je mozno ziskat i nazev klice pri prochazeni foreach-em ?

array('key1' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),),
      'key2' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),),
      'key3' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),),
     )
foreach ($array as $row) {
 echo $row['sloupec1']; //data1
 echo $row['sloupec2']; //data2
 echo ???               //key1
}
4.4.2014 12:05 Lucius
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
foreach ($array as $key => $row)
4.4.2014 12:14 JV
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
Díky. To jsem zkousel, ale zase nevypisu ty jednotlive sloupce :-(
4.4.2014 12:22 Lucius
Rozbalit Rozbalit vše Re: Jak naplnit pole v PHP daty z Mysql
protoze v row mas to prvni vnorene pole - jim pak muzes prochazet zase treba pres foreach, nebo pouzit list ap.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.