Autor Zpráva
dragon124
Profil
Dobrý den,
Chtěl bych se zeptat, jak otevřít soubor, jehož jméno je v proměnné.
Například budu mít toto
$soubor
$otevri=fopen($soubor."txt","r");
Bohužel takto mi to nefunguje.
Prosím, poraďte, jak to mám vyřešit.
jenikkozak
Profil
dragon124:
Přiřaď proměnné $soubor nějakou hodnotu. A nezapomeň na tečku mezi názvem a příponou souboru.
123456
Profil *
$soubor
$otevri=fopen($soubor."txt","r");

$soubor = "example";
$otevri=fopen("example"."txt","r");

$otevri teda otvorí "exampletxt" (bez bodky pred txt)

$soubor = "example.";
$otevri=fopen("example."."txt","r");

$otevri teda otvorí "example.txt" (s bodkou pred txt)
user243
Profil
nešlo by napsat ty poznámky jako poznámky?
dragon124
Profil
Už alespoň vím v čem je problém. Já to mám udělané jako funkci a tudíž musím dát vztup.

$promenna="ahoj";
function otevri(&ahoj){
$open = fopen($promenna.".txt","r");
}
otevri($ahoj)
Bohužel, ani takto mi to nefunguje. V mém programu ještě proměnná je pole, ale netuším, jak to tam dostat, pokouší se mi to otevřít soubor .txt.
Prosím, poraďte co s tím...
user243
Profil
celá ta funkce mi přijde divná/nedodělaná;
není tam, že by jsi nějaký řádek četl, vypsal ho, vrátil pomocí return, natož ten otevřený soubor zase zavřel;
mícháš lokální a globální proměnné, některé si dokonce cucáš z prstu, řekni mi, jak má php vědět, co si představuješ pod

dragon124:
otevri($ahoj)
+ na konci chybí středník;

soubor .txt
možná je jen překlep při opisování, ale mezi jménem souboru a příponou je jasně vidět mezera;
Giga
Profil
dragon124:
$promenna="ahoj";
function otevri(&ahoj){
$open = fopen($promenna.".txt","r");
}
otevri($ahoj)

takže čo sa tu deje:
$promenna="ahoj";
do $promenna si priradil "ahoj"

function otevri(&ahoj){
deklarujes funkciu otevri s parametrom $ahoj

$open = fopen($promenna.".txt","r");
telo funkcie otvára súbor s názvom, uloženým v globálnej premnnej $promenna s príponou .txt

}
Unkočuješ funkciu

otevri($ahoj)
Voláš funkciu s nedeklarovanou premnnou $ahoj.

to nemôže fungovať
peta
Profil
$promenna="ahoj";        // uloz text 'ahoj' do promenne $promenna
function otevri(&ahoj){   // definuj funkci 'otevri', ktere je predavana konstanta 'ahoj' bez duplikovani hodnoty
$open = fopen($promenna.".txt","r"); //otevri soubor do promenne $open, nazev souboru je $promenna.".txt", $promenna je undefined, takze konecny nazev souboru je ".txt"
}
otevri($ahoj)                // spust funkci otevri a predej ji obsah promenne $ahoj, ale $ahoj nemas definovan, takze funkci predavas 'undefined'. A navic ti tam schazi strednik

Otazky:
Proc v definici funkce mas & ? Ja bych tam ocekaval $.
Proc mas ve funkci $promenna, kdyz ji nemas pripojenou pres global? Ja bych tam ocekaval $ahoj.
Proc prirazujes otevreni souboru do promene $open, kdyz ji nikde dal nepouzivas?
Proc na poslednim radku volas funkci a predavas ji promennou $ahoj, kdyz takova promenna v globalni urovni neexistuje? ja bych tam ocekaval $promenna.
Proc delas na otevirani souboru funkci? Ceho chces docilit? Kdyz naplnis $open a $open nevytahnes z funkce, tak se tato promenna ztrati a vysledkem te funkce nic nebude.
Kde mas fclose?
Proc si nenajdes priklady v dokumentaci na fopen (mozna lepe fread nebo fwrite) a neokopirujes nejaky z nich?
Nehledas spis funkci file_get_contents()?

Takze spravne by to melo byt asi takto:
$AAA = "ahoj";
function otevri($bbb){
$open = fopen($bbb.".txt","r");
fclose($open);
}
otevri($AAA);

fopen - pripoj z disku soubor do php objektu soubor
fread - nacti data z objektu soubor
fwrite - zapis data do objektu soubor
fclose - odpoj soubor od php objektu soubor
Fopen tedy umozni php pracovat se souborem, ale zadna data jeste nenacte. Otevreni ve wordu znamena, ze se pripoji k souboru na disku a nacte data. ... Ja jen pro pochopeni, ze mi to treba chvili trvalo, nez jsem to pochopil a ocekaval jsem od fopen, ze mi to vrati hned data jako to dela file_get_contents.
dragon124
Profil
Děkuji,
Omlouvám se, v otázce bylo zpousty chyb, nebyl to můj program, ale jen příklad pro nastínění problému.
Děkuji...
Peta - ano, všechny otázky jsou správně, pouze chyby, příštš budu dávat větší pozor...
Problém je, že ale používám pole a mám problém k němu přistupovat přes GLOBALS

//začátek kódu s deklarací pole
...
function(){
echo $Globals["pole[a][b]"];
}
toto ale samozřejmě nemůže fungovat. Globálně musím přistupovat i k "a" a "b"... Jak to mám řešit? mám pole nějak zkopírovat (de to i jinak než hodnotu po hodnotě ve while?) nebo je nějaký jiný lepší trik?
jenikkozak
Profil
dragon124:
Jak to mám řešit?
Nejpřehlednější řešení bude použití toho pole jako argumentu funkce.
peta
Profil
dragon124:
To je zas jakysi neotestovany kus kod. Ma smysl na takovy dotaz reagovat, kdyz to budu museat zas dopsat? Proc nenapises konkretni problemovy kod, at se nemusime bavit o fikci? scifi a fantasy, treba kdyz chvili pockam s odpovedi, jeste prileti batman na drakovi :)

<?php
$pole = array(array(7,8,9));

function aaa()
{
global $pole;
$a = 0;
$b = 1;
echo $pole[$a][$b];
}
aaa(); // vypise to cislo 8
?>
To zvyraznene je to, co jsem nemusel dopisovat.
SeparateSK
Profil
Pre otváranie súboru:
function otvor($meno,&$handle){
    $handle=fopen($meno,"r");
}
$handle=NULL; //treba definovat ako premennu - totiz funkcia potrebuje referenciu na nu
otvor("subor.txt",$handle);
//... fgets($handle); ... fclose($handle);
Inak ako ste si asi nevšimli, mal tam: "&ahoj" - nie "$ahoj" - malo to byť "&$ahoj"

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: