Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] System obsługi sprzedaży
Forum PHP.pl > Forum > Przedszkole
dsinfo
Piszę pewną aplikację w języku PHP i mam mały, a właściwie to ogromny problem.
Otóż piszę aplikację prostej obsługi sprzedaży. Potrzebuję 5 pól. W jedno takie
pole wpisuję kod produktu i obok pojawia mi się jego kod,nazwa i cena. Sposób w
jaki można wyświetlić wcześniej wymienione dane o odpowiednim produkcie, po uprzednim
wpisaniu jego kodu - mam już rozwiązany. Ale, nie do końca. W poniższych listingach przedstawiam
aktualny stan kodu. Mój problem polega na tym, że tych pól jak już wspomniałem ma być
aż 5. I tu zaczyna się poważny problem. Otóż jak wpiszemy do dowolnego pola kod produktu
(np. "001") to wyświetlą nam się o nim dane, natomiast gdy do drugiego pola wpiszemy
następny kod produktu (np. "002") - to poprzednie dane znikną. I tak dalej z kolejnymi polami.
W tym właśnie miejscu tkwi mój problem. A, więc cóż mam uczynić, aby wcześniej wyświetlone dane
nie znikały mi?

Listingi:

d.php - baza danych o produktach:

  1. <?php
  2. $art['001']['nazwa']='Towar A';
  3. $art['001']['cena']='30';
  4. $art['002']['nazwa']='Towar B';
  5. $art['002']['cena']='40';
  6. $art['003']['nazwa']='Towar C';
  7. $art['003']['cena']='50';
  8. ?>


i.php - formularz numer jeden:


  1. <table border="0" width="616"><tr><td width="210">
  2. <form action="ii.php" method="get">
  3. Litera: <input type="text" name="a" />
  4. <input type="submit" value="Wyslij" />
  5. </form>
  6. </td><td width="396"><?php
  7.  
  8. include ("d.php");
  9.  
  10.  
  11. $a=$_GET['a'];
  12.  
  13.  
  14. if (isset($art[$a])) echo ('<table border=0><tr><td width=119>'.$a.'</td><td width=208>'.$art[$a]['nazwa'].'</td><td width=55>'.$art[$a]['cena'].'</td></tr></table>');
  15.  
  16. ?></td></tr></table>




v.php - formularz numer dwa:


  1. <table border="0" width="616"><tr><td width="210">
  2. <form action="ii.php" method="get">
  3. Litera: <input type="text" name="b" />
  4. <input type="submit" value="Wyslij" />
  5. </form>
  6. </td><td width="396"><?php
  7.  
  8. include ("d.php");
  9.  
  10. $b=$_GET['b'];
  11.  
  12.  
  13.  
  14. if (isset($art[$b])) echo ('<table border=0><tr><td width=119>'.$b.'</td><td width=208>'.$art[$b]['nazwa'].'</td><td width=55>'.$art[$b]['cena'].'</td></tr></table>');
  15. $cena=$art[$b]['cena'];
  16. echo ($cena);
  17.  
  18. ?></td></tr></table>



ii.php - plik główny:

  1. <?php
  2.  
  3. include ("i.php");
  4. echo ("<br><br><br><br>");
  5. include ("v.php");
  6.  
  7. ?>
webdice
1. Brak bbcode,
2. Co to za tytuł? Tytuł ma opisywać problem,
3. Nie ten dział.

Punkt pierwszy i drugi proszę zmienić, trzecim ja się zajmę winksmiley.jpg.

Przenoszę na Przedszkole.
behu
Może w ten sposób?


d.php - baza danych o produktach:

  1. <?php
  2. $art['001']['nazwa']='Towar A';
  3. $art['001']['cena']='30';
  4. $art['002']['nazwa']='Towar B';
  5. $art['002']['cena']='40';
  6. $art['003']['nazwa']='Towar C';
  7. $art['003']['cena']='50';
  8. ?>



