Autor Zpráva
vodys
Profil *
Dobrý den, válčím s problémem, na který jsem zde našel mnoho řešení, ale jen těžko říct či se dá nějaké použít.
Pokud se zde poflakuje někdo, kdo se vážně nudí a je ochotný, potřebuji vypsat z formuláře data do souboru.

mám formulář:
  <form>
    <input type="text" name="jmeno-prijmeni" placeholder="Jméno a Přijímení" requied/>
    <input type="text" name="ico" placeholder="IČO" requied/>
    <input type="text" name="nazev-salonu" placeholder="Název salonu" requied/>
    <input type="text" name="adresa-salonu" placeholder="Adresa salonu" requied/>
    <input type="text" name="email" placeholder="Emailová adresa" requied/>
    <input type="text" name="mobil" placeholder="Mobilní číslo" requied/>
    <input type="submit" value="ODESLAT" />
  </form>

Při odeslání potřebuji, aby se do externího souboru, řekněme "klienti.php" zapisovala veškerá data popořadě řekněme v tabulce.
Při každém odeslání aby se přidala další data na další řádek, ale nesmí být duplicitní. K tomu všemu by bylo vhodné vypisovat i IP adresu.

Díky všem za pomoc!
Keeehi
Profil
Pokud chceš zajistit neduplicitu, doporučuji použít databázi. Bude to mnohem jednodušší.
Ukládání dat z formuláře není žádná těžká úloha. Pokud budeš mít problém s něčím konkrétním, určitě se tu najde někdo kdo kdo ti pomůže, ale opravdu bych nečekal, ze to někdo bude dělat celé za tebe.
lionel messi
Profil
vodys:
Okrem toho, že súhlasím s Keeehim (predovšetkým ohľadne duplicít), ešte dodám pár rád.

1. Premenné z formulára nájdeš v superglobálnom poli s kľúčom podľa hodnoty atribútu name pre príslušný formulárový prvok, napr. $_GET["jmeno-prijmeni"]. Na začiatku by som však odporúčal overiť, či boli premenné zadané pomocou jednoduchej podmienky: if (isset($_GET["jmeno-prijmeni], $_GET["ico"])) atď.
2. Na zápis do súboru sa bude hodiť predovšetkým funkcia file_put_contents, odporúčam použiť druhý parameter funkcie FILE_APPEND (zaistí pripísanie zadaného obsahu k pôvodnému namiesto prepísania).
3. Odporúčam jednotlivé hodnoty nepísať do tabuľky, ale vstupy pospájať do jedného reťazca a oddeliť napr. pomocou mriežky, vlnovky či zvislítka. Samozrejme by malo platiť nový užívateľ = nový riadok. To zaistí konštanta PHP_EOL.
4. IP adresu zistíš ľahko pomocou $_SERVER["REMOTE_ADDR"].
vodys
Profil *
Díky za pomoc, ještě však potřebuji vypsat datum odeslání, jaká je na to proměnná?
Dan Charousek
Profil
vodys:
http://php.net/manual/en/function.date.php
Dle dokumentace si můžeš výsledné datum naformátovat jak chceš. V našich formátech by to mohlo být Date("d. m. Y");
vodys
Profil *
Jak to ale zakomponovat do zapisovací proměnné?
$savestring = "<td width='150'>" . $jmeno . "</td><td>" . $ico . "</td><td>" . $salon . "</td><td>" . $adresa . "</td><td>" . $email . "</td><td>" . $mobil . "</td><td>" . $_SERVER["REMOTE_ADDR"].  "</td><td><a href='#'><font color='red'>Neaktivní</font></a></td></tr><tr>";
lionel messi
Profil
vodys:
$datum = date("d. m. Y");
$savestring = "<td width='150'>" . $jmeno . "</td><td>" . $ico . "</td><td>" . $salon . "</td><td>" . $adresa . "</td><td>" . $email . "</td><td>" . $mobil . "</td><td>" . $_SERVER["REMOTE_ADDR"].  "</td><td>" . $datum . "</td><td><a href='#'><font color='red'>Neaktivní</font></a></td></tr><tr>";

Len podotknem, že miešať v kóde české názvy premenných s anglickým nie je najlepší návyk a zvyčajne býva vhodné držať sa jedného jazyka.
vodys
Profil *
Dále ohledně podmínek formuláře, jak zajistit aby určitá pole měla svá pravidla?
¨<form method="post" action="poslat.php">
    <input type="text" name="jmeno-prijmeni" placeholder="*Jméno a Přijímení" required>
    <input type="text" name="ico" maxlength="8" placeholder="*IČO" required>
    <input type="text" name="nazev-salonu" placeholder="*Název salonu" required>
    <input type="text" name="adresa-salonu" placeholder="*Adresa salonu" required>
    <input type="text" name="email" placeholder="*Emailová adresa" required>
    <input type="text" name="mobil" placeholder="*Mobilní číslo" required>
    <input type="submit" value="ODESLAT" />
  </form>

Aby do pole IČO bylo možné vepsat jen 8 čísel, v emailu byl požadován @ a v mobilu 9 čísel? Díky
lionel messi
Profil
vodys:
Aby do pole IČO bylo možné vepsat jen 8 čísel, v emailu byl požadován @ a v mobilu 9 čísel?
Najlepšie pomocou tzv. regulárnych výrazov. Na zistenie, či sa zavináč nachádza v reťazci bude ale stačiť aj strpos (nemusíš rozlišovať medzi vrátením false v prípade neúspechu a 0 v prípade zhody na začiatku reťazca, pretože ani jedno určite platný e-mail nie je).

Čo sa týka regulárov, bude potrebné použiť funkciu preg_match a samotný regulár by vyzeral napr. pre 8 čísel:
~\d{8}~

Treba si však uvedomiť, že veľa užívateľov oddeľuje napr. telefónne číslo po troch číslach medzerou, píše predvoľbu +420 a podobne.

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: