Autor Zpráva
MHavlik
Profil *
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
MHavlik:
zkus
<?
$soubor = fopen('data.csv', 'w');
 for($i=0;$i<Count($data);$i++) {
  $vystup.=$data[$i]  ;
}
  fwrite($soubor, $vystup);
   fclose($soubor);
?>
MHavlik
Profil *
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 *
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
MHavlik:
co je v proměnné $data ?
MHavlik
Profil *
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
MHavlik:
zkus to takto
if($odeslano == 'ano') {
  for($i=0;$i<Count($_POST['data']);$i++) {
    $data[$i] = implode(';', $_POST['data'][$i]);
  }  
MHavlik
Profil *
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 *
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
peta:
Díky za Ano :-), jdu zkoumat. Kdyby to moc nešlo, tak zkusim sem zase kus meho pokusu nahodit. Hezký den
MHavlik
Profil *
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
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 *
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
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.

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: