Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]problem z formularzem
Forum PHP.pl > Forum > Przedszkole
odeuszsiwy
Moim problemem jest to że chcę uzyskać listę tych 4 produktów

produkt 1 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 2 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 3 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 4 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"


i teraz chciałbym po tym kliknięciu na "kupuj" by zostało wykonane polecenie do bazy danych



zrobiłem jak mi polecił moderator. Już wygląda nieźle ale nadal mi coś nie działa.
by sprawdzić czy działa zrobiłem takie coś


  1. mysql_query("update players set zakup='$id' where id=$stat[id]");
  2. mysql_query("update players set sztuk=sztuk+$kup where id=$stat[id]");



by zapisało mi zakup czyli nazwa tego produktu a w rubryce sztuk ilość jaką wybrałem w inpucie ale niestety nie działa;/

domyślam się że chodzi o to że są dwie nazwy id i kup. i może dlatego przycisk kupuj nie działa.


  1. <?php
  2.  
  3. // petla z produktami
  4. $query = mysql_query("select * from tools where typ='M' and owner=0 order by cena asc" );
  5.  
  6. while($row = mysql_fetch_array($query)) : ?>
  7.  
  8. <form method="post" action="sik_medyk.php">
  9.  
  10. <input type="hidden" name="id" value="<?php echo $row['name'] ?>"> <?php print " $row[name] "?>
  11. <!-- musimy wiedziec co kupuje -->
  12.  
  13.  
  14.  
  15. <?php
  16.  
  17. echo '<select name="kup">';
  18.  
  19. for($i=1; $i<101; $i++){
  20.  
  21. echo '<option value="'.$i.'">'.$i.'</option>' ;
  22.  
  23. }
  24.  
  25.  
  26.  
  27.  
  28.  
  29. ?> <!-- ilosc jaka kupuje -->
  30.  
  31. </select>
  32.  
  33. <input type="submit" value="kupuj"/>
  34.  
  35. </form>
  36.  
  37.  
  38. <?php endwhile; ?>
  39.  
  40.  
  41. <?php
  42. if ($_GET[action] == kup) {
  43.  
  44.  
  45. mysql_query("update players set zakup='$id' where id=$stat[id]");
  46. mysql_query("update players set sztuk=sztuk+$kup where id=$stat[id]");
  47.  
  48.  
  49.  
  50. }
  51. ?>





i koniec:)





****************

Tutaj jest treść mojego zapytania które napisałem na początku tego wątku



**********************************

Ponieważ jestem dopiero początkujący to by każdy mnie zrozumiał postanowiłem podzielić co mam na mysli na części.

Moja prośba to pomoc jak połączyć tą pętlę z tym formularzem wyboru od 1 do 101??


- mam tabelę player i to $stat to jest odniesienie do niej
- podaję tutaj jeszcze jak zrobiłem tabele tool
- chcę uzyskać pętlę ( II ) by rozwineły mi się te 4 produkty a przy każdym pokazał się formularz rozwijany od 1 do 101 z możliwością kupna.
- IV częśc jaką wykombinowałem , by do bazy danych sie zapisało ilość własnie tego od 1 do 101 sztuk.



Moim problemem jest to że chcę uzyskać listę tych 4 produktów

produkt 1 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 2 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 3 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 4 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"


i teraz chciałbym po tym kliknięciu na kup by zostało wykonane polecenie do bazy danych

zapisanie w bazie danych kupno produktu 1 w sztukach 44...






