Autor Zpráva
Lubosh
Profil
Dobrý den,

potřeboval bych php zápis, který by mě při zobrazení seznamu vypsal každý druhý jinak.

Např:

<li class="red">Seznam</li>
<li class="blue">Seznam</li>
<li class="red">Seznam</li>
<li class="blue">Seznam</li>
<li class="red">Seznam</li>
<li class="blue">Seznam</li>
<li class="red">Seznam</li>

Jak to jednoduše zapsat??

<li class="<?php .......... ?>">Seznam</li>


Děkuju za radu.
Joker
Profil
Lubosh:
Jestli se seznam vypisuje cyklem, tak třeba tahle:
$suda = false;
while(/* podmínka cyklu */){
  echo('<li'
  if($suda) echo(' class="suda"');
  echo('>položka</li>');
  $suda = !$suda;
}

Mimochodem, na rozlišení sudých a lichých řádků stačí jen jedna třída. Pokud by byly potřeba dvě, dá se to udělat analogicky.
Lubosh
Profil
Parse error: syntax error, unexpected ')' in

ale kde?
habendorf
Profil
echo('<li'“ tahle není uzavřená.
Lubosh
Profil
Chyba stále trvá :-(

Parse error: syntax error, unexpected ')' in /var/www/libraries/TplParser.php(168) : eval()'d code on line 3

<?php
$suda = false;
while(/* podmínka cyklu */){
echo('<li')
if($suda) echo(' class="suda"');
echo('>položka</li>');
$suda = !$suda;
}
?>
radas
Profil *
chybi střednik...
echo('<li') ;
Lubosh
Profil
Pořád stejné :-( i se středníkem :-)
radas
Profil *
a je napsana ta podminka že u toho while?
Lubosh
Profil
a je napsana ta podminka že u toho while?

Nevěděl jsem že tam mám něco psát, protože php neumím, proto se ptám na tento zápis :-)
Co se tam má zapsat?
foboss
Profil *
<?php

$pocet = cislo;
$x = 1;

for($i=1;$i<=$pocet;$i++){

if($x%2==0){
$class = 'modra';
}

if($x%2!=0){
$class = 'cervena';
}

echo '<li class='.$class.'>Seznam</li>';

$x++;
}
?>
Lubosh
Profil
foboss
To mi nevypíše pro změnu nic :-)
Joker
Profil
Lubosh:
Parse error: syntax error, unexpected ')' in
Omlouvám se, nedokončil jsem jeden řádek toho skriptu.

Každopádně to není skript na ctrl-c, ctrl-v do stránky a ono to bude fungovat, to má být návod, jak to zhruba udělat!
Na kompletní skript to zadání ani neobsahuje dost informací.

Poznámka: Možná není od věci dávat do takových ilustračních příkladů základní syntaktické chyby. Zabrání to tomu, aby někdo ten příklad bez jakékoliv znalosti věci zkopíroval a použil, v nejhorším případě by to na první pohled i fungovalo a dal by to na ostrý web.
foboss
Profil *
Lubosh: premenna $cislo je pocet zaznamov (tam musis napisat cislo, alebo premennu v ktorej je cislo s pocetom <li> zaznamov);

css potom bude vyzerat takto:

LI.modra {
color:aaaaaa;
}

LI.crevena {
color:cccccc;
}


a este tam mam malu chybicku:
echo '<li class="'.$class.'">Seznam</li>';
(chybali mi tam este uvodzovky). Mne to na localhoste frci :)
Lubosh
Profil
foboss
jj to css bych pochopil (jsem kodér), ale na locale mi to nejede .........

když zadám:

for($i=0;$i<=$pocet;$i++)

zobrazi se aspoň červena, jinak ale nic.
foboss
Profil *
skus dat do premennej $cislo napr.:

$cislo = 10;

alebo nejaky pocet, neviem aky , kedze si nenapisal, aky pocet zaznamov ma mat ten zoznam
Lubosh
Profil
Ještě aby bylo jasno:

CMS mi vypisuje:

<li class="">Seznam 1</li> 
<li class="">Seznam 2</li> 
<li class="">Seznam 3</li> 
<li class="">Seznam 4</li> 
<li class="">Seznam 5</li> 
<li class="">Seznam 6</li> 
<li class="">Seznam 7</li>


a já bych potřeboval:

<li class="trida1">Seznam 1</li> 
<li class="trida2">Seznam 2</li> 
<li class="trida1">Seznam 3</li> 
<li class="trida2">Seznam 4</li> 
<li class="trida1">Seznam 5</li> 
<li class="trida2">Seznam 6</li> 
<li class="trida1">Seznam 7</li>


