Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak dodać kolejny element do tablicy
tomekp
post
Post #1





Grupa: Zarejestrowani
Postów: 171
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Krakół

Ostrzeżenie: (0%)
-----


Wyciągam dane z bazy:
  1. <?php
  2. $dane = mysql_fetch_assoc(sql("SELECT * FROM dane WHERE id = '$_POST[id]'"));
  3. ?>

Wrzucam go sobie w tablice:
  1. <?php
  2. $faktura[] = $dane;
  3. ?>

Co daje:
Kod
Array
(
    [0] => Array
        (
            [id] => 9
            [nazwa_towaru] => towar
            [vat] => 22%
            [cena_netto] => 200.00
            [cena_vat] => 44.00
            [cena_brutto] => 244.00
            [opis_towaru] =>
            [ilosc_sztuk] => 1
        )

)

Chcę dodać kolejny rekord w ten sposób do tej tablicy w ten sam sposób pobierając z bazy, jak to zrobić?
Go to the top of the page
+Quote Post
Hacker
post
Post #2





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $dane = mysql_fetch_assoc(sql("SELECT * FROM dane WHERE id = '$_POST[id]'"));
  3. $faktura[] = $dane;
  4. ?>


EDIT:
Żeby nie było, że nabijam posty
Cytat
  musisz pobrać największy numer elementu tablicy $faktura[] i zapisać do $faktura[$i] gdzie $i to będzie wartość ostatniego elementu tablicy + 1


Można, ale po co skoro można napisać $tablica[] = nastempnyelement;

Ten post edytował Hacker 18.05.2006, 20:00:59
Go to the top of the page
+Quote Post
dyktek
post
Post #3





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


musisz pobrać największy numer elementu tablicy $faktura[] i zapisać do $faktura[$i] gdzie $i to będzie wartość ostatniego elementu tablicy + 1
Go to the top of the page
+Quote Post
tomekp
post
Post #4





Grupa: Zarejestrowani
Postów: 171
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Krakół

Ostrzeżenie: (0%)
-----


Robie tak ale coś mi nie działa tak jak należy, nie zapamiętuje wartości po dodaniu nowego elementu.
Go to the top of the page
+Quote Post
Foxx
post
Post #5





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Jak już piszesz, że kod nie działa, to go wklej.
Może chodzi Ci o coś takiego:
  1. <?php
  2.  
  3. $i=0;
  4. $result = mysql_query($query) or die(mysql_error());
  5. if (mysql_num_rows($result)) {
  6.     while($odp = mysql_fetch_assoc($result)){
  7.            $faktura[$i] = $odp;
  8.            $i++;
  9.     }
  10. } 
  11.  
  12. ?>


Ten post edytował Foxx 18.05.2006, 20:32:36
Go to the top of the page
+Quote Post
dyktek
post
Post #6





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


jeśli robisz to z przeładowaniem strony no to zapisz tablice do sesji
a potem ostatni element odczytasz przez
  1. <?php
  2. sizeof($mojaTablica)
  3. ?>
Go to the top of the page
+Quote Post
tomekp
post
Post #7





Grupa: Zarejestrowani
Postów: 171
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Krakół

Ostrzeżenie: (0%)
-----


Opisze może dokładniej o co mi chodzi.
Z listy magazynu wybieram produkt który chcę dodać do faktury i mam problem z zachowaniem danych tej faktury, próje to zrobić za pomocą zmiennych $_POST, ale gubię dane faktury. kod wyglada następująco:

  1. <?php
  2. function add() {
  3. global $smarty;
  4.  
  5. if ($_SERVER['REQUEST_METHOD'] == "POST") {
  6. if ($_GET['z'] == "2") {
  7.  
  8. } elseif ($_GET['z'] == "1") {
  9.  
  10. if (!is_valid_kod_klienta($_POST['kod_klienta'])) {
  11. error("Klient o podanym kodzie klienta nie istnieje!");
  12. } else {
  13.  
  14. if (sizeof($_POST['faktura']) == 0) {
  15. $_POST["faktura"] = array();
  16. }
  17.  
  18. if ($_POST['produkt_magazyn'] != 0) {
  19. $dane = mysql_fetch_assoc(sql("SELECT * FROM magazyn WHERE id = '$_POST[produkt_magazyn]';"));
  20. $dane['ilosc_sztuk'] = $_POST['ilosc_sztuk'];
  21. array_push($_POST["faktura"],$dane);
  22. unset($_POST['produkt_magazyn']);
  23. unset($_POST['ilosc_sztuk']);
  24. }
  25.  
  26. ?><pre><?print_r($_SESSION);?></pre><?
  27.  
  28. $query = sql("SELECT id,nazwa_towaru FROM magazyn ORDER BY nazwa_towaru ASC");
  29. while ($a = mysql_fetch_assoc($query)) {
  30. $magazyn[] = $a;
  31. }
  32. $smarty->assign('magazyn',$magazyn);
  33. }
  34. }
  35. }
  36.  
  37. $smarty->display('header.tpl');
  38. $smarty->display('fv/add.tpl');
  39. $smarty->display('footer.tpl');
  40. }
  41. ?>

Template do tego:
  1. [snip]
  2. {elseif $smarty.get.z == "1"}
  3.      {if !empty($error)}
  4.            {include file="error.tpl"}
  5.      {else}
  6. <br /><br />
  7. <table border="0" cellpadding="5" cellspacing="1" width="800">
  8. <tr>
  9.      <td width="800" align="left" class="listtitle" colspan="2"><b>Dodawanie faktury krok (2/4)</b></td>
  10. </tr>
  11. <tr>
  12.      <td width="800" align="left" class="list" colspan="2"><b>Lista produktów na fakturze</b></td>
  13. </tr>
  14. {if empty($faktura)}
  15. <tr>
  16.      <td width="800" align="center" class="list" colspan="2">Nie dodałeś żadnych produktów!</td>
  17. </tr>
  18. {/if}
  19. <tr>
  20.      <td width="800" align="left" class="listtitle" colspan="2"></td>
  21. </tr>
  22. <form method='POST' action='{$smarty.server.PHP_SELF}?option=fv&action=add&z=1'>
  23. <tr>
  24.      <td width="800" align="left" class="list" colspan="2"><b>Wybierz produkt z magazynu</b></td>
  25. </tr>
  26. <tr>
  27.      <td width="200" align="right" class="list"><b>Produkt:</b></td>
  28.      <td width="600" align="left" class="list">
  29. <SELECT name="produkt_magazyn" class="text">
  30. <OPTION value="0">-wybierz produkt z magazynu-</OPTION>
  31. {foreach from=$magazyn item="entry"}
  32.            <OPTION VALUE="{$entry.id|escape}">{$entry.nazwa_towaru|escape}</OPTION>
  33. {/foreach}
  34.      </td>
  35. </tr>
  36. <tr>
  37.      <td width="200" align="right" class="list"><b>Ilość sztuk:</b></td>
  38.      <td width="600" align="left" class="list"><input type="text" name="ilosc_sztuk" value="1" size="4"></td>
  39. </tr>
  40. <tr>
  41.      <td width="800" align="center" class="list" colspan="2"><input type="submit" value="Dodaj produkt do faktury"></td>
  42. </tr>
  43. <tr>
  44.      <td width="800" align="left" class="listtitle" colspan="2"></td>
  45. </tr>
  46. {foreach from=$smarty.post item="entry" key="key"}
  47. <input type="hidden" name="{$key}" value="{$entry}">
  48. {/foreach}
  49. </form>
  50. [snip]

Jakbyście mi mogli zasugerować co jest źle.

Ten post edytował tomekp 18.05.2006, 20:50:14
Go to the top of the page
+Quote Post
dyktek
post
Post #8





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


masz jakiś listing towarów w magazynie, wybierasz towar i przekazujesz jego id postem, wyjmujsz z bazy dane powiązane z tym id i zapisujesz je do tablicy $faktura[0] zrób coś takiego

  1. <?php
  2.  
  3. //..
  4.  
  5. //..
  6. $faktura[0] = $row;
  7. $_SESSION['faktura'] = $faktura[0];
  8.  
  9. ?>

w sesji masz juz tablice faktura i potem wyjmujesz ostatni klucz tablicy zwiekszasz o 1 i dodajesz kolejny produkt, wszędzie gdzie czytasz zmienne sesyjne dodaj session_start();
Go to the top of the page
+Quote Post
tomekp
post
Post #9





Grupa: Zarejestrowani
Postów: 171
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Krakół

Ostrzeżenie: (0%)
-----


Chodzi o to, czy można to zrobić bez sesji?
Go to the top of the page
+Quote Post
dyktek
post
Post #10





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


można przesyłając cały czas dane w ukrytych polach formularza lub cookie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:58