Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Źle przekazuje POST z bazy danych
palixmp
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


Witam.

Pruboje przekazac zmienna z bazy danych do następnej strony.

Mam taki kod:
  1. $i = 0;
  2.  
  3. while ($row = mysql_fetch_array($result)) {
  4. $color = ($i % 2) ? '#99CCCD' : '#96BCBD';
  5. echo '<tr style="background-color:'.$color.'"><td bgcolor="#98CD97"><font color=#006766>&nbsp;'.$row['Nazwa'] . '</td>';
  6. echo '<td><font color=#006766>&nbsp;' .$row['IloscSztuk'] . ' </td> ';
  7. echo '<td><font color=#006766>&nbsp;' .$row['IDArtykulu'] . ' </td> '; // tutaj pokazuje dobry id
  8. ?>
  9. <form action="pokaz_kosz.php5" method="post">
  10. <?php
  11. echo '<td>&nbsp; <input type="hidden" name="nowy" value="'.$row['IDArtykulu'] .'"><input type="submit" value="ZzZamow"> </td> ';
  12. ?>
  13. <form>
  14. <?php
  15. $i++; 
  16. }
  17. echo '</table>';
  18. }


natiomiast w zmiennej "nowy" na następnej stronie pokazuje najwyższy IDArtykulu jaki jest w bazie. Np mam 4 artykuly to on pokazuje 4 a nie ten co ma:( Dlaczego??
Go to the top of the page
+Quote Post
Pride
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 11
Dołączył: 31.01.2005
Skąd: Bydgoszcz

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


Nie rozumiem snitch.gif
Jeżeli masz 4 rzeczy w bazie to:
  1. <?php
  2. echo '<td><font color=#006766>&nbsp;' .$row['IDArtykulu'] . ' </td> ';
  3. ?>

wyświetli ci owe 4 wiersze z bazy.

Znowu na następną stronę przekaże ci tylko 1 wiersz dlatego, że masz tylko 1 input który zostanie wypełniony przy czwartym "obrocie" pętelki.


--------------------
Kto pyta - nie błądzi, kto szuka - znajduje.
Go to the top of the page
+Quote Post
palixmp
post
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


To jak zrobić, żeby przekazac do następnej strony IDArtykulu o danym numerze??

Bo to ma być taki koszyk na zakupy. Podam konkrenie:

Mam:
1 - dlugopis
2 - flamaster
3 - spinacz

i chce kupić flamaster, czyli IDArtykulu 2, klikam w tym rzędzie na przycisk Zamów. Więc co mam napisać, zeby do następnej strony przekazał sie IDArtykulu = 2 questionmark.gif

Bo pętla działa dobrze, bo w każdym wierszu pokazuje kolejny przedmiot z dobrym ID i dobrym opisem, więc nie kumam dlaczego w tym miejscu mi źle wskazuje:(

Ten post edytował palixmp 14.08.2008, 12:38:53
Go to the top of the page
+Quote Post
golaod
post
Post #4





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Najlepiej robić to na checkboxach.
Co do tego, że pokazuje tylko ostatnie id. No cóż
Tworzysz 4 input hidden o nazwie "name" ale przez php jest widoczny tylko $_POST['name'] OSTATNI czyli z numerem 4.
Chcesz znać wszystki to nadawaj unikalne nazwy.

Ten post edytował golaod 14.08.2008, 12:42:06
Go to the top of the page
+Quote Post
palixmp
post
Post #5





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


Ok ale:

Ja niemam czegoś takiego:
  1. <?php
  2. echo '<td><font color=#006766>&nbsp;' .$row['IDArtykulu'] . ' </td> ';
  3. ?>


tylko mam :

  1. <?php
  2. echo '<td><input type="hidden" name="nowy" value="'.$row['IDArtykulu'] .'"><input type="submit" value="ZzZamow"> </td> ';
  3. ?>


Wszystko jest w pętli, wartość czyli VALUE jest niby kolejny IDArtykulu, ale przekazuje wartośc największego i niewiem dlaczego? Wie ktoś moze jak przekazać wartośc tego IDArtykulu do następnej strony??

ODP dla golaod:
niemoge nadawac przeciez unikalnych nazw, bo jeśli dodam coś do bazy to musiał bym za każdym razem przeciez dodawac do kodu nastepną nazwę, to sie mija z celem.

Ten post edytował palixmp 14.08.2008, 12:52:06
Go to the top of the page
+Quote Post
golaod
post
Post #6





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Wyjaśnię Ci może po kolei. Twoja pętla tworzy 4 razy:
dwie komórki
form
ukryty input
przycisk submit
koniec form
I powtarza to aż 4 razy czyli masz 4 razy <form><input type="hidden" /><input type="submit" /></form>
Go to the top of the page
+Quote Post
palixmp
post
Post #7





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


No tak:) Ale to nie powinno być tak że w każdym wierszu klikając na ZAMÓW powinna sie przekazywac inna wartość??

Jeśli to jest całkiem źle, to może podpowiesz mi jak zrobić aby przy każdym wierszu byl taki przycisk że jeśli klikne ZAMÓW to do następnej strony przekaże mi wartość z odpowiedniego wiersza??
Go to the top of the page
+Quote Post
golaod
post
Post #8





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


W pętli robisz <input type="radio" value="id_artykulu" name="nazwa" />
Na końcu poza pętlą <input type="submit" value="Zamów" />
Oczywiście form też nie jest w pętli tylko początek przed pętlą a zamknięcie po pętli.
Lepiej moim zdaniem robić na checkboxach bo wtedy ludzie mogą więcej rzeczy na raz zamówić.
Go to the top of the page
+Quote Post
palixmp
post
Post #9





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


Jakto poza pętląquestionmark.gif

  1. <?php
  2. $i = 0;
  3.  
  4. while ($row = mysql_fetch_array($result)) {
  5. $color = ($i % 2) ? '#99CCCD' : '#96BCBD';
  6. echo '<tr style="background-color:'.$color.'"><td bgcolor="#98CD97"><font color=#006766>&nbsp;'.$row['Nazwa'] . '</td>';
  7. echo '<td><font color=#006766>&nbsp;' .$row['IloscSztuk'] . ' </td> ';
  8. echo '<td><font color=#006766>&nbsp;' .$row['IDArtykulu'] . ' </td> ';
  9.  
  10. echo '<td>&nbsp; <form action="pokaz_kosz.php5" method="post"><input type="hidden" name="nowy" value="'.$row['IDArtykulu'] .'"><input type="submit" value="ZzZamow"><form> </td> ';
  11.  
  12. $i++;
  13. ?>


Przeciez na początku nadaje $i=0 potem rozpoczytam pętle while i na stamym końcu dodaje $i++, więc ten formularz tez jest w pętli.

To moze nasz gdzies napisane jak to sie robi na tych checkboxach??
Go to the top of the page
+Quote Post
golaod
post
Post #10





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


A na co Ci to i w ogóle ?
Dobrze chcesz na checkboxach, ok.
  1. <?php
  2. $i = 0;
  3. echo '<form action="pokaz_kosz.php5" method="post">';
  4. while ($row = mysql_fetch_array($result)) {
  5. $color = ($i % 2) ? '#99CCCD' : '#96BCBD';
  6. echo '<tr style="background-color:'.$color.'"><td bgcolor="#98CD97"><font color=#006766>&nbsp;'.$row['Nazwa'] . '</td>';
  7. echo '<td><font color=#006766>&nbsp;' .$row['IloscSztuk'] . ' </td> ';
  8. echo '<td><font color=#006766>&nbsp;' .$row['IDArtykulu'] . ' </td> ';
  9.  
  10. echo '<td><input type="checkbox" name="nowy[]" value="'.$row['IDArtykulu'] .'"></td> ';
  11.  
  12. $i++;
  13. }
  14. echo '<input type="submit" value="ZzZamow">';
  15. echo '</form>';
  16. ?>

Dzięki temu w innym pliku do którego prowadzi formularz zostanie przekazana tablica nowy ze wszystkimi ID które ktoś zaznaczył, dzięki temu wiesz co chce kupić.

Ten post edytował golaod 14.08.2008, 13:27:46
Go to the top of the page
+Quote Post
Pride
post
Post #11





Grupa: Zarejestrowani
Postów: 139
Pomógł: 11
Dołączył: 31.01.2005
Skąd: Bydgoszcz

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


Popatrz, u ciebie to wygląda mniej więcej tak:
  1. <?php
  2.  
  3. $i=1;
  4. while($i<=4)
  5. {
  6. $input = $i;
  7. $i++;
  8. }
  9.  
  10. echo $input;
  11.  
  12. ?>

Widzisz co ci się wyświetli? smile.gif
Musisz to co wysyłasz wsadzić w tablicę a później za pomocą foreach() wyciągnąć wszystko smile.gif


--------------------
Kto pyta - nie błądzi, kto szuka - znajduje.
Go to the top of the page
+Quote Post
palixmp
post
Post #12





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


Zrobilem to rozwiązanie z checkbox-ami. Tylko jeszcze mam pytanie, jak zrobić żeby przekazać wartości np.

flamastry => 5

Chodzi mi o to zeby zrobić jeszcze pole gdzie będzie się wpisywalo liczbę sztuk. I żeby bylo wiadomo że chce 5 flamastró, albo 3 ołówki idt.

Wyświetlanie zrobiłem tak:

  1. <?php
  2. foreach($nowy as $klucz=>$wartosc)
  3. {
  4.  echo '$nowy['.$klucz.']='.$wartosc.'<br />';
  5.  }
  6. ?>


i wyświetla mi takie coś:
$nowy[0]=2
$nowy[1]=4

To super, rozumiem to;) Tylko jeszcze jak zrobić żeby zapisać np. flamastró 5 itd. bo niewiem jak sie dołącza żeby było połaczone z drugim, czyli IDArtykulu i IlośćSztuk. Prosił bym o podpowiedź.

Ten post edytował palixmp 14.08.2008, 17:46:16
Go to the top of the page
+Quote Post
-m-
post
Post #13





Goście







spróbuj tak
CODE
<?php
echo <<<EOT
<form method="POST" action="$_SERVER[PHP_SELF]">
<input type="checkbox" name="artykul[]" value="fl"/> Flamaster szt <input type="text" name="fl"/> <br/>
<input type="checkbox" name="artykul[]" value="sp"/> Spinasz szt <input type="text" name="sp"/><br/>
<input type="checkbox" name="artykul[]" value="dl"/> Długopis szt <input type="text" name="dl"/><br/>
<input type="submit" value="GO" />
</form>
EOT;
if (isset($_POST)) {
echo '<pre>';
print_r($_POST);
echo '</pre>';

}


?>

tylko jeszcze walidację wpisanych danych
Go to the top of the page
+Quote Post
palixmp
post
Post #14





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 19.07.2006

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


a pokazał by mi ktoś jak to zrobić, ale na bazie danych? A nie na stałych zmiennych typu "fl" i takich tam... Bo przeciez jak dodam nowy artykul to nie będę robił nowej zmiennej pytu np. dla spinacza skrot 'spi'.

Aha, no i sorrki za pytanie, ale co to jet to <pre> i EOT bo niemoge znaleź wytłumaczenia co to jest sad.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 20:28