Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Listan viimeisen alkion poisto

Väpä [30.09.2007 20:13:09]

#

Aiheen otsikko näyttäisi olevan kait vähän väärin mut iha sama...

(index.php)

<?php

//avataan hakemisto kuvat

$dir=opendir(".");

//luetaan ekan kuvan nimi

$nimi=readdir($dir);

// luodaan taulukko $list

$list=array();

//niinkauan kuin $nimi muuttajia esiintyy, ne talletetaan alkioina $list taulukkoon

while($nimi)
{
$list[]=$nimi;

//Poistetaan kaksi ensimmäistä alkiota jonosta, koska niissä on vain pisteitä
unset($list[0]);
unset($list[1]);


//Lukeminen jatkuu
$nimi=readdir($dir);


}

//tiedoston sulkeminen
closedir($dir);

//Kaikki jonon alkiot tulostetaan
foreach($list as $key =>$nimi)

{
if (preg_match("/\\.(png|jpg|gif|avi|wmv|flv)$/", "$nimi"))
    echo '<a href="'.$nimi.'"><img src="'.$nimi.'" / height=100></a> ';
else
    echo "<a href=\"$nimi\">$nimi</a> ";


}

?>

Mulla on kansio jossa on index.php ja x kuvaa.
Nyt kun koodi tulostaa kansiossa olevat kuvat tai seuraavaan kansioon linkin niin pitäisi saada se viimeinen tulostettava teksti pois, koska siinä on linkki vain tiedostoon index.php. kuinka se onnistuisi.

TsaTsaTsaa [30.09.2007 20:56:31]

#

Viimeisen alkion poisto onnistunee näin:

unset($list[count($list) - 1]);

Tai vaihtoehtoisesti vaihdat foreachin sellaiseksi for-silmukaksi, joka ei käy viimeistä alkiota läpi, eli

for ($i = 0; $i < count($list) - 1 ; ++$i)

Samalla voisi jättää kaksi ensimmäistä alkiota poistamatta ja aloittaa silmukka arvolla $i = 2.

peg [01.10.2007 00:04:24]

#

Taisin ymmärtää väärin mutta onko tästä apua...tulostaa siis kaikki tiedostot ja kansiot ja kuvat pikkukuvina. ei pisteitä eikä index.php:tä.

<?php
foreach(glob('*') as $dir) {
if (preg_match("/\\.(png|jpg|gif|avi|wmv|flv)$/", "$dir"))
    echo '<a href="'.$dir.'"><br><img src="'.$dir.'" / height=100></a> ';
 if(strtolower($dir) != 'index.php')
echo "<br><a href=\"$dir\">$dir</a>";
}
?>

ajv [01.10.2007 08:37:26]

#

if (preg_match("/\\.(png|jpg|gif|avi|wmv|flv)$/", "$nimi"))
if (preg_match("/\\.(png|jpg|gif|avi|wmv|flv)$/", "$dir"))

Mistä näitä sikiää? Vaikka kyseessä on vain kauneusvirhe, niin ei laiteta niitä muuttujia sinne lainausmerkkeihin.

GoldenDragon [11.10.2007 16:19:15]

#

TsaTsaTsaa kirjoitti:

Viimeisen alkion poisto onnistunee näin:

unset($list[count($list) - 1]);

...

Tai sitten ihan:

array_pop($list);

Väpä [18.10.2007 22:23:51]

#

Sain sen toimimaan seuraavaan tapaan:

<?php
if (preg_match("/index.php/", "$nimi"))
    echo '     ';
elseif (preg_match("/\\.(png|jpg|gif|avi|wmv|flv)$/", "$nimi"))
    echo '<br><a href="'.$nimi.'"><img src="'.$nimi.'" / height=150></a></br> ';
else
    echo "<br><a href=\"$nimi\">$nimi</a></br> ";
?>

Se vaikuttaakin melko samalta kuin peg:in vastaus.
Kiitos kuitenkin avusta!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta