Autor | Zpráva | ||
---|---|---|---|
carlosK Profil * |
#1 · Zasláno: 31. 10. 2011, 18:14:33
Dobrý den, snažím se vytvořit skript, který bude vypisovat všechny data data z databáze. Můj výsledek je zatím takovýto:
$db = self::$result->fetch_assoc(); //funguje foreach ($db as $klic => $hodnota) { $this->$klic = $hodnota; } Pokud ale chci vypsat data (např. $this->id), tak php vypíše jen jeden řádek dat. Děkuji |
||
Majkl578 Profil |
#2 · Zasláno: 1. 11. 2011, 01:07:56
Tady ti asi nikdo neporadí, když nikdo neví co je
self a self::$result . Můžeme pouze hádat, například, že 1. řádek nevrací pole polí/objektů.
|
||
Bertram Profil |
#3 · Zasláno: 1. 11. 2011, 07:02:16
Ahoj, jen tipuji (tip II.), že se snažíš docílit něčeho takového.
$i = 1; //za předpokladu, že self::$result je pole obsahující všechny řádky vrácené dotazem na databázi while($arRow = self::$result->fetch_assoc()) { echo "Řádek $i<br />"; foreach($arRow as $key => $value) { echo " - Sloupec '$key' má hodnotu '$value'<br />"; } $i++; } A pokud má jít o objekt, který má v sobě načítat a ukládat určítý počet řádků z databáze, musíš jednotlivé záznamy nějak rozlišovat. Můžeš si například vytvořit pole, kde klíčem bude nějaký identifikátor záznamu a jeho hodnota je na tobě (pole,objekt). |
||
carlosK Profil * |
#4 · Zasláno: 1. 11. 2011, 16:09:24
Omlouvám se za špatný popis. Ano, self::$result vrací obsah polí všech řádků z databáze. Šlo mi spíše o uložení dat z databáze do proměnné, abych je poté mohl vypisovat, ale i přesto Vám moc děkuji za odpověď.
|
||
Bertram Profil |
#5 · Zasláno: 1. 11. 2011, 20:50:04 · Upravil/a: Bertram
carlosK:
„ale i přesto Vám moc děkuji za odpověď.“ To zní jako nevyřešeno, takže se pokusím nastínit jednu z možných variant. $objHandle = mysqli_connect("127.0.0.1","root","heslo","databaze"); mysqli_query($objHandle,"SET CHARACTER SET utf8"); if (!$objHandle) { echo "Chyba při připojování k databázi.\n"; exit; } $objResult = mysqli_query($objHandle, "SELECT * FROM tabulka"); if (!$objResult) { echo "Chyba při zpracování dotazu.\n"; exit; } while($row = mysqli_fetch_assoc($objResult)) { foreach ($row as $key => $value) { $zaznamy[$row['sloupec použitý jako identifikátor']][$key] = $value; } } var_dump($zaznamy); |
||
carlosK Profil * |
#6 · Zasláno: 1. 11. 2011, 22:04:59
Vaše řešení mi vrací chybu na řádku 16 (Notice: Undefined index: ...). Zajímavé je ale že var_dump mi vrací jen poslední záznam z databáze.
|
||
Bertram Profil |
#7 · Zasláno: 1. 11. 2011, 22:37:11
V příkladu se počítá s tím, že hodnota bude unikátní, aby nemohlo docházet k přepisování předešlých průchodů cyklem while.
Pokud máte sloupec id s hodnotou auto_increment zkuste: $zaznamy[$row['id']][$key] = $value; |
||
carlosK Profil * |
#8 · Zasláno: 1. 11. 2011, 22:42:39
Ano, už vše funguje jak má. Ještě jednou Vám moc děkuji.
|
||
Časová prodleva: 14 let
|
0