I
*******************************************
  1. CREATE TABLE `tool` (
  2. `id` int(11) NOT NULL auto_increment,
  3. `owner` int(11) NOT NULL default '0',
  4. `typ` varchar(11) NOT NULL default 'N',
  5. `name` varchar(111) NOT NULL default '',
  6. `cena` int(11) NOT NULL default '0',
  7. `ilosc` int(11) NOT NULL default '0',
  8.  
  9. INSERT INTO `tool` VALUES (13, 0, 'M', 'produkt1', 1, 0);
  10. INSERT INTO `tool` VALUES (14, 0, 'M', 'produkt2', 2, 0);
  11. INSERT INTO `tool` VALUES (15, 0, 'M', 'produkt3', 3, 0);
  12. INSERT INTO `tool` VALUES (16, 0, 'M', 'produkt4', 4, 0);

**********************************************************
II
  1. $tools1 = mysql_query("select * from tool where typ='M' and owner=0 order by cena asc" );
  2. while ($tool = mysql_fetch_array($tools1)) {
  3.  
  4.  
  5. print "<tr><td>$tool[name]</td><td></td><td>$tool[cena]</td><td></td><td>- <A href=sik_medyk.php?buy=$tool[id]>Kup</a></td></tr>";
  6. }
  7. print "</table>";

}

************************************
III
  1. <form method=post action=sklep.php?action=kupowanie>
  2.  
  3. <?
  4. echo '<select name="kup">';
  5.  
  6. for($i=1; $i<101; $i++){
  7. echo '<option value="'.$i.'">'.$i.'</option>' ;
  8. }
  9.  
  10. echo '</select>';
  11.  
  12. ?>
  13.  
  14. <input type="submit" value="Kup">
  15. </form>

**************************************************
IV

  1. if ($_GET[action] == kupowanie) {
  2. {
  3.  
  4.  
  5.  
  6.  
  7. if ($_POST[kup] > $stat[pieniadze] || $_POST[kup] <= 0) {
  8. print "Nie mozesz tego zrobić.";
  9.  
  10. }
  11.  
  12. mysql_query("update player set ilosc=ilosc+$_POST[kup] where id=$stat[id]");
  13. print "kupiłeś $_POST[kup] sztuk produktu.";
  14. }
  15.  
  16. else
  17. {
  18. }


Widzę że nikt nie potrafi mi pomóc.

Ale nikt nie pisze w czym problem;/ czy ja źle zadałem pytanie czy jak?questionmark.gif
strife
Proszę o stosowanie BB Code, tym razem poprawiam. Dodatkowo przenoszę na Przedszkole.

Cytat
- chcę uzyskać pętlę ( II ) by rozwineły mi się te 4 produkty a przy każdym pokazał się formularz rozwijany od 1 do 101 z możliwością kupna.

No z tego co widzę to taką pętlę już masz. >

Cytat
Widzę że nikt nie potrafi mi pomóc.

Ale nikt nie pisze w czym problem;/ czy ja źle zadałem pytanie czy jak?

Problem polega na tym, że nie zadałeś pytania z czym masz problem i w jaki sposób możemy Ci pomóc. Trochę nie jasno to opisałeś dodatkowo umieściłeś temat w złym forum (MySQL) i nie dodałeś BB Code co mogło spowodować brak odpowiedzi smile.gif

Napisz dokładnie w czym konkretnie masz problem, z czym sobie nie radzisz, co Ci się nie udaje zrobić, tylko konkretnie, wtedy będzie nam łatwiej Ci pomóc.
croc
Tę część z for od 1 do 101 musisz wrzucić do wnętrza while ($tool = mysql_fetch_array($tools1)).
odeuszsiwy
Ok, przepraszam bardzo.

Moim problemem jest to że chcę uzyskać listę tych 4 produktów

produkt 1 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 2 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 3 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"
produkt 4 - tutaj powinna być ten form od 1 do 101 | i teraz ten przycisk "kup"


i teraz chciałbym po tym kliknięciu na kup by zostało wykonane polecenie do bazy danych

zapisanie w bazie danych kupno produktu 1 w sztukach 44...


strife
No ok to masz poglądowy kod, na którym możesz się podeprzeć:

  1. <?php
  2. // petla z produktami
  3. while($row = mysql_fetch_array($query)) : ?>
  4. <form method="post" action="kupuj.php">
  5. <input type="hidden" name="id" value="<?php echo $row['id'] ?>" /> <!-- musimy wiedziec co kupuje -->
  6. <select name="ile">
  7. <?php // tutaj bedziesz mial petle z Twojego punktu 3, z option'ami ?> <!-- ilosc jaka kupuje -->
  8. </select>
  9. <input type="submit" value="kupuj" />
  10. </form>
  11. <?php endwhile; ?>


Dla sprawdzenia w pliku wynikowym (kupuj.php), możesz sobie takim kodem wyświetlić przesłane dane, które potem możesz łatwo obrobić:

  1. echo "<pre>";
  2. var_export($_POST);
  3. echo "</pre>";
odeuszsiwy
Ok, zrobiłem ale nadal mi coś nie działa.
ale by sprawdzić czy działa zrobiłem takie coś


  1. mysql_query("update players set zakup='$id' where id=$stat[id]");
  2. mysql_query("update players set sztuk=sztuk+$kup where id=$stat[id]");



by zapisało mi zakup czyli nazwa tego produktu a w rubryce sztuk ilość jaką wybrałem w inpucie ale niestety nie działa;/

domyślam się że chodzi o to że są dwie nazwy id i kup. i może dlatego przycisk kupuj nie działa.


  1. <?php
  2.  
  3. // petla z produktami
  4. $query = mysql_query("select * from tools where typ='M' and owner=0 order by cena asc" );
  5.  
  6. while($row = mysql_fetch_array($query)) : ?>
  7.  
  8. <form method="post" action="sik_medyk.php">
  9.  
  10. <input type="hidden" name="id" value="<?php echo $row['name'] ?>"> <?php print " $row[name] "?>
  11. <!-- musimy wiedziec co kupuje -->
  12.  
  13.  
  14.  
  15. <?php
  16.  
  17. echo '<select name="kup">';
  18.  
  19. for($i=1; $i<101; $i++){
  20.  
  21. echo '<option value="'.$i.'">'.$i.'</option>' ;
  22.  
  23. }
  24.  
  25.  
  26.  
  27.  
  28.  
  29. ?> <!-- ilosc jaka kupuje -->
  30.  
  31. </select>
  32.  
  33. <input type="submit" value="kupuj"/>
  34.  
  35. </form>
  36.  
  37.  
  38. <?php endwhile; ?>
  39.  
  40.  
  41. <?php
  42. if ($_GET[action] == kup) {
  43.  
  44.  
  45. mysql_query("update players set zakup='$id' where id=$stat[id]");
  46. mysql_query("update players set sztuk=sztuk+$kup where id=$stat[id]");
  47.  
  48.  
  49.  
  50. }
  51. ?>
strife
Popełniłeś kilka podstawowych błędów:

1. Daj gdzieś na początku pliku sik_medyk.php:

  1. echo "<pre>";
  2. var_export($_POST);
  3. echo "</pre>";


Aby sprawdzić czy otrzymujemy poprawne dane i jakie.

2. Warunek:

  1. if ($_GET[action] == kup) {

Jest źle napisany, powinno być if ($_GET['action'] == 'kup') { jeśli już, ale to i tak Ci nigdzie nie przejdzie bo wysyłasz dane metodą POST, a nie GET, to jest dla Ciebie kluczowa wskazówka. Przydadzą Ci się również konstrukcje isset bądź empty.

3. Żeby sprawdzić czy warunek Ci działa wypluj coś na ekran (echo 'dziala warunek!'), czy tego typu konstrukcje, bo to co napisałeś nie powie nam kompletnie NIC, o tym czy warunek jest spełniony. Dodatkowo podpowiem Ci, że tego typu zapytania wyplują błędy zainteresuj się mysql_error.

To tyle kombinuj, bo nikt Ci tutaj gotowca nie napisze smile.gif
odeuszsiwy
Dziękuję za porady:) W sumie działa, ładnie i wychwytuje błędy zastosowałem empty:)

tylko takie krótkie pytania

  1. if ($_GET['action'] == 'kup' ) { musi być ' '? wsumie działa bez tego



Tutaj zastosowałem $post jak mówiłeś ale czy powinno być post czy też może być $id bo tak i tak działa?



  1. if ($_GET['action'] == 'kup' ) {
  2. $arm = mysql_fetch_array(mysql_query("select * from tools where id='$_POST[id]'"));





  1.  
  2. <?php
  3.  
  4.  
  5. // petla z produktami
  6. $query = mysql_query("select * from tools where typ='M' and owner=0 order by cena asc" );
  7.  
  8. while($arm = mysql_fetch_array($query)) : ?>
  9.  
  10. <form method=post action=sik_medyk.php?action=kup>
  11.  
  12. <input type="hidden" name="id" value="<?php echo $arm['id'] ?>"> <?php print " $arm[name] "?>
  13. <!-- musimy wiedziec co kupuje -->
  14.  
  15.  
  16.  
  17. <?php
  18.  
  19. echo '<select name="ile">';
  20.  
  21. for($i=1; $i<101; $i++){
  22.  
  23. echo '<option value="'.$i.'">'.$i.'</option>' ;
  24.  
  25. }
  26.  
  27.  
  28.  
  29.  
  30.  
  31. ?> <!-- ilosc jaka kupuje -->
  32.  
  33. </select>
  34.  
  35. <input type="submit" value="kupuj" >
  36.  
  37. </form>
  38.  
  39.  
  40. <?php endwhile; ?>
  41.  
  42.  
  43. <?php
  44.  
  45. print "$id $ile";
  46.  
  47. if ($_GET['action'] == 'kup' ) {
  48. $arm = mysql_fetch_array(mysql_query("select * from tools where id='$_POST[id]'"));
  49.  
  50. if (empty ($arm[id])) {
  51. print "No such armor. Go back to the <a href=sik_medyk.php>shop</a>.";
  52.  
  53. }
  54. if ($arm[typ] != M) {
  55. print "To nie ten dział <a href=tool.php>sklep</a>.";
  56.  
  57. }
  58. if ($stat[schowek] >= $stat[max_schowek]) {
  59. print "masz problem z koszykiem <a href=sik_medyk.php>sklep</a>.";
  60.  
  61. }
  62. if ($arm[cena] > $stat[credits]) {
  63. print " Nie możesz tego kupić, brak środków <a href=sik_medyk.php>sklep</a>.";
  64.  
  65. }
  66. $newcost = ceil($arm[cost] * .75);
  67. mysql_query("insert into skrzynia (owner, typ, name, moc, cena, rodzaj) values($stat[id],'$arm[typ]','$arm[name]',$arm[moc],$newcost,'$arm[rodzaj]' )") or die("Nie można zakupić");
  68. print " Zapłaciłeś <b>$arm[cena]</b> , i kupiłeś <b>$arm[name] +$arm[power]</b> weapon. <a href=sik_medyk.php>wstecz</a>";
  69.  
  70.  
  71. mysql_query("update players set credits=credits-$ile where id=$stat[id]");
  72. mysql_query("update players set schowek=schowek+1 where id=$stat[id]");
  73.  
  74. }else{
  75. }
  76.  
  77.  
  78.  
  79.  
  80. ?>
  81.  
strife
Hej,

$_GET charakteryzuje się tym, że zmienne zostają przekazywane poprzez url, czyli tak jak zrobiłeś to w:

  1. <form method=post action=sik_medyk.php?action=kup>

Więc można używać dwóch metod jednocześnie, nic nie stoi na przeszkodzie. Natomiast problem pojawi się, gdy przejdziesz bezpośrednio na adres z action, pojawią się błędy. No i pamiętaj korzystać z cydzysłowiów, czyli konstruować tak, htmla:

  1. <form method="post" action="sik_medyk.php?action=kup">


Pzdr.
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.