skrypt.php - cała reszta w jednym skrypcie:

  1. <?php
  2. include ("d.php");
  3.  
  4. $dane = array ($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e']);
  5. $tab = array (0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e');
  6.  
  7. for ($x=0; $x<5; $x++){
  8. echo '<form action="skrypt.php" method="get">';
  9. echo '<table border="0" width="616"><tr><td width="210">';
  10. echo 'Litera: ';
  11. echo '<input type="text" name="'.$tab[$x].'" value="'.$dane[$x].'" />';
  12. echo '</td><td width="396">';
  13. if (isset($art[$dane[$x]])){
  14. echo ('<table border=0><tr><td width=119>'.$dane[$x].'</td><td width=208>'.$art[$dane[$x]]['nazwa'].'</td><td width=55>'.$art[$dane[$x]]['cena'].'</td></tr></table>');
  15. }
  16. echo '</td></tr></table>';
  17. }
  18. echo '<input type="submit" value="Wyslij" />';
  19. echo '</form>';
  20. ?>
dsinfo
Można też tak.
Dziękuję bardzo za pomoc.

Ale, mam jeszcze pytanie jak wszystkie te wyświetlone dane zapisać do pliku tekstowego (baza danych) i jak wysłać wyświetlone dane do oddzielnej strony, która będzie służyć do drukowania tych danych (dane w wersji do wydruku)? Ja próbowałem, ale się nie da.

Oto przykład:

Tu mamy kod skryptu z dodaną funkcją "echo()" na końcu.

  1. <?php
  2. include ("d.php");
  3.  
  4. $dane = array ($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e']);
  5. $tab = array (0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e');
  6.  
  7. for ($x=0; $x<5; $x++){
  8. echo '<form action="skrypt.php" method="get">';
  9. echo '<table border="0" width="616"><tr><td width="210">';
  10. echo 'Litera: ';
  11. echo '<input type="text" name="'.$tab[$x].'" value="'.$dane[$x].'" />';
  12. echo '</td><td width="396">';
  13. if (isset($art[$dane[$x]])){
  14. echo ('<table border=0><tr><td width=119>'.$dane[$x].'</td><td width=208>'.$art[$dane[$x]]['nazwa'].'</td><td width=55>'.$art[$dane[$x]]['cena'].'</td></tr></table>');
  15.  }
  16. echo '</td></tr></table>';
  17. }
  18. echo '<input type="submit" value="Wyslij" />';
  19. echo '</form>';
  20.  
  21. echo ($art[$dane[$a]]['nazwa']);
  22. ?>


Nic się nie wyświetla. Ja wiem jak zrealizować zapis do pliku tekstowego odpowiednich danych np. ze zmiennych, ale w tym wypadku nie mam możliwości zastosowania mojej metody, gdyż nawet nie mogę pobrać tych danych. I cóż mam zrobić?

Chcę teraz uzyskać następujący efekt. Otóż chcę utworzyć przycisk np. o nazwie "Akceptuj". Gdy, kliknę na niego dojdzie do zapisu wyświetlonych danych w bazie danych (ja chciałbym aby była to baza na pliku tekstowym*) (ryc. 1) oraz jednocześnie wyświetli nam się specjalna strona, na której znajdziemy wcześniej wyświetlone dane sformatowane w taki sposób, aby nadawały się do wydruku (ryc. 2).

Plik graficzny z rycinami: http://www.otofotki.pl/img3/obrazki/iopg2036278399q.jpg
batman
Zostałeś już raz poproszony o zmianę tematu oraz poprawienie bbcode.
Popraw to, inaczej temat zostanie zamknięty!
behu
d.php - baza danych o produktach:
  1. <?php
  2. $art['001']['nazwa']='Towar A';
  3. $art['001']['cena']='30';
  4. $art['002']['nazwa']='Towar B';
  5. $art['002']['cena']='40';
  6. $art['003']['nazwa']='Towar C';
  7. $art['003']['cena']='50';
  8. ?>



skrypt.php:
  1. <?php
  2. include ("d.php");
  3.  
  4. $dane = array ($_GET['a'], $_GET['b'], $_GET['c'], $_GET['d'], $_GET['e']);
  5. $tab = array (0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e');
  6.  
  7.  
  8. echo '<form action="skrypt.php" method="get">';
  9. for ($x=0; $x<5; $x++){
  10. if ($dane[$x] != ""){
  11. $tablica[] = $dane[$x]."|".$art[$dane[$x]]['nazwa']."|".$art[$dane[$x]]['cena']."r\n";
  12. }
  13.  
  14.  
  15. echo '<table border="0" width="616"><tr><td width="210">';
  16. echo 'Litera: ';
  17. echo '<input type="text" name="'.$tab[$x].'" value="'.$dane[$x].'" />';
  18. echo '</td><td width="396">';
  19. if (isset($art[$dane[$x]])){
  20. echo ('<table border=0><tr><td width=119>'.$dane[$x].'</td><td width=208>'.$art[$dane[$x]]['nazwa'].'</td><td width=55>'.$art[$dane[$x]]['cena'].'</td></tr></table>');
  21. }
  22. echo '</td></tr></table>';
  23. }
  24. echo '<input type="submit" value="Wyslij" />';
  25. echo '</form>';
  26.  
  27. if(($tablica[0] != "") OR ($tablica[1] != "") OR ($tablica[2] != "") OR ($tablica[3] != "") OR ($tablica[4] != "")){
  28. echo '<form action="akceptuj.php" method="post">';
  29. for($z=0; $z<5; $z++){
  30. echo '<input type="hidden" name="'.$tab[$z].'" value="'.$tablica[$z].'">';
  31. }
  32. echo '<input type="submit" value="Akceptuj" />';
  33. echo '</form>';
  34. }else{
  35. echo 'Musisz wpisac dane..';
  36. }
  37. ?>



akceptuj.php
  1. <?php
  2. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  3. $tab = array (0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e');
  4.  
  5. $odstep = '&nbsp;';
  6. for($o=0; $o<22; $o++){
  7. $odstep = $odstep.'&nbsp;';
  8. }
  9.  
  10. $plik = fopen("baza.txt", 'ab');
  11.  
  12. for($a=0; $a<5; $a++){
  13. echo nl2br(str_replace("|", "$odstep", $dane[$a]));
  14. fwrite($plik, $dane[$a]);
  15. }
  16.  
  17. fclose($plik);
  18. ?>


w folderze z tymi skryptami powstanie plik baza.txt, gdzie dane są zapisywanie w formacie:
Kod
numerek|nazwa|cena



Godzina już późna, więc mogłem nie zrozumieć do końca o co chodzi.. smile.gif


edit:
troszkę poprawiłem, ale nie podoba mi się ten skrypt tongue.gif
dsinfo
Dziękuję bardzo za pomoc!

Acha i jeszcze jedno. Otóż co mam zrobić, aby w cześci przygotowanej do drukowania wyświetlić napis "Suma", a obok niego sumę cen produktów (tzn. sumujemy ostatnią kolumnę z cenami). Mam jeszcze jedno pytanie, otóż w jaki sposób usunąć literę "r" pojawiającą się obok cen? W zamian można by napisać "zł".

batman
@dsinfo
To jest już ostatnia prośba. Popraw bbcode!
behu
d.php - baza danych o produktach:
  1. <?php
  2. $art['001']['nazwa']='Towar A';
  3. $art['001']['cena']='30';
  4. $art['002']['nazwa']='Towar B';
  5. $art['002']['cena']='40';
  6. $art['003']['nazwa']='Towar C';
  7. $art['003']['cena']='50';
  8. $art['004']['nazwa']='przykład ceny z groszami'; //jeżeli w cenie mają być grosze,
  9. $art['004']['cena']='23.78';    //trzeba użyć kropki, a nie przecinka
  10. ?>


skrypt.php:
  1. <?php
  2. include ("d.php");
  3.  
  4. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  5. $tab = array (0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e');
  6.  
  7. echo '<form action="skrypt.php" method="post">';
  8.  
  9. for($x=0; $x<5; $x++){
  10. if ($dane[$x] != ""){
  11. $tablica[] = $dane[$x]."|".$art[$dane[$x]]['nazwa']."|".$art[$dane[$x]]['cena']."r\n";
  12. }
  13.  
  14. echo '<table border="0" width="616">
  15. <tr>
  16. <td width="210">Litera: <input type="text" name="'.$tab[$x].'" value="'.$dane[$x].'" /></td>
  17. <td width="396">';
  18. if (isset($art[$dane[$x]])){
  19. echo '<table border="0">
  20. <tr>
  21. <td width=119>'.$dane[$x].'</td>
  22. <td width=208>'.$art[$dane[$x]]['nazwa'].'</td>
  23. <td width=55>'.number_format($art[$dane[$x]]['cena'], 2, ',', '').' zł</td>
  24. </tr>
  25. </table>';
  26. }
  27. echo ' </td>
  28. </tr>
  29. </table>';
  30. }
  31. echo '<input type="submit" value="Wyslij" />
  32. </form>';
  33.  
  34. if(count($tablica) != '0'){
  35. echo '<form action="akceptuj.php" method="post">';
  36. for($z=0; $z<5; $z++){
  37. echo '<input type="hidden" name="'.$tab[$z].'" value="'.$tablica[$z].'">';
  38. }
  39. echo '<input type="submit" value="Akceptuj" />
  40. </form>';
  41. }
  42. else{
  43. echo 'Musisz wpisac dane..';
  44. }
  45. ?>


akceptuj.php
  1. <?php
  2. include ("d.php");
  3. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  4. $suma = 0;
  5.  
  6. $plik = fopen("baza.txt", 'ab');
  7.  
  8. echo '<table border="0" width="400px">';
  9. for($g=0; $g<5; $g++){
  10.  
  11. $exp = explode("|", $dane[$g]);
  12. $suma += $exp[2];
  13.  
  14. if(array_key_exists($exp[0], $art)){
  15. fwrite($plik, $dane[$g]);
  16.  
  17. echo '<tr>
  18. <td width="15%" align="center" valign="middle">'.$exp[0].'</td>
  19. <td width="60%" align="center" valign="middle">'.$exp[1].'</td>
  20. <td width="25%" align="right" valign="middle">'.number_format($exp[2], 2, ',', '').' zł</td>
  21. </tr>';
  22. }
  23. }
  24. echo ' <tr>
  25. <td align="center" valign="middle"></td>
  26. <td colspan="2" align="right" valign="middle">Suma: '.number_format($suma, 2, ',', '').' zł</td>
  27. </tr> 
  28. </table>';
  29.  
  30. fclose($plik);
  31. ?>



Powinno być dobrze.
To "r" było tam przez przypadek, literówka spowodowana późną porą winksmiley.jpg.
dsinfo
Jeszcze raz dziękuję bardzo za pomoc.

Mam jeszcze jedno ostatnie pytanie.
Otóż w jaki sposób można zrobić, by podczas zapisywania sprzedanych produktów dopisywała
się data i godzina dokonania sprzedaży danego produktu. Przykładem będzie poniższy rysunek
z przykładem:




A, zatem - za jednym "zamachem" klient dnia 12.08.08 o godzinie 10:50 dokonał zakupu towarów "Towar A","Towar B","Towar C".
Następnego dnia inny lub ten sam klient dokonał zakupu "Towar A" o 11:50, inny klient o 10:05 zakupił "Towar B",
następnie jeszcze inny o godzinie 10:50 zakupił "Towar A",itd. I chodzi oto aby, poprostu do bazy dopisywała
się data i godzina dokonania zakupu odpowiednich towarów.
behu
d.php:
  1. <?php
  2. $art['001']['nazwa']='Towar A';
  3. $art['001']['cena']='30';
  4. $art['002']['nazwa']='Towar B';
  5. $art['002']['cena']='40';
  6. $art['003']['nazwa']='Towar C';
  7. $art['003']['cena']='50';
  8. $art['004']['nazwa']='przykład ceny z groszami'; //jeżeli w cenie mają być grosze,
  9. $art['004']['cena']='23.78'; //trzeba użyć kropki, a nie przecinka
  10. ?>



skrypt.php:
  1. <?php
  2. include ("d.php");
  3.  
  4. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  5. $tab = array (0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd', 4 => 'e');
  6. $data = date('d.m.Y');
  7. $czas = date('G:i');
  8.  
  9. echo '<form action="skrypt.php" method="post">';
  10.  
  11. for($x=0; $x<5; $x++){
  12. if ($dane[$x] != ""){
  13. $tablica[] = $dane[$x]."|".$art[$dane[$x]]['nazwa']."|".$art[$dane[$x]]['cena']."|".$data."|".$czas."r\n";
  14. }
  15.  
  16. echo '<table border="0" width="616">
  17. <tr>
  18. <td width="210">Litera: <input type="text" name="'.$tab[$x].'" value="'.$dane[$x].'" /></td>
  19. <td width="396">';
  20. if (isset($art[$dane[$x]])){
  21. echo '<table border="0">
  22. <tr>
  23. <td width=119>'.$dane[$x].'</td>
  24. <td width=208>'.$art[$dane[$x]]['nazwa'].'</td>
  25. <td width=55>'.number_format($art[$dane[$x]]['cena'], 2, ',', '').' zł</td>
  26. </tr>
  27. </table>';
  28. }
  29. echo ' </td>
  30. </tr>
  31. </table>';
  32. }
  33. echo '<input type="submit" value="Wyslij" />
  34. </form>';
  35.  
  36. if(count($tablica) != '0'){
  37. echo '<form action="akceptuj.php" method="post">';
  38. for($z=0; $z<5; $z++){
  39. echo '<input type="hidden" name="'.$tab[$z].'" value="'.$tablica[$z].'">';
  40. }
  41. echo '<input type="submit" value="Akceptuj" />
  42. </form>';
  43. }
  44. else{
  45. echo 'Musisz wpisac dane..';
  46. }
  47. ?>



akceptuj.php:
  1. <?php
  2. include ("d.php");
  3. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  4. $suma = 0;
  5.  
  6. $plik = fopen("baza.txt", 'ab');
  7.  
  8. echo '<table border="0" width="400px">';
  9. for($g=0; $g<5; $g++){
  10.  
  11. $exp = explode("|", $dane[$g]);
  12. $suma += $exp[2];
  13.  
  14. if(array_key_exists($exp[0], $art)){
  15. fwrite($plik, $dane[$g]);
  16.  
  17. echo '<tr>
  18. <td width="15%" align="center" valign="middle">'.$exp[0].'</td>
  19. <td width="60%" align="center" valign="middle">'.$exp[1].'</td>
  20. <td width="25%" align="right" valign="middle">'.number_format($exp[2], 2, ',', '').' zł</td>
  21. </tr>';
  22. }
  23. }
  24. echo ' <tr>
  25. <td align="center" valign="middle"></td>
  26. <td colspan="2" align="right" valign="middle">Suma: '.number_format($suma, 2, ',', '').' zł</td>
  27. </tr> 
  28. </table>';
  29.  
  30. fwrite($plik, "r\n");
  31. fclose($plik);
  32. ?>



wtedy baza.txt będzie wyglądać przykładowo tak:
Kod
         001|Towar A|30|12.08.2008|20:48
         002|Towar B|40|12.08.2008|20:48
         001|Towar A|30|12.08.2008|20:48
         004|przykład ceny z groszami|23.78|12.08.2008|20:48
        
         001|Towar A|30|12.08.2008|20:49
         002|Towar B|40|12.08.2008|20:49
         001|Towar A|30|12.08.2008|20:49
         004|przykład ceny z groszami|23.78|12.08.2008|20:49
         004|przykład ceny z groszami|23.78|12.08.2008|20:49
        
         004|przykład ceny z groszami|23.78|12.08.2008|20:49
        
         001|Towar A|30|12.08.2008|20:50
         004|przykład ceny z groszami|23.78|12.08.2008|20:50
        
         001|Towar A|30|12.08.2008|20:52
        
         001|Towar A|30|12.08.2008|20:52
        
         001|Towar A|30|12.08.2008|20:53
         002|Towar B|40|12.08.2008|20:53
         003|Towar C|50|12.08.2008|20:53



Między poszczególnymi klientami jest linia przerwy, żeby było bardziej czytelne.
Jeżeli ma być bez tych przerw, należy usunąć 'fwrite($plik, "\r\n");' znajdujące się przy końcu w pliku 'akceptuj.php'.
dsinfo
Mam jeszcze jedno pytanie.
Otóż czy dało by się jeszcze dodać możliwość sprawdzania ilości sprzedanego towaru oraz ilości towaru jaka pozostała?
Chodzi oto, że w bazie danych wszystkich artykułów mam ilość towaru (spis artykułów) jaka jest dostępna (plik "d.php")
w pliku "baza.txt", mam zapisywane informacje o aktualnie sprzedanych artykułach. Teraz warto było by, aby można było
zobaczyć jaką liczbę sprzedano "Towaru A","Towaru B","Towaru C', (...) oraz ile pozostało ich możliwych do sprzdania,
tzn. ile pozostało ich na stanie.

Kod pliku d.php:

  1. <?php
  2. $art['001']['nazwa']='Towar A';
  3. $art['001']['cena']='30';
  4. $art['001']['netto']='15';
  5. $art['001']['ilosc']='5';
  6. $art['002']['nazwa']='Towar B';
  7. $art['002']['cena']='40';
  8. $art['002']['netto']='2.50';
  9. $art['002']['ilosc']='3';
  10. $art['003']['nazwa']='Towar C';
  11. $art['003']['cena']='50';
  12. $art['003']['netto']='10';
  13. $art['003']['ilosc']='100';
  14. $art['004']['nazwa']='Towar D';
  15. $art['004']['cena']='5.50';
  16. $art['004']['netto']='1,30';
  17. $art['004']['ilosc']='99';
  18. ?>


Do tego mamy teraz prezentację bazy wszystkich artykułów - plik lista.php:

  1. <table style="width:90%;border:1px solid green;" align="center"><tr><td><b><font size="1" face="Arial">
  2. Kod produktu</font></b></td><td><b><font size="1" face="Arial">Nazwa produktu</font></b></td><td><b>
  3. <font size="1" face="Arial">Cena brutto produktu</font></b></td><td><b><font size="1" face="Arial">
  4. Cena netto produktu</font></b></td><td><b><font size="1" face="Arial">Ilość</font></b></td></tr>
  5. <?php
  6.  
  7.  include('d.php');
  8.  
  9. foreach($art as $k=>$v)
  10. {
  11.  echo('<tr><td bgcolor=#99CCFF><center><b><font size=2 face=Arial>'.$k.'</font></b></center></td>
  12. <td bgcolor=#3399FF><center><b><font size=2 face=Arial>'.$v['nazwa'].'</font></b></center></td>
  13. <td bgcolor=#0099FF><center><b><font size=2 face=Arial>'.$v['cena'].'</font></b></center></td>
  14. <td bgcolor=#6699FF><center><b><font size=2 face=Arial>'.$v['netto'].'</font></b></center></td>
  15. <td bgcolor=#9966FF><center><b><font size=2 face=Arial>'.$v['ilosc'].'</font></b></center></td></tr>');
  16. }
  17. ?>
  18. </table>


A, także prezentację graficzną listy sprzedanych produktów - plik lps.php:

  1. <p><b>Lista produktów sprzedanych</b></p>
  2.  
  3.  
  4.  
  5. <table style="width:90%;border:1px solid green;" align="center"><tr><td><b><font size="1" face="Arial">
  6. Kod produktu</font></b></td><td><b><font size="1" face="Arial">Nazwa produktu</font></b></td><td><b>
  7. <font size="1" face="Arial">Cena brutto produktu</font></b></td><td>
  8. <b><font face="Arial" size="1">Data sprzedaży</font></b></td><td><b><font face="Arial" size="1">
  9. Czas sprzedaży</font></b></td></tr>
  10.  
  11. <?php
  12. $plik = "baza.txt";
  13. $dane = file($plik); /* pobieram dane z pliku i zapisuje do tablicy (linia = rekord) */
  14.  
  15. for($i=0;$i<count($dane);$i++) { /* przeszukuję tablicę */
  16. list($kod[$i], $nazwa[$i], $cena[$i], $data[$i], $czas[$i]) = explode("|", $dane[$i]);
  17.  /* dziele linię na tablicę i zapisuje dane do odpowiednich zmienncyh */
  18. }
  19.  
  20.  
  21.  
  22. for($i=0;$i<count($kod);$i++) /* przeszukuję tablicę */ 
  23.  echo ('<tr><td bgcolor=#99CCFF><center><b><font size=2 face=Arial>'.$kod[$i].'</font></b></center></td>
  24. <td bgcolor=#3399FF><center><b><font size=2 face=Arial>'.$nazwa[$i].'</font></b></center></td><td bgcolor=#0099FF>
  25. <center><b><font size=2 face=Arial>'.$cena[$i].'</font></b></center></td><td bgcolor=#6699FF><center><b>
  26. <font size=2 face=Arial>'.$data[$i].'</font></b></center></td><td bgcolor=#9966FF><center><b><font size=2 face=Arial>
  27. '.$czas[$i].'</font></b></center></td></tr>');
  28.  /* wyświetlam dane */
  29. ?></table>


Dołączam przykładowy plik - baza.txt:

  1. <?php
  2. 001|Towar A|30|13.08.2008|14:25:06
  3. 002|Towar B|40|13.08.2008|14:25:06
  4. 003|Towar C|50|13.08.2008|14:25:06
  5. 004|przykład ceny z groszami|23.78|13.08.2008|14:25:06
  6. 001|Towar A|30|13.08.2008|14:25:06
  7. 001|Towar A|30|13.08.2008|14:32:54
  8. 003|Towar C|50|13.08.2008|14:32:54
  9. 002|Towar B|40|13.08.2008|14:32:54
  10. 004|Towar D|5.50|13.08.2008|14:32:54
  11. 001|Towar A|30|13.08.2008|14:32:54
  12. 001|Towar A|30|13.08.2008|15:51:15
  13. 002|Towar B|40|13.08.2008|15:51:15
  14. 004|Towar D|5.50|13.08.2008|15:51:15
  15. 004|Towar D|5.50|13.08.2008|15:51:15
  16. 004|Towar D|5.50|13.08.2008|15:51:15
  17. 001|Towar A|30|13.08.2008|16:14:19
  18. 002|Towar B|40|13.08.2008|16:14:19
  19. 003|Towar C|50|13.08.2008|16:14:19
  20. 004|Towar D|5.50|13.08.2008|16:14:19
  21. 004|Towar D|5.50|13.08.2008|16:14:19
  22. 001|Towar A|30|13.08.2008|16:27:18
  23. 002|Towar B|40|13.08.2008|16:27:18
  24. 001|Towar A|30|13.08.2008|16:30:19
  25. 001|Towar A|30|13.08.2008|16:42:31
  26. ?>


.

I teraz chcę w pliku lista.php dodać kolumnę "Ilość sprzedanych artykułów" i "Ilość pozostałych artykułów".
W tym pliku/stronie mamy kolumnę z napisem "Ilość" - jest to tak naprawdę ilość początkowa, czyli ilość
danego artykułu jaka była na początku (zakupiona np. przez sklep). Tutaj akurat zapomiałem tego dopisać.

Pomocą będzie poniższy przykładowy rysunek (zmodyfikowany plik lista.php):

http://www.otofotki.pl/img3/obrazki/oqdt1611433822y.jpg

Czyli na koniec zwieczając ten cały długi i zarazem wyczerpujący post - chcę uzyskać możliwość wyświetlania ile pozostało mi "Towaru A","Towaru B",(...) oraz ile zostało sprzedane - "Towaru A", "Towaru B", itd.
behu
plik lista.php:
  1. <table style="width:90%;border:1px solid green;" align="center">
  2. <tr>
  3. <td width="19%">
  4. <b><font size="1" face="Arial">Kod produktu</font></b>
  5. </td>
  6. <td width="19%">
  7. <b><font size="1" face="Arial">Nazwa produktu</font></b>
  8. </td>
  9. <td width="19%">
  10. <b><font size="1" face="Arial">Cena brutto produktu</font></b>
  11. </td>
  12. <td width="19%">
  13. <b><font size="1" face="Arial">Cena netto produktu</font></b>
  14. </td>
  15. <td width="8%">
  16. <b><font size="1" face="Arial">Ilość</font></b>
  17. </td>
  18. <td width="8%">
  19. <b><font size="1" face="Arial">Ilość sprzedanych</font></b>
  20. </td>
  21. <td width="8%">
  22. <b><font size="1" face="Arial">Ilość pozostałych</font></b>
  23. </td>
  24. </tr>
  25. <?php
  26. include('d.php');
  27. $sprzedane['id']['ilosc']; 
  28. $plik = file("baza.txt");
  29.  
  30. foreach($art as $k){
  31. $sprzedane['id'] = array_keys($art);
  32. }
  33.  
  34. for($x=0; $x<count($plik); $x++){
  35. $exp = explode("|", $plik[$x]);
  36. $sprzedane[$exp['0']]['ilosc']++;
  37. }
  38.  
  39. foreach($art as $k=>$v){
  40. echo('<tr>
  41. <td bgcolor=#99CCFF><center><b><font size=2 face=Arial>'.$k.'</font></b></center></td>
  42. <td bgcolor=#3399FF><center><b><font size=2 face=Arial>'.$v['nazwa'].'</font></b></center></td>
  43. <td bgcolor=#0099FF><center><b><font size=2 face=Arial>'.$v['cena'].'</font></b></center></td>
  44. <td bgcolor=#6699FF><center><b><font size=2 face=Arial>'.$v['netto'].'</font></b></center></td>
  45. <td bgcolor=#9966FF><center><b><font size=2 face=Arial>'.$v['ilosc'].'</font></b></center></td>
  46. <td bgcolor=#9966FF><center><b><font size=2 face=Arial>'.$sprzedane[$k]['ilosc'].'</font></b></center></td>
  47. <td bgcolor=#9966FF><center><b><font size=2 face=Arial>'.($v['ilosc']-$sprzedane[$k]['ilosc']).'</font></b></center></td>
  48. </tr>');
  49. }
  50. ?>
  51. </table>



Nie sprawdzałem dokładnie, ale powinno działać smile.gif.
dsinfo
Na samym początku bardzo dziękuję za udzielenie mi wcześniejszej pomocy.



Mam jeszcze jeden problem, a właściwie sprawe. Otóż chciałbym w pliku lps.php (kod przedstawiono we wcześniejszym poście) - Lista sprzedanych produktów, dodać jedno udogodnienie które uprości przeglądanie jakie produkty zostały sprzedane danego dnia. Otóż ja chciałbym, aby ową listę podzielić na dni,miesiące oraz lata.

Najpierw wybieramy rok (np. 2008, później też 2009,itd.).
Po dokonaniu tego wyboru pojawiają się nam miesiące (Styczeń,Luty,itd.).
Po wybraniu odpowiedniego miesiąca, pozostaje nam już tylko wybranie odpowiedniego dnia (1,2,3,itd.).
Po wybraniu odpowiedniego roku,miesiąca i dnia - poniżej powinna pojawić nam się lista sprzedanych artykułów/produktów, jakie sprzedaliśmy danego dnia (danej daty*). Ta tabela prezentująca co sprzedaliśmy odpowiedniego dnia - powinna mieć tą samą postać co teraz, czyli powienna zawierać kolumny zatytułowane - "Kod produktu","Nazwa produktu","Cena brutto produktu", "Data sprzedaży" i "Czas sprzedaży" (tzn., że pozostaje bez zmian).


http://www.otofotki.pl/img3/obrazki/wxyz1093046145x.jpg


W tym jest tylko jedna sprawa. Chodzi mi także oto, aby lata,misiące i odpowiednie dni - nie wyświetlały się tj. na powyższym rysunku.
Ja chciałbym, aby odpowiednie dni, miesiące i lata dodawały (wyświetlały) się w odpowiednim czasie. Tzn. Dziś mamy 14 Sierpnia 2008 roku. Załużmy, że sprzedaż rozpocząłem 12 Sierpnia 2008r. W takim wypadku na ekranie powinnienem ujrzeć tylko:
Dni: 12 13 14 15
Miesiąc: Sierpień (w tym wypadku tylko)
Rok: 2008 (w tym wypadku tylko)
Jutro jak sprzedam jakiś artykuł do całości dopisze mi się nowy dzień, czyli 16. Po jutrze jak sprzedam
jakieś produkty - to dopisze mi się nowy dzień, czyli 16,itd. Jak skończy się Sierpień, pojawi się następny miesiąc - Wrzesień, a wraz z nim dzień 1.
Następnie drugiego dnia Września - pojawi się dzień 2,itd. Teraz dochodzimy do końca roku 2008. Otóż jak skończy się rok 2008 - to pojawi się nam rok 2009 (napis). Wraz z nowym rokiem pojawi nam się miesiąc - Styczeń, a wraz z nim jego pierwszy dzień - 1, itd.

Najlepiej jakby pojawienie się tych lat,miesięcy i dni zależało od wpisanej daty do bazy produktów
sprzedanych - plik baza.txt (przykładowy kod przedstawiony we wcześniejszym poście).




Dodatkowo mam jeszcze jedno pytanie.
Otóż lista sprzedanych produktów/artykułów zapisuje mi się w pliku baza.txt . I tak też niech pozostanie.
Ja chciałbym, aby poza tym, ta sama zawartość zapisywała mi się dodatkowo jeszcze w innym miejscu na dysku,
plik może mieć tą samą nazwę. Czyli cała lista produktów sprzedanych zapisuje mi się w pliku o nazwie baza.txt,
znajdującym się wraz z plikami skryptu, a dodatkowo ta sama zawartość zapisuje mi się jeszcze w innym miejscu
na dysku (np. pod adresem c:/baza/baza.txt). W tym także prosiłbym o pomoc.

Aktualny stan kodu pliku akceptuj.php:

  1. <?php
  2. include ("d.php");
  3. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  4. $suma = 0;
  5.  
  6. $plik = fopen("baza.txt", 'ab');
  7.  
  8. echo ('<table border="0" width="200px">');
  9. for($g=0; $g<5; $g++){
  10.  
  11. $exp = explode("|", $dane[$g]);
  12. $suma += $exp[2];
  13.  
  14. if(array_key_exists($exp[0], $art)){
  15. fwrite($plik, $dane[$g]);
  16.  
  17. echo '<tr>
  18. <td width="5" align="center" valign="middle"><font face=Arial size=1>'.$exp[0].'</font></td>
  19. <td width="100" align="center" valign="middle"><font face=Arial size=1>'.$exp[1].'</font></td>
  20. <td width="50" align="right" valign="middle"><font face=Arial size=1>
  21. '.number_format($exp[2], 2, ',', '').' zł</font></td>
  22. </tr>';
  23. }
  24. }
  25. echo ' <tr>
  26. <td align="center" valign="middle"></td>
  27. <td colspan="2" align="right" valign="middle"><font face=Arial size=1><b>Suma: '
  28. .number_format($suma, 2, ',', '').' zł</b></font></td>
  29. </tr> 
  30. </table>';
  31.  
  32. fclose($plik);
  33. ?>


Mam jedno już na 100% ostatnie pytanie.


Otóż mam skrypt prezentujący się następująco:

http://www.otofotki.pl/img3/obrazki/klmn1969195138t.jpg

Jest to skrypt sterujący pewną drukarką.
Jak widać ma on 5 pól za pomocą, których wysyła się nazwę towarów i ich ceny.
Ja potrzebuję, aby ktoś pomógł mi napisać kod, który by wypełniał wszystkie pola z nazwami
towarów (tytuł - "Nazwa towaru") i pola z cenami (pole "Cena" i "Brutt"). Odnośnie
pól zatytułowanych "Cena" i "Brutto" - chodzi oto, aby były one wypełnione identycznie.
Tzn. jeśli pole "Cena" przyjmuje wartość "6", to i pole "Brutto" przyjmuje tą samą wartość,
czyli "6".

Kod skryptu został przedstawiony na listingu pod adresem http://www.wrzucaj.com/907486 (aby, pobrać należy zaczekac 30 sekund).

Do działania skryptu wymagana jest instalacja kontrolki Active-X dla drukarki Posnet Thermal znajdującej się
pod adresem: http://www.posnet.com.pl/files/1277/Install_ThLib006.exe .


Całość ma być wstawiona do pliku o nazwie - akceptuj.php.

Aktualny stan kodu pliku - akceptuj.php:

  1. <?php
  2. include ("d.php");
  3. $dane = array ($_POST['a'], $_POST['b'], $_POST['c'], $_POST['d'], $_POST['e']);
  4. $suma = 0;
  5.  
  6. $plik = fopen("baza.txt", 'ab');
  7.  
  8. echo ('<table border="0" width="200px">');
  9. for($g=0; $g<5; $g++){
  10.  
  11. $exp = explode("|", $dane[$g]);
  12. $suma += $exp[2];
  13.  
  14. if(array_key_exists($exp[0], $art)){
  15. fwrite($plik, $dane[$g]);
  16.  
  17. echo '<tr>
  18. <td width="5" align="center" valign="middle"><font face=Arial size=1>'.$exp[0].'</font></td>
  19. <td width="100" align="center" valign="middle"><font face=Arial size=1>'.$exp[1].'</font></td>
  20. <td width="50" align="right" valign="middle"><font face=Arial size=1>'.number_format($exp[2], 2, ',', '').' zł</font></td>
  21. </tr>';
  22. }
  23. }
  24. echo ' <tr>
  25. <td align="center" valign="middle"></td>
  26. <td colspan="2" align="right" valign="middle"><font face=Arial size=1><b>Suma: '.number_format($suma, 2, ',', '').' zł</b></font></td>
  27. </tr> 
  28. </table>';
  29.  
  30. fclose($plik);
  31. ?>


http://www.otofotki.pl/img3/obrazki/iopg1005052713i.jpg

I teraz już tłumaczę. Otóż jak wspomiano we wcześniejszych plik skrypt.php pełni rolę - mini aplikacji pozwalającej
na wpisanie kodu towaru, a następnie wyświetlenie jego nazwy i ceny. W pliku skrypt.php znajduje się 5 pól pozwalających
na dokonanie tego. Pozatym plik ten pozwala też na wysłanie tych danych do pliku akceptuj.php. Plik akceptuj.php pozwala
na zapisanie tych danych do pliku o nazwie baza.php (jest to plik z listą sprzedanych artykułów) oraz wyświetlenie właśnie
sprzedanych artykułów. I tak ma pozostać.

Ja potrzebuję jak to już wcześniej wspomniałem dodania pewnego skryptu, którego kod i przykładowy zrzut ekranu został
przedstawiony na samym początku. Ten skrypt powinien zostać dodany poniżej, tzn. pod wyświetlającą się listą sprzedanych
właśnie artykułów w pliku akceptuj.php. Przykładowy rysunek poniżej:

http://www.otofotki.pl/img3/obrazki/uvwx493801730y.jpg

Jest tylko jedno, ale. Otoż w jaki sposób przedstawione na górnej liście dane wstawić do pól w poniżej dodanym skrypcie.
Dokładnie tłumacząc to potrzebuję (tj. wspomnialem na początku) powypełniać pola zatytułowane - "Nazwa towaru","Cena" i "Brutto".
Owe pola muszą zostać wypełnione identycznie jak w górnej części listy sprzedanych produktów. Pomijamy tylko kody produktów.
Dla przykładu pierwsze pole na górnej liście sprzedanych produktów w tym wypadku "Towar A" (podkreślone czerwoną linią),
ma zostać wpisane do pola tekstowego - "Nazwa towaru" (zakolorowano na czerwono) w pierwszej sekcji (numer linii 1).
Pole z nazwą "Towar B" z górnej listy sprzedanych produktów (podkreślone na ciemno niebieską linią) ma znaleźć się
w polu tekstowym zatytułowanym "Nazwa towaru" (zakolorowano ciemno niebieskim kolorem) w selekcji o numerze linii 2.
I tak dalej.

Odnośnie cen artykułów - mamy doczynienia z podobną procedurą. Np. cena dla "Towar A" wynosi 30.00 zł. "Towar A" został wpisany
do selekcji o numerze linii 1 (nazwę "Towar A" wpisano do zamalowanego na czerwono pola tekstowego). W tym wypadku cena owego
artykułu (pobrana z górnej listy) musi się znaleźć w polu "Cena" i polu "Brutto". Cenę "Towar A" zaznaczono kolerem pomarańczowym,
wraz z polami w które ma zostać wpisana. I tak dalej z kolejnymi polami.

http://www.otofotki.pl/img3/obrazki/ghij301995464k.jpg

Dodatkowo sumę do zapłaty, obliczoną w górnej liście sprzedanych właśnie artykułów - należy wpisać w pole zatytułowane "Total"
(na samym dole). Pole zaznaczono zielonkowatym kolorem, jak i przykładową wartość sumy (na górze).

Ważne jest to, aby wartości tj. 5 zł i 50gr nie były wpisywane w postaci "5,50" (z przecinkiem), tylko w postaci "5.50" (z kropką).
Oczywiście wpisane wartości liczbowe w owe pola nie mogą zawierać znaku "zł", ani żadnego innego znaku walutowego.

Czyli reasumując, proszę o pomoc w napisaniu skryptu, który pobierał by dane z wyświetlanej na górze liście właśnie sprzedanych
artykułów i wstawiał by je (wpisywał) w odpowiednie pola (opisane powyżej) dodanego skryptu. Całość odbywała by się w pliku
akceptuj.php.

Bardzo proszę o pomoc!




Dane, pobrane z listy właśnie sprzedanych artykułów (znajdującej się na górze) należy wstawić do atrybutu:
value=""
każdego ze znaczników <INPUT>. W tym wypadku pól tekstowych.
mlattari
Witaj!
Czy możesz mi napisać w jaki sposób wysyłasz do Posneta komendy z php? Rozumiem, że używasz do tego Active-x.
Czy można znaleźć jakąś dokumentację komend?
Czy poprzez akctive-x można wysyłać do Posneta standardowe komendy? W jaki sposób?
Interesuje mnie temat ponieważ stworzyłem duży i rozbudowany, wielostanowiskowy system obsługi zamówień i sprzedaży z myślą o sprzedaży eksportowej, generujący ISTAT i mnóstwo różnych raportów, kupe możliwości i opcji..... system jest totalnie elastyczny....ale.... właśnie pojawił się problem DRUKARKA POSNET :-) Jak się z nią dogadać poprzez php i active-x?

Dzięku z góry za podpowiedź :-)

Michał
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.