| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 16.03.13 Prihlásený: 16.08.16 Príspevky: 28 Témy: 8 | Napísal DenyEs: 17.02.2015 16:02 | |
|
Zdravím, potreboval by som pomoc pri úlohe. Moja téma je sklad a podmienka je robiť to len cez textové súbory, nie cez databázu, Bohužiaľ také sú pravidlá. Popravde už neviem čo mám robiť Dokážem dostať údaje do súboru aj ich vypísať to je to najmenej. Lenže môže nastať situácia, že budem mať 2 rovnaké veci a rozdielny počet kusov. Teraz je to tak, že sa to vypíše pod seba a to nechcem. Potrebujem nejako urobiť aby to nebolo dvakrát ale len raz a kusy sa spočítali. Ďakujem za pomoc Tu sú zdrojové kódy, veci ako hlavičku a pätu som tam nedával je to len detail. Editácia - vkladanie údajov Kód: <?php require_once('header.php'); ?>
<div id="content">
<form action="spracuj.php" method="POST"> <table> <tr> <td> Názov tovaru </td> <td> <input type="text" name="nazov_tovaru"> </td> </tr> <tr> <td> Počet kusov </td> <td> <input type="text" name="pocet_kusov"> </td> </tr> <tr> <td></td> <td> <input type="submit" name="odoslat" value="Odoslať"> </td> </tr> </table> </form>
</div>
<?php require_once('footer.php'); ?>
Spracovanie údajov Kód: <?php require_once('header.php'); ?>
<div id="content"> <?php if (isset($_POST['odoslat'])) {
$file = fopen('sklad.txt', 'a') OR exit('Problém so súborom!');
$nazov_tovaru = $_POST['nazov_tovaru']; $pocet_kusov = $_POST['pocet_kusov'];
fwrite($file, $nazov_tovaru . " " . "|" . " " . $pocet_kusov . "\r\n"); fclose($file); } ?>
</div>
<?php require_once('footer.php'); ?>
Vypísanie údajov Kód: <?php require_once('header.php'); ?>
<div id="content"> <?php
$data = file('sklad.txt');
for ($i=0; $i < count($data); $i++) { echo $data[$i] . "<br>"; }
?> </div>
<?php require_once('footer.php'); ?>
_________________ HP ProBook 450 G1, CPU Intel Core i5 2,5 GHz Turbo Boost 3,1 GHz, Ram 4GB, GPU AMD Radeon HD 8750M 2GB, HDD 1TB Win 8.1, Ubuntu 14.04 LG G2 Black 16GB Cloudy G3 2.2 |
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 17.02.2015 16:14 | |
|
No pri vkladaní musíš overiť, či sa riadok s takým [c]názvom tovaru[/c] už v súbore nachádza. Ako? Cyklus, podobne ako pri výpise. Ak sa taký riadok nenájde, pridáš nový záznam na koniec súboru, ako to máš teraz. Ak sa nájde, nahradíš [c]počet kusov[/c] v danom riadku ( kopec možností podľa nárokov a zručností) za súčet starého a nového počtu. Inak to, ako to máš teraz napísané je to celkom deravé - možno by nebolo od veci aspoň trochu tie vstupy validovať.
_________________ always is always wrong |
|
Registrovaný: 16.03.13 Prihlásený: 16.08.16 Príspevky: 28 Témy: 8 | Napísal autor témy DenyEs: 17.02.2015 16:22 | |
|
Jasne validované to bude ja to vždy robím až na koniec najprv celkovú štruktúru a potom vychytávam tie detaily. No uvidím či sa mi to podarí inak ďakujem zatiaľ za navedenie na správnu cestu
_________________ HP ProBook 450 G1, CPU Intel Core i5 2,5 GHz Turbo Boost 3,1 GHz, Ram 4GB, GPU AMD Radeon HD 8750M 2GB, HDD 1TB Win 8.1, Ubuntu 14.04 LG G2 Black 16GB Cloudy G3 2.2 |
|
Registrovaný: 16.03.13 Prihlásený: 16.08.16 Príspevky: 28 Témy: 8 | Napísal autor témy DenyEs: 19.02.2015 19:17 | |
|
Ako som skúšal tak som skúšal no nejde to :/ nedokážem napísať kód, ktorý porovná výstup z formulára s obsahom v textovom súbore. Nechápem bežne zvládam zložitejšie veci ale toto ma úplne stoplo.
_________________ HP ProBook 450 G1, CPU Intel Core i5 2,5 GHz Turbo Boost 3,1 GHz, Ram 4GB, GPU AMD Radeon HD 8750M 2GB, HDD 1TB Win 8.1, Ubuntu 14.04 LG G2 Black 16GB Cloudy G3 2.2 |
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 19.02.2015 19:22 | |
|
Skús problém rozmeniť na drobné - pretože takto vôbec netuším, v čom je problém. - Vieš napísať kód, ktorý ti obsah súboru rozdelí po riadkoch napríklad do poľa?
- Kód ktorý z odoslaného formulára získa obsah jednotlivých vstupov hádam zvládneš.
- Vieš napísať kód, ktorý nahradí v riadku súboru jednu časť reťazca, napríklad s použitím regulárneho výrazu?
- Kód na pridanie nového riadku do súboru už máš.
_________________ always is always wrong |
|
Registrovaný: 16.03.13 Prihlásený: 16.08.16 Príspevky: 28 Témy: 8 | Napísal autor témy DenyEs: 19.02.2015 19:27 | |
|
Problém je ten, že nedokážem porovnať vstup z formulára s obsahom v textovom súbore. Neviem ako to mám urobiť. 1. Bohužial neviem 2.Ano to viem 3.Nie neviem 4.Ano viem
_________________ HP ProBook 450 G1, CPU Intel Core i5 2,5 GHz Turbo Boost 3,1 GHz, Ram 4GB, GPU AMD Radeon HD 8750M 2GB, HDD 1TB Win 8.1, Ubuntu 14.04 LG G2 Black 16GB Cloudy G3 2.2 |
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 19.02.2015 19:43 | |
|
1. http://php.net/manual/en/function.file.php2. sláva 3. riešil by som to nejako takto: http://stackoverflow.com/a/18992125 môžeš sa skúsiť inšpirovať. Určite niekde existujú krajšie a elegantnejšie riešenia, ale osobne považujem pri php ukladanie 'tabuľkových' dát niekam do súboru za celkom zbytočné, keď v normálnej situácií máš databázu, ktorá ti toto všetko zastrešuje a ešte aj kopec vecí uľahčí. Treba si len všimnúť, že najprv celý súbor načítaš pomocou (v prvom bode spomenutej) funkcie [c]file()[/c] do poľa (môžeš použiť ešte FILE_SKIP_EMPTY_LINES flag pre prípadné preskočenie prázdnych riadkov, viz. dokumentácia) a potom "riadok po riadku" prechádzaš pole foreach cyklom. Dôležité je správne upraviť funkciu [c]substr()[/c] a namiesto '2_' v porovnaní bude vstup z formulára (ošetrený!!!). Nakoniec už len snáď že [c]file_put_contents()[/c] prepisuje celý obsah súboru, preto ak sa nenájde v riadku (prvku poľa) zhoda s reťazcom zadaným z formuláru, aj nedotknuté riadky sa musia prepísať. To pri veľkých súboroch môže trvať celkom dlho a zabrať hromadu pamäte. Ešte snáď poznámka na záver: Zápis do súboru v tomto prípade nie je atomický. To znamená, že ak jeden proces php bude súbor čítať a zároveň iný ho prepíše, nastane katastrofa. 4. sláva^2
_________________ always is always wrong |
|
Registrovaný: 16.03.13 Prihlásený: 16.08.16 Príspevky: 28 Témy: 8 | Napísal autor témy DenyEs: 19.02.2015 20:19 | |
|
Chápem to a pravdepodobne to nebudem komplikovať ešte viac nechám tam to uloženie a výpis zo súboru. Viem že cez databázu je to stokrát jednoduchšie, lepšie a bezpečnejšie a keby som mohol tak to cez to už dávno robím ale zadanie je používať súbory, nie databázu. Učíme sa to v škole ja už databázy ovládať viem, lenže zbytok triedy nie a bolo by to nefér Tak ďakujem veľmi pekne za pomoc
_________________ HP ProBook 450 G1, CPU Intel Core i5 2,5 GHz Turbo Boost 3,1 GHz, Ram 4GB, GPU AMD Radeon HD 8750M 2GB, HDD 1TB Win 8.1, Ubuntu 14.04 LG G2 Black 16GB Cloudy G3 2.2 |
|
Registrovaný: 28.02.11 Prihlásený: 07.03.24 Príspevky: 196 Témy: 6 Bydlisko: Bratislava | Napísal weroro: 19.02.2015 20:57 | |
|
Ono ešte je možnosť použiť iný formát toho súboru. Ja by som asi zvolil INI file a v PHP je priamo funkcia parse_ini_file() a tá ti z toho súboru urobí prehľadné asociatívne pole, v ktorom sa dá vyhľadávať.
_________________ Neznalosť zložitých operácií necháva myseľ otvorenú pre geniálne riešenia založené na jednoduchosti. |
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 19.02.2015 22:35 | |
|
regexp-y su mega overkill na takuto ulohu.. cela pointa je zapisat asociativne pole do suboru, netreba robit search & replace, also, ked uz chceme pouzivat nejaky standardizovany format, tak preco ini, ku ktoremu sice existuje v php funkcia ktora ho cita do assoc array-u ale nie funkcia, ktora zapise asociativne pole ako ini subor? narozdiel od napr. json-u?
ale takato jednoducha funkcia sa da naprogramovat aj bez toho, aby clovek tusil co je to json, csv, ini alebo podobne formaty..., staci poznat funkcie file, explode a in_array..
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 28.02.11 Prihlásený: 07.03.24 Príspevky: 196 Témy: 6 Bydlisko: Bratislava | Napísal weroro: 20.02.2015 11:33 | |
|
V niektorých prípadoch nestačí mať iba vhodne zvolenú funkcionalitu čítanie/zápis ale aj samotnú prehľadnosť dát v úložisku. Json je oveľa horšie čitateľný ako ini štruktúra, avšak samotný json ma vo chvíli, kedy som písal ten príspevok nenapadol, takže si myslím, že máš pravdu a z pohľadu výkon a jednoduchosť spracovania je to najlepšia voľba.
_________________ Neznalosť zložitých operácií necháva myseľ otvorenú pre geniálne riešenia založené na jednoduchosti. |
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| android praca so suborom v Android, iOS, Windows Phone (Mobile) | 0 | 367 | 15.04.2012 14:10 zipper | | Pascal - práca so súborom v Assembler, C, C++, Pascal, Java | 2 | 526 | 17.12.2011 18:36 fubu | | php praca s txt suborom v PHP, ASP | 2 | 664 | 14.01.2010 10:38 mylan | | vyvojovy diagram - praca so suborom v Ostatné | 0 | 569 | 13.12.2011 16:57 t-pack25 | | Praca s swf suborom v javascripte v JavaScript, VBScript, Ajax | 1 | 286 | 16.09.2013 0:29 shaggy | | PC zostava 2000€ práca s videom, programovanie, práca v photoshope atď... [ Choď na stránku: 1, 2 ] v PC zostavy | 37 | 1792 | 25.01.2017 9:44 Xaltotun | | cesta k suborom v PHP, ASP | 3 | 661 | 13.11.2009 8:41 p360t | | Cesta k suborom v HTML, XHTML, XML, CSS | 2 | 726 | 31.08.2009 21:23 SilverSurfer | | Problém s BIN súborom v Ostatné programy | 3 | 1118 | 20.08.2006 19:21 wolf14 | | Problem s MKV suborom. v Video programy | 2 | 536 | 09.02.2008 10:00 shiro | | Pomoc s .htaccess suborom v Ostatné | 6 | 626 | 01.02.2009 23:58 Ivan11114 | | Problem s css suborom v HTML, XHTML, XML, CSS | 21 | 1034 | 15.12.2008 17:38 Tominator | | pristup k suborom na serveri v Ostatné | 10 | 1483 | 02.12.2006 19:25 neopagan | | Problém s prístupom k súborom v Operačné systémy Microsoft | 1 | 388 | 27.02.2012 20:30 majky358 | | problém so súborom wbemess.log v Operačné systémy Microsoft | 0 | 442 | 24.12.2007 13:57 3michal | | problem s pristupom k suborom v Operačné systémy Microsoft | 2 | 264 | 12.01.2013 23:13 JanoF |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|