Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 11 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.03.13
Prihlásený: 16.08.16
Príspevky: 28
Témy: 8
Príspevok NapísalOffline : 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ť :D 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
Offline

Správca fóra
Správca fóra
Práca so súborom

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.03.13
Prihlásený: 16.08.16
Príspevky: 28
Témy: 8
Príspevok Napísal autor témyOffline : 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.03.13
Prihlásený: 16.08.16
Príspevky: 28
Témy: 8
Príspevok Napísal autor témyOffline : 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
Offline

Správca fóra
Správca fóra
Práca so súborom

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.03.13
Prihlásený: 16.08.16
Príspevky: 28
Témy: 8
Príspevok Napísal autor témyOffline : 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
Offline

Správca fóra
Správca fóra
Práca so súborom

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 19.02.2015 19:43

1. http://php.net/manual/en/function.file.php
2. 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 16.03.13
Prihlásený: 16.08.16
Príspevky: 28
Témy: 8
Príspevok Napísal autor témyOffline : 19.02.2015 20:19

Chápem to a pravdepodobne to nebudem komplikovať ešte viac :D 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
Offline

Užívateľ
Užívateľ
Práca so súborom

Registrovaný: 28.02.11
Prihlásený: 07.03.24
Príspevky: 196
Témy: 6
Bydlisko: Bratislava
Príspevok NapísalOffline : 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.
Offline

Užívateľ
Užívateľ
Práca so súborom

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96
Bydlisko: Bratislava,...
Príspevok NapísalOffline : 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)
Offline

Užívateľ
Užívateľ
Práca so súborom

Registrovaný: 28.02.11
Prihlásený: 07.03.24
Príspevky: 196
Témy: 6
Bydlisko: Bratislava
Príspevok NapísalOffline : 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.
Odpovedať na tému [ Príspevkov: 11 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. android praca so suborom

v Android, iOS, Windows Phone (Mobile)

0

367

15.04.2012 14:10

zipper Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal - práca so súborom

v Assembler, C, C++, Pascal, Java

2

526

17.12.2011 18:36

fubu Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. php praca s txt suborom

v PHP, ASP

2

664

14.01.2010 10:38

mylan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vyvojovy diagram - praca so suborom

v Ostatné

0

569

13.12.2011 16:57

t-pack25 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Praca s swf suborom v javascripte

v JavaScript, VBScript, Ajax

1

286

16.09.2013 0:29

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PC zostava 2000€ práca s videom, programovanie, práca v photoshope atď...

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PC zostavy

37

1792

25.01.2017 9:44

Xaltotun Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. cesta k suborom

v PHP, ASP

3

661

13.11.2009 8:41

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Cesta k suborom

v HTML, XHTML, XML, CSS

2

726

31.08.2009 21:23

SilverSurfer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s BIN súborom

v Ostatné programy

3

1118

20.08.2006 19:21

wolf14 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s MKV suborom.

v Video programy

2

536

09.02.2008 10:00

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pomoc s .htaccess suborom

v Ostatné

6

626

01.02.2009 23:58

Ivan11114 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s css suborom

v HTML, XHTML, XML, CSS

21

1034

15.12.2008 17:38

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pristup k suborom na serveri

v Ostatné

10

1483

02.12.2006 19:25

neopagan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s prístupom k súborom

v Operačné systémy Microsoft

1

388

27.02.2012 20:30

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problém so súborom wbemess.log

v Operačné systémy Microsoft

0

442

24.12.2007 13:57

3michal Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problem s pristupom k suborom

v Operačné systémy Microsoft

2

264

12.01.2013 23:13

JanoF Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra