Autor Zpráva
IkE Blaster
Profil *
Lze nějak vypsat obsah třeba z 20 souborů naráz přes require?
něco jako:

require("nov/nov*.php");

místo * je v názvu souboru číslo

takže by to mělo zjistit a udělat toto:

require("nov/nov1.php");
require("nov/nov2.php");
atd. a všechny vypsat
Hugo
Profil
for ($i=1;$i<20;++$i)
{
require('nov/nov'.$i.'.php');
}
IkE Blaster
Profil *
Díky funguje to. ještě se chci zeptat, jde udělat, aby byly od sebe oddělané čárou?

koukněte se na
http://phpbb-ike.europeel.com/noframe/index.php?page=novinky
je to jen kostra webu.

nejlépe zakomponovat do css
IkE Blaster
Profil *
už to nepotřebuji. vyřešil jsem to přidáním na konec novinky
IkE Blaster
Profil *
už to nepotřebuji. vyřešil jsem to přidáním na konec novinky
IkE Blaster
Profil *
Nevíte, jestli by to šlo otočit? od 20 do 1?
nebo podle data?
Hugo
Profil
IkE Blaster

Zkus použít mozek a uvidíš, že to půjde otočit.
IkE Blaster
Profil *
for ($i=20;$i<1;++$i)
{
require('nov/nov'.$i.'.php');
}

myslíš takhle?
nebo

for ($i=1;$i>20;++$i)
{
require('nov/nov'.$i.'.php');
}

takhle?

Ani jedno mi nebude fungovat, protože tam nemám 20 příspěvků.

Takže moc prosím o radu. vyhovovalo by mi podle data, ale to bude složité.
Hugo
Profil
IkE Blaster

To co jsi napsal je špatně. Musíš začít na 20 a potom v každé iteraci musíš použít dekrementaci.

for ($i=20;$i<1;--$i)
{
require('nov/nov'.$i.'.php');
}

Podle data to taky není problém. Stačí projít ty soubory, načíst do pole název a čas poslední změny a pak to setřídit podle času.
IkE Blaster
Profil *
Takže stačí napsat do skriptu

for ($i=20;$i<1;--$i)
{
require('nov/nov'.$i.'.php');
}

a mělo by to jít?
já jsem to zkoušel a buď to vypíše jen jednu zprávu nebo žádnou.
Musim někam něco ještě připsat nebo to nepude?

S tim podle času jsem tě moc nepochopil.

Pokud můžeš tak mi napiš na ICQ 236-663-765
Hugo
Profil
IkE Blaster

Bacha, pokud require narazí na soubor, který neexistuje, tak zahlásí error a skončí.

S tím datem je to jednoduché, ale budeš muset věnovat trochu času teorii.
IkE Blaster
Profil *
Mě to žádný error nehlásí. Nestane se vůbec nic.
I když dám toto tak to blbne (mám tam 4 soubory).

for ($i=4;$i<1;--$i)
{
require('nov/nov'.$i.'.php');
}

Pomůžeš mi s tím datem prosím?
Nějakej stručnej návod co kam dát.

PS. Máš ICQ?
Hugo
Profil
IkE Blaster

Možná máš jen zakázano vypisování chyb. Tak na dálku těžko říct.

Ad datum

Teď nemám čas ani chuť to psát. Podívej se do manuálu na funkce pro práci s polem a se soubory a časem to dáš dohromady.

ICQ mám, ale nedám.
hanakus
Profil
Toto řešení je podle mě lepší, jelikož si regulární výraz můžeš libovolně upravit a nejsi odkázán jen na jméno souboru nov1.php, nov2.php novx.php ...

$dir=opendir("nov");
while($file=readdir($dir))
{
if (ereg("nov[0-9].php",$file)) include "nov/".$file;
}

opendir - otevře adresář
readdir - vrací jména souborů v otevřeném adresáři


s řazením souborů podle data (od nejnovějšího k nejstaršímu):

$dir=opendir("nov");
while($file=readdir($dir))
{
if (ereg("nov[0-9].php",$file))
{
$ftime[filemtime("nov/".$file)] = $file;
}
}
krsort($ftime,1); //sestupne razeni

foreach ($ftime as $file)
{
include "nov/".$file;
}
IkE Blaster
Profil *
Zkusil jsem to druhý podle času. vypadá to slibně ale hází to chyby:

Warning: opendir(): SAFE MODE Restriction in effect. The script whose uid is 99 is not allowed to access /3w/webz.cz/f/fcpisek owned by uid 0 in /3w/webz.cz/f/fcpisek/url/novinky.php on line 2

Warning: opendir(nov): failed to open dir: No such file or directory in /3w/webz.cz/f/fcpisek/url/novinky.php on line 2

Warning: readdir(): supplied argument is not a valid Directory resource in /3w/webz.cz/f/fcpisek/url/novinky.php on line 3

Warning: krsort() expects parameter 1 to be array, null given in /3w/webz.cz/f/fcpisek/url/novinky.php on line 10

Warning: Invalid argument supplied for foreach() in /3w/webz.cz/f/fcpisek/url/novinky.php on line 12
IkE Blaster
Profil *
novinky.php:

<?php
$dir=opendir("nov");
while($file=readdir($dir))
{
if (ereg("nov[0-9].php",$file))
{
$ftime[filemtime("nov/".$file)] = $file;
}
}
krsort($ftime,1); //sestupne razeni

foreach ($ftime as $file)
{
include "nov/".$file;
}
?>
rabbit
Profil
IkE Blaster

To co jsi napsal je špatně. Musíš začít na 20 a potom v každé iteraci musíš použít dekrementaci.

for ($i=20;$i<1;--$i)


Hugo, Hugo ...
... chybička se vloudí, takže otázka za 100 bodů:

Kolikrát proběhne cyklus for, který je zadaný takto: for ($i=20;$i<1;--$i) {} ???

A malá nápověda formou doplňující otázky: Nesouvisí s tím také, proč mu to neháže žádné chyby???

;-)))
Hugo
Profil
Nojo, ale to je detail, já jsem to totiž zkopíroval z toho co navrhoval IkE Blaster. Jen jsem změnil inkrementaci na dekrementaci.

Ale to je stejně jedno, protože s jeho znalostmi php to stejně sám nerozchodí. Navíc na serveru má evodentně safe mode, který to mírně komplikuje.
rabbit
Profil
To je vše pravda, ale pobavilo mě rozebírání vypnutých error hlášek, ke kterým jste se díky této chybce dostali ;-))

Jinak teď jsem si přečetl Diskuse » PHP » administrace souborů s částečným wysiwyg a jsem si naprosto jistý, že to sám nerozchodí. A s takovým přístupem jako je v tom threadu, bych mu už asi vůbec neradil.
Hugo
Profil
rabbit

Nojo, řeším při tom i jiné věci a ve skrytu duše doufám, že když sem plácnu kus kódu, tak si ho dotyčný upraví a ne pouze tupě zkopíruje. Překlep se může stát vždycky.
IkE Blaster
Profil *
díky za kritiku mých schpností, ale nějak se to naučit musím (můžu).
Takže když se tu tak vychloubáte, že vy jste bohové a já neumím nic, tak mi vymyslete ten skript prosím.

A to druhý s tím částečným wysiwygem už jsem zprovoznil přes J# ftp funkce jako program
na disku ;-o.
Hugo
Profil
IkE Blaster

Pokud se chceš PHP naučit, tak si to napiš sám. Jiná cesta není. Pár řešení je i v tomto vlákně, stačí je jen trochu upravit.

Nikdo se tu nevychloubá, bylo to jen prosté konstatování faktu.
IkE Blaster
Profil *
No tak jako já trošku php umim, ale jen základy typu k čemu slouží include a podobně.

Nic to nevypisovalo, protože tam nebylo 20 novinek ale 4. takže mi to jelo přes:

<?php

for ($i=4;$i>0;--$i)
{
require('nov/nov'.$i.'.php');
}

?>

Chybu si tam měl malou to sem si upravil hned po radě.
nevim ale jestli nějak lze udělat místo 4 poslední největší číslo.
Hugo
Profil
Tak to udělej jak radil hanakus. Projeď celý adresář a vyhledej soubory, jejichž název odpovídá danému vzoru.

Pokud ovšem chceš tímto způsobem vypisovat novinky nebo nějaké zprávy, tak to udělej pomocí databáze. Ušetříš si tím moc práce a ten systém bude přehlednější.
IkE Blaster
Profil *
nějak jsem ho nepochopil. zřejmě tam musim něco doplnit, protože jsem zkoušel a vždy to vypsalo stejnou chybu. Neporadíš prosím co?
Anonymní
Profil *
IkE Blaster

Warning: opendir(nov): failed to open dir: No such file or directory in /3w/webz.cz/f/fcpisek/url/novinky.php on lin

Problém bude v tom, že se opravdu snažíš otevřít neexistující adresář. Řekl bych že jsi v adresáři url a snažíš se listovat v adresáři na stejné úrovni. Takže zkus tohle ../nov. Další chyby jsou jen důsledkem této. Jinak skript jsem zkoušel doma, a normálně funguje, takže si zkontoluj cesty, názvy souborů apod.
hanakus
Profil
(Zapoměl jsem se přihlásit).
IkE Blaster
Profil *
Já jsem to vyřešil tahle:


<?
function Pocet_Souboru ($adresar)
{
$adresar2 = Dir($adresar);
$PocetSouboru = 0;
while ($polozka=$adresar2->Read())
{
if (filetype($adresar."/".$polozka) == "file"):
$PocetSouboru++;
endif;
}
$adresar2->Close();
return $PocetSouboru;
}

// Funkce se volá tímto příkazem
// místo $adresar se napíše adresář, ve kterém se mají počítat soubory

Pocet_Souboru("./nov");
?>
<?
for ($i=Pocet_Souboru("./nov");$i>0;--$i)
{
require('nov/nov'.$i.'.php');
}

?>
IkE Blaster
Profil *
tamto ale ještě zkusim.
IkE Blaster
Profil *
už jse mto rozchodil. já jsem to měl přes proměnné, takže to hlásilo chyby.
Toto téma je uzamčeno. Odpověď nelze zaslat.