Autor Zpráva
PetraPP
Profil
Opět bych potřebovala výpomoci s výpisem. Bohužel si nevím rady, jak bych do tohoto HTML napasovala IF(), abych při výpisu dat přes FOREACH() dostávala tento HTML kód:

<div class="portal-img">   
<div class="row">    
<div class="pismeno"><p>A</p></div>       
<div class="vypis">
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
</div> 
</div>
</div>


<div class="portal-img">   
<div class="row">    
<div class="pismeno"><p>B</p></div>    
<div class="vypis">
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
</div>
</div>
</div>


<div class="portal-img">   
<div class="row">    
<div class="pismeno"><p>C</p></div>    
<div class="vypis">
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
</div>
</div>
</div>    
Taps
Profil
PetraPP:
Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze
PetraPP
Profil
Toto jsem již zkusila, ale výsledek je hrozný :)

$pamet = '';
$obsah = array();
foreach ($vypis_portalu as $portal)
{

$pismeno = substr($portal[3], 1,1);
$obsah[$pismeno] .= '<div class="img"><img src="#"></a></div>';

  if ($pismeno != $pamet)
  {
    $pamet = $pismeno;
    echo '<div class="portal-img">   
         <div class="row">    
          <div class="pismeno"><p>'.strtoupper($pamet).'</p></div>
            <div class="vypis">
             '.$obsah[$pamet].'
            </div>
          </div> 
        </div>  
      </div>';
  }
}
mimochodec
Profil
PetraPP:
Toto jsem již zkusila, ale výsledek je hrozný

To znamená co?
Mimochodem ten příklad jsi zřejmě nepochopila a špatně opsala. V tom if nemá být všechno, ale jen to písmeno (které se neshoduje s tím písmenem z minulého průchodu cyklu).
PetraPP
Profil
Na počátku výpis chápu:
foreach ($vypis_portalu as $portal)
{

$pismeno = substr($portal[3], 1,1);
  if ($pismeno != $pamet)
  {
    $pamet = $pismeno;
    echo '
       <div class="portal-img col-xs-18">   
         <div class="row">    
          <div class="col-xs-18 col-sm-5 col-md-4 col-lg-3" >     
            <p id="portal-'.$pamet.'" class="letter">'.strtoupper($pamet).'</p>   
          </div>
            <div class=" col-xs-18  col-sm-13 col-md-14 col-lg-15">          
    ';
  }

Ale když už výpis pro písmeno skončí tak jak mohu vložit toto?:
</div> 
</div>  
</div>

Vůbec nevím, jak to přes IF řešit :(
mimochodec
Profil
PetraPP:

Funguje to takto: pro každý "výrobek" (ať je to co chce) vyhodnotíš, jestli se jeho první písmeno shoduje s prvním písmenem toho minulého výrobku. To si pamatuješ v nějaké proměnné. Když se písmeno současné rovná tomu minulému, tak nic. Když se nerovná, vypíšeš něco jako <h3>$novepismeno</h3>.
PetraPP
Profil
Jasný, tohle chápu, ale mě jde o to, že když už se písmeno A=A ... tak k tomu vypisuji Amerika, Antik, Afrika ... a jakmile je výpis ukonce, potřebuji vypsat 3x </div> Bohužel nevím, jak vypsat právě ty tři </div>
mimochodec
Profil
PetraPP:
Já myslím, že pořád nechápeš. V tom kódu vypisuješ nějaké divy, neuzavíráš je a řešíš, jak si pamatovat jejich počet. To je nesmysl. Při každém průchodu každou tu jednotlivou položku začni a uzavři. V případě, že vkládáš nadpis sekce, začni ho a uzavři.
PetraPP
Profil
Asi se nechápeme navzájem. Promiň, jsem taková tvrdohlavá. Nemohl bys mě radši pro mou tvrdou palici vytvořit PHP script, který provede výpis a udělá výpis HTML:
<div class="portal-img">   
<div class="row">    
<div class="pismeno"><p>A</p></div>       
<div class="vypis">
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
<div class="img"><img src="#"></div> 
</div> 
</div>
</div>
 
 
<div class="portal-img">   
<div class="row">    
<div class="pismeno"><p>B</p></div>    
<div class="vypis">
<div class="img"><img src="obr_1.jpg"></div> 
<div class="img"><img src="obr_2.jpg"></div> 
<div class="img"><img src="obr_3.jpg"></div> 
</div>
</div>
</div>
 
 
<div class="portal-img">   
<div class="row">    
<div class="pismeno"><p>C</p></div>    
<div class="vypis">
<div class="img"><img src="obr_4.jpg"></div> 
<div class="img"><img src="obr_5.jpg"></div> 
</div>
</div>
</div>
mimochodec
Profil
V principu nějak takhle. Nevím, jestli tam všechny proměnné souhlasí. Nechápu, proč tam máš substr($portal[3], 1,1).

$pamet = ""; 
foreach ($vypis_portalu as $portal) {
 
  $pismeno = substr($portal,0,1);
   
  if ($pismeno != $pamet) {
    echo '<div class="portal-img">   
         <div class="row">    
          <div class="pismeno"><p>'.strtoupper($pamet).'</p></div>';
  }
  
  echo '<div class="vypis"><div class="img"><img src="#">'.$portal.'</div></div>';

  if ($pismeno != $pamet) {
    echo '</div> 
        </div>  
      </div>';
  }
  
  $pamet = $pismeno; 
}
PetraPP
Profil
Bohužel :(
Vypíše to dřív <div class="img"> a pak až to vypíše písmeno A.
mimochodec
Profil
Opraveno. Myslím, že k pochopení by to mohlo stačit.
PetraPP
Profil
Teď to zase písmeno vynechá, nevypíše se <div class="pismeno"><p></p></div>
PetraPP
Profil
Omlouvám se, ale prostě ne a ne ... nefunguje to :( Moc vás prosím, pomozte, já si už fakt nevím rady :(

Script, který napsal mimochodec je funkční jen do té doby, pokud je výpis echo '<div class="vypis"><div class="img"><img src="#">'.$portal.'</div></div>'; pouze 1x. Pokud je tam více výpisů, tak už to nefunguje a vypíše to hned 3x </div> ....
<div class="vypis"><div class="img"><img src="#">1</div></div>

          </div> 
        </div>  
      </div>  
    
<div class="vypis"><div class="img"><img src="#">2</div></div>
<div class="vypis"><div class="img"><img src="#">3</div></div>
<div class="vypis"><div class="img"><img src="#">4</div></div>
abc
Profil
Jak vypadá to zdrojové pole? Jsou tam nějaké obrázky, které se mění, tak by mě zajímalo, kde se berou..

Pokud by to byly 2 pole, tak třeba takto:
(nějak se mi rozbilo formátování, pardon)
$source = ["A", "B", "C"];
$images = [
  "A" => [1, 2, 3],
  "B" => [4, 5, 6],
  "C" => [7, 8],                        
];
                    
foreach ($source as $value){
  echo '<div class="portal-img">   
           <div class="row">    
           <div class="pismeno"><p>';
  echo $value;
  echo '</p></div>
          <div class="vypis">';
  foreach ($images[$value] as $img){
     echo '<div class="img">';
     echo $img;
     echo '</div>';     
  }
  echo '</div>
           </div>
           </div>';
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: