Autor | Zpráva | ||
---|---|---|---|
Coompiik Profil |
#1 · Zasláno: 20. 11. 2013, 16:01:29
Dobrý den,
Chtěl bych vytvořit dotazník(hádám že php) který po vyplnění zapíše napsaná data do nějakého souboru na webu nebo v databázi(na webu bych radši) popř. vygeneruje nový, vím že to de třeba přes Disk Google a podob. ale chtěl bych si vytvořit vlastní, kde si můžu upravovat vzhled a podob. Prostě zkrátka udělám si inputovej formulář kterej bude odkazovat na zpracuj.php , tam bude kód kterej zapíše do nějakýho souboru to co uživatel vyplnil, hledal sem to na internetu prolít sem 30 prvních stránek i tohle fórum sem prosvištěl ale tohle sem nikde neviděl, poradíte my prosím kde to najdu popř mi ten kód napíšete? budu moc rád za obojí -- S pozdravem Coompiik |
||
Marschmallow Profil |
#2 · Zasláno: 20. 11. 2013, 16:04:59
Coompiik:
A chtěl by jsi, aby se to ukázalo i ostatním? Nebo, aby ti to přišlo do mailu? Nebo aby se to ukládalo do nějakého souboru nebo do DB? |
||
Coompiik Profil |
#3 · Zasláno: 20. 11. 2013, 16:20:40
Marschmallow:
Do jakéhokoli souboru, soubor se může menovat třeba 854948646748746467464.php to je jedno, prostě ten kdo bude znát název ten ho otevře, s databází moc neumim, blbě se mi pak dostávala k tomu co lidi napsali, databázi používám zatim jen na napojení různých pluginů a webshopů(minecraft), ale hned jak se naučim php(což mi dost dlouho potrvá) kouknu na databázi. Děkuju za reakci. Coompiik |
||
Coompiik Profil |
#4 · Zasláno: 22. 11. 2013, 17:28:10
Tak sem rpjel JPW, google a spoustu dalších stránek ale furt jen že mě to hodí na stránku atd... fakt už si nevim rady
|
||
Kubo2 Profil |
Coompiik:
„ale hned jak se naučim php(což mi dost dlouho potrvá) kouknu na databázi“ Skús potom mrknúť na našu učebnicu PHP. K tomu dotazníku (PHP Manuál - Anglicky): – Superglobálne premenné, teba budú zaujímať polia $_GET a $_POST. – Práca so súbormi (hlavne file_put_contents a občas sa ti zíde aj file_get_contents) a databázami (v aktuálnom kontexte hovorím o MySQL) v PHP. – Na vygenerovanie náhodného názvu súboru ti zatiaľ postačí toto: <?php $nahodnyNazovSuboru = base64_encode(md5(time())); – Ešte odporúčam naštudovať si podmienky a operátory. Prajem príjemný večer, veľa zábavy a zápalu v učení! :-) „I'm sure, that you'll enjoy PHP language in its full range!“ |
||
Coompiik Profil |
#6 · Zasláno: 22. 11. 2013, 21:35:50
Kubo2:
Díky, kouknu na to, zejtra sobota celej den budu šprtat, víc neš matiku děják atd, ale ještě bych se chtěl zeptat na ten náhodnej soubor, já myslel jeden soubor se jménem cojávim 1js7f8f7r5.php kam se budou všechny ty vyplněný a odeslaný údaje zapisovat a ten kdo bude znát ten soubor(hádám že málo kdo by jentak skoušel napsat www.cz/448ddfd84.php) si normálně přečte co lidi napsaly, prostě se data napíšou do <table>. Děkuji moc za pomoc, a du šprtat. |
||
Coompiik Profil |
#7 · Zasláno: 22. 11. 2013, 22:52:44 · Upravil/a: Coompiik
Kubo2:
Koukl sem na to, echo include mi de to už sem si testnul na http://coompiik.jecool.net/chat ale get atd tam nikde nevidim. ale kouknu na ot na jinejch strankach např kdyš napíšeš cokoly z php tak se ti tam hodi odkaz, takze zadnej problem. Ale na tom pehápku je to krásně popsaný pochopil sem ot napoprvý. |
||
Coompiik Profil |
Tak sem si nekde vyhledal to get, jakštakš sem to pochopil ,skuil sem to, už to fachá, a jak sem proklíkával ty linyk co si mi poslal tak u toho file_put_contents sem trošku poupravil to první, napadlo mě jestli kdyš
<?php $file = 'people.txt'; // Open the file to get existing content $current = file_get_contents($file); // Append a new person to the file $current .= "John Smith\n"; // Write the contents back to the file file_put_contents($file, $current); ?> file_put_contents($file, $current); dal misto $current $udaj1 $udaj2 atd ktery se zjistej pres get, skusim to a pak napisu, dik za pomoc moc si mi pomohl.
Update: Napsal sem to blbe, myslel sem file_put_contents($file, $udaj1, $udaj2); Hmm.... tak <?php if(isset($_GET['send'])) { $udaj1 = $_GET['udaj1']; $udaj2 = $_GET['udaj2']; $udaj3 = $_GET['udaj3']; $udaj4 = $_GET['udaj4']; $udaj5 = $_GET['udaj5']; $file = 'j4fs7de4sa.txt'; // Open the file to get existing content $current = file_get_contents($file); // Append a new person to the file $current .= "John Smith\n"; // Write the contents back to the file file_put_contents($file, $current, $udaj1, $udaj2, $udaj3, $udaj4, &udaj5); ?> |
||
Coompiik Profil |
#9 · Zasláno: 23. 11. 2013, 12:10:28
Coompiik:
Teď si tak všímám nezbarvenýho udaj5, neni to tim? |
||
Davex Profil |
Coompiik:
„Teď si tak všímám nezbarvenýho udaj5, neni to tim?“ Částečně je to tím. Proměnné začínají znakem dolar a ne ampersand. Když si klikneš na podtrženou funkci file_put_contents, tak se dostaneš na dokumentaci PHP, kde je napsané, jaké parametry tato fukce má a k čemu slouží. Po vymyšlení dalších parametrů to fungovat nebude. Všechny ukládané údaje se musí spojit do jednoho parametru operátorem pro spojování řetězců. |
||
Coompiik Profil |
#11 · Zasláno: 23. 11. 2013, 13:41:45
Davex:
Ajo překlepl sem se, a pochopil sme teda nějak že to co sem napsal je úplná blbost, a z operátora na JPW že by mohlo fachčit $current .= $udaj1 + $udaj2 + $udaj3 + $udaj4 + $udaj5; chápu dobře?
|
||
Kubo2 Profil |
Coompiik:
„mi nevišlo...“ To preto, že funkcia file_put_contents je definovaná asi takto: function file_put_contents($filename, $data, $flags = 0, $context = null) { ... } $data do súboru s názvom $filename (Samotný zápis a správanie funkcie ďalej ovplyvňujú $flags a $context .)
Z predchodzieho teda môžeš súdiť, že ak napíšeš file_put_contents($file, $current, $udaj1, $udaj2, $udaj3, ...) , tak to zapíše $current do $file , a $udaj1 a $udaj2 sa budú brať ako flags a context. Ostatné argumenty budú ignorované + volanie skončí nejakou hláškou, predpokladám, že varovaním.
Osobne by som ti ten skript napísal takto jednoducho: <?php if (isset($_GET["send"])) { $udaje = ""; for ($i = 1; $i <= 5; $i = $i + 1) { // prípadne namiesto $i = $i+1 použi $i++, je to kratšie $udaje .= !empty($udaje) ? "\n" : ''; if (!isset($_GET["udaj" . $i]) || (empty($_GET["udaj" . $i]) && intval($_GET["udaj" . $i]) !== 0)) { $udaje .= "--"; continue; } $udaje .= $_GET["udaj" . $i] } } ht>tp://www.example.com/subor.php?send&udaj1=hodnota%20udaju&udaj2=Kubo2&udaj3=DJPW&udaj5=Davex Po vypísaní $udaje by ti mal vzniknúť takýto list:
hodnota udaju Kubo2 DJPW -- Davex Edit: Aha, všimol som si Davexov príspevok, takže len pre info [#10]. Coompiik: „chápu dobře?“ Nerozmýšľam<joke>, kde mám hlavu?</joke>. Všimni si, že operátor + slúži na operáciu sčítavanie čísiel, zakiaľ operátor . na spájanie reťazcov.
To, čo si urobil by skončilo chybovou poznámkou kvôli nedefinovanej premennej. Správne teda takto: $current = $udaj1 . $udaj2 . $udaj3 . $udaj4 . $udaj5; |
||
Časová prodleva: 3 dny
|
|||
Coompiik Profil |
Kubo2:
Tak sem skusil to tvoje, akorat na konec sem pridal jeste na radek 13 vlozil ?> a nejde mi to, a napada me ze sme tam nikde nenasel zadn text kam se to ma ulozit.
A ještě mě napadá, co kdybych těch údajů chtěl víc, např. 15, šlo by to taky tak? |
||
Kubo2 Profil |
#14 · Zasláno: 26. 11. 2013, 21:54:18
Coompiik:
Samozrejme. Ale takto to spájať manuálne je príliš pracné, skôr by som použil pole a prechádzal ho cyklom (napr. foreach), ale ak ešte do toho nechceš ťahať polia, tak stačí použiť cyklus, asi takto: <?php // … for($i = 1; $i <= 15; $i++) { $udaje .= ${"udaj" . ((string)$i)}; } |
||
Kubo2 Profil |
#15 · Zasláno: 27. 11. 2013, 00:27:56
Teraz som si celé vlákno prešiel ešte raz a všimol som si môjho príspevku [#12], prečítaj si kód, čo je v ňom, stane sa univerzálnym, keď v gulatých zátvorkách zameníš
for($i = 1; $i <= 5; $i++) { … } for($i = 1; isset($_GET["udaj$i"]) || isset($_GET["udaj" . (++$i)]); $i++) { … } $udaje už nebude zaradený (každý člen postupnosti reprezentuje postfix jednej GET premennej - napr. v udaj3 znak 3 je postfix).
Pýtal si sa, prečo ti skript nezapisuje do súboru. Správne si poznamenal, že tam nie je kód, ktorý by túto operáciu vykonával, tak ho teraz pridáme. <?php // do premennej si uložíme anonymnú funkciu // vygeneruje názov súboru, overí či už neexistuje // vytvorí ho a zapíše do neho dáta (ako text/plain, bohužiaľ, píšem z mobilu) $ukladacDat = function($udajePreZapis) { static $generatorRetazcov = function($jedenZnak = false) { $rnd_str = base64_encode(md5(time())); return !$jedenZnak ? $rnd_str : $rnd_str[rand(0, strlen($rnd_str)-1)]; } $fname = __DIR__ . "/adresarSoSubormi/" . $generatorRetazcov(); while(file_exists($fname . ".dat")) { $fname .= $generatorRetazcov(true); } // vytvorit súbor @touch($fname); return (boolean)file_put_contents($fname, $udajePreZapis); }; // sem hoď ten kód z [#12], ale uprav ho tak, // ako som ti to vysvetlil tu // ... // a nakoniec dáta uložíme if(!$ukladacDat($udaje)) { // spracuj chybu } else exit; adresarSoSubormi (pred spustenim skriptu ho samozrejme musíš najprv vytvoriť ako priamy podadresár adresára, v ktorom spúšťaš script), môže sa ti hodiť funkcia glob() (v živote som ju nepoužil, takže neviem ako funguje, ale tebe by sa v tomto ohľade mohla hodiť).
Keď opäť zavítaš na DJPW, pošli spätnú väzbu a prípadne ti to v maili aj dopodrobna vysvetlím (ten kód), ak by si mal záujem. |
||
Coompiik Profil |
#16 · Zasláno: 27. 11. 2013, 11:11:48
Kubo2:
Dík moc, ale šlo by jak už sem psal nahoře udělat aby se to všechno psalu do souboru do <table>? jmeno soub oru bude třreba fd587gfss.php to je mi uplne jedno, ale aby se to vsechno zapisovalo donej, abych si ho ulozil do zalozek a moh to prohlizet z webu, nemyslim ze by nekdo jen tak uz nudy vyskousel vsechny mozny kombinacer nahodnej cisel a pismen a dostal se k tomu souboru, kazdopadne kdys jo, tak mi to ani tak neva, nebudu po nich chtit hesla ani nic podobnyho, kazdopadne dik, moc i tohle se hodi a na ten glob() se doma určitě podívam, sem ve škole, tady je většiná stránek bloklejch takže se divim že tu fachčí DJPW. Dik moc fakt si mi hodne pomoh.¨ A řešit to na mailu taky není špatnej nápad, můj mail: coompiik@gmail.com |
||
Kubo2 Profil |
Coompiik:
To nestojí za reč, ani vlastne neviem, či si toľko vďaky naozaj zaslúžim :-) Ja som tiež v škole, ale na večer, keď sa zase dostanem na PC, tak ti môžem poradiť vo väčšom rozsahu. Ohľadom toho mailu, to som myslel tak, že informácie, ktoré by mohli byť nápomocné aj iným, napíšeme sem, aby boli ľahko dohľadateľné, a rozsiahle vysvetľujúce texty, ktoré DJPW nepožerie, pretože by pravdepodobne presahovali maximálny rozsah príspevku Ale poďme k veci. Samozrejme, že to pôjde zapisovať aj do tabuľky, a to hneď niekoľkými spôsobmi - predpokladám však, že to bude oveľa zložitejšie, ako keby si si tie súbory načítal cez PHP, parsoval ich a vytváral z nich tabuľku. Ak ale naozaj chceš, môžem ti načrtnúť, ako asi sa to dá do tej tabuľky zapisovať - <(mimochodom)>potrebuješ to na nejakú rozsiahlu štatistiku alebo také niečo?</$1> |
||
Coompiik Profil |
#18 · Zasláno: 27. 11. 2013, 17:30:54
Kubo2:
Potřebuju to hned na tři věci: Na takovej menší changelog do soukromí webovky pro 10 členů kterej budu jednou tejdě promazávat, Pak v podstatě to stejný na jinou webkovku, akorát to už by byl takovej chat nebo jak to mam říct, promazávat to budu taky jednou tejdě, soukromej web cca 25 členů A pak dotazník na web, moc lidí nepíše cca 1 příspěvek tejdně, promazával bych každej zkontrolovanej. Předem dík moc, a ano zaslouží, každej kdo pomáhá nováčkům si to zaslouží ;) |
||
Časová prodleva: 10 let
|
0