IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
katrincsak
Člen
Avatar
katrincsak:4.1.2016 12:33

Zdravím,

Potřebuji pomoc :(

  1. Uživatel si zvolí, které inzeráty chce zobrazovat podle zadaných údajů např. kategorie, region, psč atp. To se uloží do DB s názvem "zasilani_emailu". Uživatel si toho může zvolit více a tak řádků je xx.
  2. A já potřebuji vytahat data z tabulky výše zmíněné "zasilani_emailu". (Což je v pohodě samozřejmě - uložím do pole).
  3. Jenže 1 hodnota v poli může mít xx výsledků při dotazu na mysql a absolutně netuším jak to do pole dostat.
  • Script níže funguje, vypíše data dle zadaných kritérií, ale jak je vidět např. na obrázku, který je níže, tak tiskáren je je mnohem více, takže se sice zeptám opakovaně, ale jen s jedním výsledkem na 1 dotaz. Hlavně zároveň nechápu, proč musím mít tak blbej "název" pole "[nazev]->[0]->[] ".
// Vytahám si data do pole z tabulky "zasilani_emailu" podle uživatele.
$this->data['zasilaneEmaily'] = $DataSQL->sqlSelectVsechny('*', 'zasilani_emailu', 'id_uzivatele', $_SESSION['prihlaseni']['id']);

// Aby nedocházelo k opakovanému dotaz na mysql (snížení zátěže a délky dotazu).
Db::beginTrans();

//Výpis do pole, to proč název pole vypadá takto divně by mě taky zajímalo proč to jinak nejde.
foreach($this->data['zasilaneEmaily'] as $zasilani){
  $this->data['vypisInzeratu'][0][] = $DataSQL->zasilaniEmailuSelect($zasilani['sub_kategorie'],$zasilani['region'],$zasilani['cena_min'],$zasilani['cena_max']);
}

// Ukončení Db::beginTrans();
Db::commitDB();

Výpis pak vypadá takto:

foreach($vypisInzeratu[0] as $inzerat){
 if($inzerat[0]['zobrazeni'] == 1){
 echo "
  <form method='post' >
   <tr>
        <td> ".$inzerat[0]['id']."</td>
        <td class='cena'> ".$inzerat[0]['cena1']." Kč</td>
        <td>".$inzerat[0]['nadpis']."</td>
        <td class='akce'>
        <input type='hidden' name='id_inzerat' value='".$inzerat[0]['id']."'/>
        <input class='button3' type='submit' name='obnovit' value='Obnovit'/></td>
   </tr>
 </form>";
 }
}

Děkuji moc za rady.

 
Odpovědět
4.1.2016 12:33
Avatar
katrincsak
Člen
Avatar
katrincsak:4.1.2016 12:38

Struktura by tedy měla vypadat takto něják.

noteboky ->
- NTB 1
- NTB 2
- NTB 3
tiskarny ->
- TISK 1
- TISK 2
- TISK 3
ostatni ->
- OSTATNI 1

Výpis dle výše uvedeného udělá prakticky jen.

NTB1, TISK1, OSTATNI1

Níže lze ještě vidět zápis..

Editováno 4.1.2016 12:41
 
Nahoru Odpovědět
4.1.2016 12:38
Avatar
katrincsak
Člen
Avatar
katrincsak:4.1.2016 12:42

Chyba editace a již nešlo vložit fotku...

Editováno 4.1.2016 12:42
 
Nahoru Odpovědět
4.1.2016 12:42
Avatar
katrincsak
Člen
Avatar
katrincsak:9.1.2016 11:09

Děkuji všem, že nikdo nereagoval aspoň jsem byl nucen nad věcí více přemýšlet.

Použil jsem to co již dříve a to cyklus "for" a funkci "count".

(Je to samozřejmě jen testovací výpis se kterým už budu pracovat jinak).

$pZaklad = count($this->data['vypisInzeratu']);

for($x=0; $x < $pZaklad; $x++){
 echo "Pořadí: ".$x."<br>";
 $pHlavni = count($this->data['vypisInzeratu'][$x]);
   for($y=0; $y < $pHlavni; $y++){
   echo "Inzerát".$y.":".$this->data['vypisInzeratu'][$x][$y]['nadpis']."<br>";
  }
}

Rada: Stačí se řádně vyspat, ráno si udělat kafe, zapnout pc, vypnout fb, vypit kafe .... A výsledek se dostaví :D

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
9.1.2016 11:09
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.