Opravdu netuším jak na to :-), a hledal jsem všude. Kdysi jsem něco takového použil, ale už si nepamatuju jak to bylo :-)
foboss
Profil *
$x = 1;

for($i=1;$i<=7;$i++){

if($x%2==0){
$class = 'trida1';
}

if($x%2!=0){
$class = 'trida2';
}

echo '<li class="'.$class.'">Seznam '.$i.'</li>';

$x++;
}


skus toto, skopiruj a vloz.
Lubosh
Profil
foboss
Ten výpis není fixní ....... jakýkoli počet .... jde mi jen o to střídání.

nebo taky, když mě CMS třeba vypíše několikrát za sebou:

<div class="">Text</div>

tak když přidám:

<div class="">Text</div><?php ..... ?>

tak aby to vypsalo (každý druhý):

<div class="">Text</div><hr />
<div class="">Text</div>
<div class="">Text</div><hr />
<div class="">Text</div>
<div class="">Text</div><hr />
<div class="">Text</div>
<div class="">Text</div><hr />

nebo třeba (každý třetí):

<div class="">Text</div><hr />
<div class="">Text</div>
<div class="">Text</div>
<div class="">Text</div><hr />
<div class="">Text</div>
<div class="">Text</div>
<div class="">Text</div><hr />
<div class="">Text</div>
<div class="">Text</div>
<div class="">Text</div><hr />
Lubosh
Profil
$x = 1;

for($i=1;$i<=7;$i++){

if($x%2==0){
$class = 'trida1';
}

if($x%2!=0){
$class = 'trida2';
}

echo '<li class="'.$class.'">Seznam '.$i.'</li>';

$x++;
}


skus toto, skopiruj a vloz.



To by mě vypsalo něco podobného:

<div class="">Text</div>1234567 
<div class="">Text</div>1234567 
<div class="">Text</div>1234567  
<div class="">Text</div>1234567 
<div class="">Text</div>1234567 
<div class="">Text</div>1234567  
<div class="">Text</div>1234567 
fakeit
Profil *
<?php
// $i = 0
for( $i*2; $i <= count($zaznamy); $i++ ){

$zaznamy[$i]['ca'] = 'sude';

}
foreach( $zaznamy as $zaznam ){

if(IsSet($zaznam['ca'])) echo "<li class=\"sudatrida\">". $zaznam['detail'] ."</li>";
else echo "<li class=\"lichatrida\">". $zaznam['detail'] ."</li>";

}

?>
Lubosh
Profil
<?php
// $i = 0
for( $i*2; $i <= count($zaznamy); $i++ ){

$zaznamy[$i]['ca'] = 'sude';

}
foreach( $zaznamy as $zaznam ){

if(IsSet($zaznam['ca'])) echo "<li class=\"sudatrida\">". $zaznam['detail'] ."</li>";
else echo "<li class=\"lichatrida\">". $zaznam['detail'] ."</li>";

}

?>

-----------------------------
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 38 bytes) in /var/www/libraries/TplParser.php(168) : eval()'d code on line 5

.....................................................................................................................

<?php
$i = 0
for( $i*2; $i <= count($zaznamy); $i++ ){

$zaznamy[$i]['ca'] = 'sude';

}
foreach( $zaznamy as $zaznam ){

if(IsSet($zaznam['ca'])) echo "<li class=\"sudatrida\">". $zaznam['detail'] ."</li>";
else echo "<li class=\"lichatrida\">". $zaznam['detail'] ."</li>";

}

?>

-----------------------------------
Parse error: syntax error, unexpected T_FOR in /var/www/libraries/TplParser.php(168) : eval()'d code on line 3
fakeit
Profil *
<?php 
var_dump(count($zaznamy));
?>

a pak to hoď sem :)
Lubosh
Profil
fakeit
int(0)
fakeit
Profil *
Lubosh
Tak definuj proměnnou záznamy!
Lubosh
Profil
fakeit

Vzdávám to ...... nejsem programátor. Zkusím hledat jinde.
fakeit
Profil *
Lubosh
Tak někomu zaplať :P Protože bez vstupu je ti ten kus kódu k ničemu :)
Alphard
Profil
Lubosh:
Vzdávám to ...... nejsem programátor. Zkusím hledat jinde.
Zkus hledat pořádně.

fakeit:
Tak někomu zaplať :P Protože bez vstupu je ti ten kus kódu k ničemu :)
PHP FAQ je každému k dispozici bezplatně, stačí nebýt líný.

Odlišení lichých a sudých řádků

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: