Autor Zpráva
Fox
Profil
Mam na jeden stránce v jedné složce php soubor který má z určitého počtu zpráv vygenerovat stránku zprávy mají nazev 1.txt a 2.txt a potom tam mám soubor pocet.txt ve kterém je uden počet zpráv. Viz zdroják

<?php

$soubor = fopen("pocet.txt", "r");
$radky = fread($soubor, 3);
fclose($soubor);

$radek=($radky);
//ted se bude vypisovat obsah jednotlivych souboru
do {

$meno=($radek.".txt");
$soubor = fopen($meno, "r");
echo("<p>");
echo(fread($soubor,500));
fclose($soubor);
echo("</p>");
$radek=($radek-1);

IF($radek = 1){}
else{
$meno=($radek.".txt");
echo($meno);
$soubor = fopen($meno, "r");
echo("<p>");
echo(fread($soubor));
fclose($soubor);
echo("</p>");
$radek=($radek-1);
}
} while($radek = 0);
?>


Problem je v tom že když to spustím tak mi to vyhodí nasledující hlášky


Warning: fopen(): Unable to access 2 .txt in /disk1/ic/mluva/www/main/main.php on line 13

Warning: fopen(2 .txt): failed to open stream: No such file or directory in /disk1/ic/mluva/www/main/main.php on line 13



Warning: fread(): supplied argument is not a valid stream resource in /disk1/ic/mluva/www/main/main.php on line 15

Warning: fclose(): supplied argument is not a valid stream resource in /disk1/ic/mluva/www/main/main.php on line 16


Nevíte někdo kde mám chybu ?? asi mi nějak hapruje pojmenovávání spoborů pomocí proměnné...

Diky
Yuhů
Profil
víš, co je mi divný? Že ti to ve výpisu chyby píše před .txt tu mezeru. Čekal bych, že tam nebude. Zkus si vyprintovat $meno, jestli se ti dobře sestavuje.
llook
Profil
Přijde mi to celý nějaký zmatený, na první pohled mě upotala rovnítka v podmínkách. Takové if ($radek = 1) je platné vždy a za $radek se dosadí 1. Pro porovnávání je operátor == (dvě rovnítka), třeba if ($radek == 1). Že ty přecházíš na PHP z Pascalu?

To nenalezení souboru asi bude tím co psal Yuhů.
Fox
Profil
llok Jo přecházím s pascalu - měl sem atm už aj dvě rovnítka ale ono to stejně nešlo

No a co se týče té mezery asi to vude opravdu tím protože když tam ty názvy souborů místo vložení s proměnné dosadím "růčo" tak to jede...
Hugo
Profil
Tak zkus pouzit zapis
$meno=(Trim($radek).".txt");
Fox
Profil
už to mam
stčilo tam přidat
$radek=($radek/1)

prostě to do te promene hazelo mezeru
Fox
Profil
este mi prosim vas poardte jak udělat to opakování aby se zastavilo pokud $radek bude 0

děkuju pěkně


do {


IF($radek==0){echo("err");}
else{
$radek=($radek/1);
$meno=($radek.".txt");
$soubor = fopen($meno, "r");
echo("<p>");
echo(fread($soubor,500));
fclose($soubor);
echo("</p>");
$radek=($radek-1) ;
}
IF($radek==0){}
else{
$radek=($radek/1);
$meno=($radek.".txt");
$soubor = fopen($meno, "r");
echo("<p>");
echo(fread($soubor));
fclose($soubor);
echo("</p>");
$radek=($radek-1) ;
}
} while($radek==0);
llook
Profil
Možná by tady bylo vhodnější použít cyklus while místo cyklu do..while:

while ($radek != 0) { // dokud se řádek nerovná 0
...
}

Ale pokud jsem něco špatně pochopil a cyklus se má provést vždy aspoň jednou, pak:

do {
...
} while ($radek != 0);


While i do..while se prostě provádí tak dlouho, dokud podmínka ($radek se nerovná 0) platí.
Fox
Profil
počkat šak
!=
znamena nerovná se ne?

a to co je ve složenych zavorkach za podminkou se provadi dokud není pravdivá podmínky v závorce ne?
llook
Profil
jj, != znamená nerovná se. Lze použít i <>, jako v Pascalu nebo Basicu, ale většina lidí píše !=

viz Porovnávací operátory, do..while a while.
Fox
Profil
jo ale ja sem myslel že se while ukončí hned jak v kulaté zavorce nabude výraz pravdivosti... není pravda??
Takto by to zamenalo že se to ukončí hned jak se $radek nerovna nule ale ja potřebuju pravý opak - ja vypisuju soubory postupně od nejvyšší hodnoty až do nuly.
llook
Profil
Naopak, while se ukončí, když výraz nabude nepravdivosti.

Pokud v $radek bude cokoli jiného než nula, pak výraz ($radek != 0) je pravdivý - true. Jakmile je $radek nula, výraz je nepravdivý a cyklus skončí.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0