| Autor | Zpráva | ||
|---|---|---|---|
| MHavlik Profil * |
#1 · Zasláno: 24. 6. 2013, 12:13:18
Prosím o kontrolu souboru, nemohu přijít na to proč mě po změně nechce zpět soubor uložit, moc díky. Na ftp mám atributy 777:
if($odeslano == 'ano') {
for($i=0;$i<Count($data);$i++) {
$data[$i] = implode(';', $data[$i]);
}
$soubor = fopen('data.csv', 'w');
for($i=0;$i<Count($data);$i++) {
fwrite($soubor, $data[$i] . '
');
}
fclose($soubor);
}
echo('<form method="post">');
$radky = file('data.csv');
for($i=0;$i<Count($radky);$i++) {
$radek = explode(';', $radky[$i]);
echo('<nobr>');
for($j=0;$j<Count($radek);$j++) {
echo('<input type="text" name="data[' . $i . '][' . $j . ']" value="' . $radek[$j] . '" />');
}
echo('</nobr>');
echo('<br>');
}
echo('<input type="hidden" name="odeslano" value="ano" /><input type="submit" />');
echo('</form>'); |
||
| Taps Profil |
#2 · Zasláno: 24. 6. 2013, 12:27:55
MHavlik:
zkus <?
$soubor = fopen('data.csv', 'w');
for($i=0;$i<Count($data);$i++) {
$vystup.=$data[$i] ;
}
fwrite($soubor, $vystup);
fclose($soubor);
?> |
||
| MHavlik Profil * |
#3 · Zasláno: 24. 6. 2013, 12:59:17
Taps:
Díky za pomoc, ale zkusil jsme a porád nic, s tím souborem data.csv se nic nestane. Divné. |
||
| peta Profil |
Pokud jsi neco upravil, dej sem cely upraveny kod. Treba jsi to upravil na spatnem miste.
Program je tvuj? Pokud ne, pak $odeslano a $data nectes z $_POST, tudiz k zapisu nemuze nikdy dojit (jakoze, kdyz pod radek 1 das echo 'provadim zapis';, tak se ten text nikdy nezobrazi). Pokud program spusti vice uzivatelu naraz, diky nepouziti flock dojde ke smazani obsahu sourobu. --- Mi to po doplneni normalne funguje. function isRequest($name,$def='')
{
return isset($_POST[$name]) ? $_POST[$name] : $def;
}
$odeslano = isRequest('odeslano');
$data = isRequest('data'); |
||
| MHavlik Profil * |
#5 · Zasláno: 24. 6. 2013, 13:51:38
peta:
Kód jsem našel, potřebuji něco jednoduchého, aby 1 uživatel mohl opravit tabulku csv a uložit ji. Dost jsme hledal a toto vypadalo jako použitelné. Pokud hrozí jak píšeš jakýsi problém tak s tím asi nepohnu, neb moc PHP zdatný nejsem. Celý kód vypadá takto: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>Seznam</title>
</head>
<body>
<?php
if($odeslano == 'ano') {
for($i=0;$i<Count($data);$i++) {
$data[$i] = implode(';', $data[$i]);
}
/*
$soubor = fopen('data.csv', 'w');
for($i=0;$i<Count($data);$i++) {
fwrite($soubor, $data[$i] . '
');
}
fclose($soubor);
*/
$soubor = fopen('data.csv', 'w');
for($i=0;$i<Count($data);$i++) {
$vystup.=$data[$i];
}
fwrite($soubor, $vystup);
fclose($soubor);
}
echo('<form method="post">');
$radky = file('data.csv');
for($i=0;$i<Count($radky);$i++) {
$radek = explode(';', $radky[$i]);
echo('<nobr>');
for($j=0;$j<Count($radek);$j++) {
echo('<input type="text" name="data[' . $i . '][' . $j . ']" value="' . $radek[$j] . '" />');
}
echo('</nobr>');
echo('<br>');
}
echo('<input type="hidden" name="odeslano" value="ano" /><input type="submit" />');
echo('</form>');
?>
</body>
</html>Byl bych moc rád za pomoc, děkuji |
||
| Taps Profil |
#6 · Zasláno: 24. 6. 2013, 14:30:10
MHavlik:
co je v proměnné $data ? |
||
| MHavlik Profil * |
#7 · Zasláno: 24. 6. 2013, 14:41:42
Taps:
To nevím, nevkládá se tam to co se vyplní v tom formuláři ? Jak píši php neumím. V tom data.csv je pouze toto. a2;a3;c3 b2;b3;c3 c2;c3;c4 |
||
| Taps Profil |
#8 · Zasláno: 24. 6. 2013, 14:50:51
MHavlik:
zkus to takto if($odeslano == 'ano') {
for($i=0;$i<Count($_POST['data']);$i++) {
$data[$i] = implode(';', $_POST['data'][$i]);
} |
||
| MHavlik Profil * |
#9 · Zasláno: 24. 6. 2013, 15:06:33
Taps:
Nejde, proste zobrazi se formular se stavajicimi daty, zmenim neco a dam odeslat, problikne a opet se zobrazi puvodní data. |
||
| peta Profil |
Taps: [#4] peta "$odeslano a $data nectes z $_POST". Resis jen $data.
MHavlik: Aha, dobre napsat, ze to neni tvuj kod. pak tam na zacatek dopln, co sem tam poslal a zkus to. |
||
| MHavlik Profil * |
#11 · Zasláno: 24. 6. 2013, 15:15:24 · Upravil/a: MHavlik
peta:
Moc děkuji, použil jsme tuto funkci, nevím oc přesně to dělá, na začátku souboru a již to csv se mění. Díky. A to ošetření pokud by nastala situace, že bude ten 1 uživatel něco měnit a já se na ot podívám a tím se to vymaže, je to moc složité ošetření? Nebo mě napadlotuto stránku volat , at se tam ten 1 človek jakoby přihlásí, a tím by se to třeba ošetřilo. peta: Ješět jeden dotaz, nemohu přijít, zda je možnost ovlivnit šíři zobrazeného pole. |
||
| peta Profil |
Ano, flock (file lock) priklady v manualu.
Ano, o php si rikal, ze moc nevis, tak predpokladam, ze si prihlaseni uzivatele unikatne k souboru poresit neumis. Ano, viz Formuláře » input |
||
| MHav Profil |
#13 · Zasláno: 24. 6. 2013, 16:36:51
peta:
Díky za Ano :-), jdu zkoumat. Kdyby to moc nešlo, tak zkusim sem zase kus meho pokusu nahodit. Hezký den |
||
| MHavlik Profil * |
#14 · Zasláno: 26. 6. 2013, 09:52:34
peta:
Ahoj, mohu požádat o kontrolu? Nevím přesně, jak otestovat zda to funguje, objevilo se v tabulce text "Write somethink" ale jestli to znamená to zamčení to nevím, děkuji moc. Takto jsem to zkusil dodat: <?php
function isRequest($name,$def='')
{
return isset($_POST[$name]) ? $_POST[$name] : $def;
}
$odeslano = isRequest('odeslano');
$data = isRequest('titulka');
if($odeslano == 'ano') {
for($i=0;$i<Count($data);$i++) {
$data[$i] = implode(';', $data[$i]);
}
$soubor = fopen('titulka.csv', 'w');
flock($soubor,LOCK_EX);
for($i=0;$i<Count($data);$i++)
{
fwrite($soubor, $data[$i] . '');
}
flock($soubor,LOCK_UN);
fclose($soubor);
} |
||
| peta Profil |
#15 · Zasláno: 26. 6. 2013, 11:32:04
MHavlik:
Obvykle vychazim z kodu http://cz2.php.net/manual/fr/function.flock.php#84824 , kde se nejdriv pokusi se souborem pracovat a kdyz se mu to nezdari, zkusi to opet za nejaky cas a zkousi to po dobu nejaky cas. Pokud neziska k souboru pristup, ukonci se. Pokud ziska, zapise do nej a soubor odemkne. Je mozne, ze tu cast s casovanim tam mozna neni treba :) Na druhou stranu si myslim, ze kdyz flock vrati false (nepodarilo se soubor zamknout), a ty i presto spustis fwrite, tak je to totez, jako bys tam flock nemel, kdyz tam nemas zadnou podminku if. Nevim, co ti na tom zkontrolovat. Bud ti to funguje nebo nefunguje. Kdyz s tim bude problem, tak se prijdes zeptat, ne? :) Ja pouzivam na to databazi. |
||
| MHavlik Profil * |
#16 · Zasláno: 26. 6. 2013, 13:34:03
peta:
Díky za komentář, máš pravdu s tím , že to zapíše, tedy to nemám dobře ošetřeno, mysle ljsme , že ten flock bude fungovat tak, že pokud je otevřen jinde tak se soubor neotevře, ale zkusil jsme z jineho PC a otevře. Zkusím prozkoumat ten kód co jsi poslal , děkuji. |
||
| peta Profil |
#17 · Zasláno: 27. 6. 2013, 13:05:47
MHavlik: flock, kdyz je soubor zablokovany, tak neprovede jeho zablokovani. To je cele. Ale, ty to nijak nedetekujes a dalsim prikazem soubor otevres, at uz se flock podaril nebo ne.
|
||
|
Časová prodleva: 12 let
|
|||
0