Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Post nie działa w jednym formularzu
iqique
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 2.03.2011

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


Witam. Proszę o podpowiedź. Mam dwa formularze w zasadzie identyczne. Zmieniłem w drugim tylko nazwy zmiennych i przestał działać. Chciałbym zrozumieć dlaczego. Analizowałem to przez dwie godziny i nie pojmuję. Co może powodować to, że nie wysyła się POST z drugiego formularza? Po kliknięciu wykonaj w drugim przypadku strona się tylko przeładowuje.


  1. <?
  2. $towar=$_POST[towar];
  3. $towar1=$_POST[towar1];
  4. $cena=$_POST[cena];
  5. $towar2=$_POST[towar2];
  6. $cena2=$_POST[cena2];
  7. ?>
  8.  
  9.  
  10. <div style="width:160px;border:solid 0px black;">
  11. <div style="padding-bottom:5px;">Ustalanie ceny:</div>
  12. <?php
  13.  
  14. echo "<form action='magazyn.php' method=post>";
  15.  
  16. echo "<br>";
  17. echo "Towar <input style=width:75px; type=text name='towar1'>";
  18. echo "<br>";
  19. echo "Cena <input style=width:75px;margin-left:8px; autocomplete=off type=text name='cena'>";
  20. echo "<br>";
  21. echo "<input style=margin-left:60px;margin-top:4px; type=submit value='Wykonaj'>";
  22. echo "</form>";
  23.  
  24. ?>
  25. </div>
  26.  
  27. <?
  28. if($_POST[cena]){
  29. $odpowiedz1 = mysql_query("update ceny set $towar1=$cena WHERE nrkonta = '$nrkonta';");}
  30.  
  31. ?>
  32.  
  33. <div style="width:160px;border:solid 0px black;">
  34. <div style="padding-bottom:5px;">Ustalanie ceny2:</div>
  35. <?php
  36.  
  37. echo "<form action='magazyn.php' method=post>";
  38.  
  39. echo "<br>";
  40. echo "Towar <input style=width:75px; type=text name='towar2'>";
  41. echo "<br>";
  42. echo "Cena2 <input style=width:75px;margin-left:8px; autocomplete=off type=text name='cena2'>";
  43. echo "<br>";
  44. echo "<input style=margin-left:60px;margin-top:4px; type=submit value='Wykonaj'>";
  45. echo "</form>";
  46.  
  47. ?>
  48. </div>
  49.  
  50. <?
  51.  
  52. if($_POST[cena2]){
  53. $odpowiedz2 = mysql_query("update ceny set $towar2=$cena2 WHERE nrkonta = '$nrkonta';");}
  54.  
  55. ?>
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


w $_POST[towar] itd brakuje ' '
Go to the top of the page
+Quote Post
iqique
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 2.03.2011

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


Niestety niczego to nie zmieniło. Pierwszy formularz działa. Drugi nie.
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. <form action='magazyn.php' method=post> // 'post'
  2.  
  3. <input style=width:75px;margin-left:8px; autocomplete=off type=text name='cena2'>
  4. <input style=margin-left:60px;margin-top:4px; type=submit value='Wykonaj'>

Od kiedy inputa tak się robi?

  1. <input type="text" name="cena2">
  2. <input type="submit" value="Wykonaj">


  1. if($_POST[cena])

robisz takie bledy, ze szok
Go to the top of the page
+Quote Post
com
post
Post #5





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


pamiętaj o "" bo bez tego nie będzie Ci działać... up może tak ale jak wrzuci to do odpowiednich "" choć style powinno się określać klasa lub po id (IMG:style_emoticons/default/smile.gif)

  1. $odpowiedz2 = mysql_query("update ceny set $towar2=$cena2 WHERE nrkonta = '$nrkonta';");}


$towar2=$cena2 czegoś takiego nie ma w sql (IMG:style_emoticons/default/smile.gif) sądzę że $towar2=$cena2 nie masz kolumny o nazwie z zmiennej towar2 ale może się mylę, tak to powinienem napisać sory (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 1.12.2013, 23:04:06
Go to the top of the page
+Quote Post
iqique
post
Post #6





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 2.03.2011

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


Poprawiłem to na co mi zwróciliście uwagę i kod wklejam poniżej. Pierwszy form działa, drugi dalej nie. Wydaje mi się, że problem jest ze zmiennymi przesyłanymi postem w drugim formularzu. Nie m dlaczego nie działają. Kiedy je zamienię z jednego formularza do drugiego wtedy pierwszy nie działa, a drugi tak. Bez problemu podmienia wpis w bazie. Używam styli w kodzie bo tak mi wygodniej na szybko coś przesunąć. Normalnie używam class.

  1.  
  2.  
  3. <?
  4. $towar=$_POST['towar'];
  5. $towar1=$_POST['towar1'];
  6. $cena=$_POST['cena'];
  7. $towar2=$_POST['towar2'];
  8. $cena2=$_POST['cena2'];
  9. ?>
  10.  
  11.  
  12. <div style="width:160px;border:solid 0px black;">
  13. <div style="padding-bottom:5px;">Ustalanie ceny:</div>
  14. <form action='magazyn.php' method='post'>
  15. Towar <input type='text' name='towar1'>
  16. Cena <input autocomplete='off' type='text' name='cena'>
  17. <input type='submit' value='Wykonaj'>
  18. </form>
  19. </div>
  20. <?
  21. if($_POST['cena']){
  22. $odpowiedz1 = mysql_query("update ceny set $towar1=$cena WHERE nrkonta = $nrkonta;");}
  23. ?>
  24.  
  25. <div style="width:160px;border:solid 0px black;">
  26.  
  27. <div style="padding-bottom:5px;">Ustalanie ceny2:</div>
  28. <form action='magazyn.php' method='post'>
  29. Towar <input type='text' name='towar2'>
  30. Cena2 <input autocomplete='off' type='text' name='cena2'>
  31. <input type='submit' value='Wykonaj'>
  32. </form>"
  33.  
  34. </div>
  35. <?
  36. if($_POST['cena2']){
  37. $odpowiedz2 = mysql_query("update ceny set $towar2=$cena2 WHERE nrkonta = $nrkonta;");}
  38. ?>
  39.  
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1)
zrob
print_r($_POST);
a bedziesz widzial co idzie a co nie, NIe ma co zgadywac :/

2) Uzywasz zmiennej $nrkonta ktorej nigdzie nie widze

3) Sprawdz czy nie ma bledow bazy.....
Temat: Jak poprawnie zada pytanie


Twoj problem sprowadza sie do prostej analizy danych i zamiast to zrobic to lecisz na forum.
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie do końca się zastosowałeś
  1. $odpowiedz1 = mysql_query("update ceny set $towar2=$cena2 WHERE nrkonta = $nrkonta;");}

Cytat(com @ 1.12.2013, 19:43:00 ) *
$towar2=$cena2 czegoś takiego nie ma w sql (IMG:style_emoticons/default/smile.gif)

Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Turson a co ci tu nie pasuje? Nie slyszales ze nazwe kolumny tez mozna przekazac do tekstu budujacego zapytanie tak samo jak jej wartosc?
Go to the top of the page
+Quote Post
Turson
post
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Najpierw pomyślałem, że autor po prostu niepotrzebnie wstawił znak dolara i nie chciało mi się wierzyć, że kolumna nazywa się `$towar`, ale dopiero teraz widzę, że cena update'owana w zależności od danych z formularza, więc ok (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
iqique
post
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 2.03.2011

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


Zrobiłem jak nospor polecił. Post jest wysyłany z formularza, ale nie jest przypisywany do zmiennych $towar2=$_POST['towar2'] i $cena2=$_POST['cena2']. Zmienna $nrkonta jest zdefiniowana na samym początku. Nie rozumiem dlaczego działa w pierwszym przypadku.
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale nie jest przypisywany do zmiennych $towar2=$_POST['towar2'] i $cena2=$_POST['cena2'].
Tak, tak, oczywiscie..... i wlasnie przed 5cioma minutami zniknela grawitacja na ziemi (IMG:style_emoticons/default/wink.gif)

var_dump($towar2);
pokazuje? Pokazuje. Jezeli nie pokazuje, znaczy ze
1) $_POST['towar2'] nie ma nic
2) W zlym miejscu to sprawdzasz. zamiast po przypisaniu, to robisz to przed.
3) Podales nam nie caly kod i nie widzimy wszystkich bledow jakich robisz
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


a co ma kolumnę o nazwie $_POST['towar2'] ? bo nie wydaje mi się dlatego na to zruciłem uwagę, on ma przecież ustawić dla tej wartości, a nie kolumny o nazwie jablko , tylko raczej towar (IMG:style_emoticons/default/wink.gif)

no chyba ze tak własnie ma i wy to wiecie bo ja tego np nie wiem (IMG:style_emoticons/default/wink.gif)

pomijając fakt że nad takim rozwiązaniem trudno o kontrole (IMG:style_emoticons/default/wink.gif) bo to że tak sie da to ja wiem, nie wyraziłem się tam jasno, tzn mój skrót myślowy został źle odebrany...

Ten post edytował com 1.12.2013, 23:31:22
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@com naprawde nie widzisz obok pola CENA2:
Towar <input type='text' name='towar2'>
(IMG:style_emoticons/default/questionmark.gif) Poza tym pobiera ją wyraźnie z posta, poza tym pierwszy form mu dziala a ma tak samo zrobione.... to sie nazywa kojarzenie faktow (IMG:style_emoticons/default/wink.gif)

A to ze o kontrole trudno to inna bajka, ktora nie jest tutaj omawiana.
Go to the top of the page
+Quote Post
iqique
post
Post #15





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 2.03.2011

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


Na początek chciałem podziękować za poświęcony czas. Uczę się php sam i z doskoku czasami, ale lubię to (IMG:style_emoticons/default/smile.gif) Zastosowałem się do rad nospor i faktycznie dane z post są przypisywane do zmiennych. W złym miejscu to sprawdzałem. Mimo to kod nie działa. Uprościłem go maksymalnie i wklejam poniżej cały plik. Odkryłem, że problemem jest chyba pętla rysująca tabelę z bazy. Kiedy ją wytnę formularz robi wpisy w bazie bez problemu. Co może to powodować?

  1.  
  2. <?php
  3. $nrkonta=$_SESSION['nrkonta'];
  4. include("includes/check.php");
  5. include("includes/baza.php");
  6.  
  7. if($_POST['wybor1']=='maga'){$wybor1='magazyn';}
  8. if($_POST['wybor1']=='skle'){$wybor1='sklep';}
  9. $cena=$_POST['cena'];
  10. $towar=$_POST['towar'];
  11.  
  12. $kom1="witamy";
  13.  
  14. ?>
  15.  
  16. <div class="cala">
  17. <div class="lewa">
  18.  
  19. <?php
  20. include("includes/info.php");
  21. include("includes/menumagazyn.php");
  22. ?>
  23.  
  24. </div>
  25.  
  26. <div class="srodek">
  27.  
  28. <div style="border:solid 0px black;">
  29.  
  30. <?php // część odpowiedzialna za zapamiętywanie kierunku transferu towarów
  31. if($_SESSION['ref']==1){$wybor1=sklep; $_SESSION[ref]='';}
  32. if($_SESSION['ref']==2){$wybor1=magazyn; $_SESSION[ref]='';}
  33.  
  34.  
  35. ?>
  36. <form action='magazyn.php' method='post'>
  37. <select name='wybor1'>
  38. <option value='start' name='start'>Wyświetl stan:</option>
  39. <option value='magazyn' name='maga'>Magazynu</option>
  40. <option value='sklep' name='skle'>Sklepu</option>
  41. </select>
  42. <input style=margin-left:60px;margin-top:4px; type='submit' value='Wykonaj'>
  43. </form>
  44.  
  45. </div>
  46.  
  47.  
  48. <br>
  49. <div id="srodek-lewa" style="float:left;border:solid 0px black;">
  50.  
  51. <? //pętla wyświetlająca zawartość magazynu
  52.  
  53. if(empty($_POST['wybor1']) and empty($_POST['wybor']) and empty($wybor1) and empty($_POST['cena'])){echo $kom1; exit();}
  54. if($wybor1==start){echo $kom1; exit();} // wyświetla komunikat poczatkowy
  55.  
  56. if(!empty($wybor1)){echo 'Aktualny stan:';
  57. if($wybor1=='magazyn'){echo 'Magazynu';}
  58. if($wybor1=='sklep'){echo 'Sklepu';}
  59.  
  60. echo '<br>';
  61. echo '<br>';
  62.  
  63. $resResult1 = mysql_query( "SELECT * FROM $wybor1 where nrkonta=$nrkonta" );
  64. $arrRow1 = mysql_fetch_array( $resResult1, MYSQL_ASSOC );
  65. ksort($arrRow1);
  66.  
  67. echo '<table style="float: left; width: 400px;">';
  68. echo '<tr>';
  69. foreach( $arrRow1 as $strKey1 => $strValue1)
  70. {
  71. if(($strKey1 != 'id') and ($strKey1 != 'nrkonta') and ($strValue1 != 'id') and ($strValue1 != 'nrkonta') and (!empty($strValue1)))
  72. {
  73.  
  74.  
  75. $resResult = mysql_query( "SELECT $strKey1 FROM ceny where nrkonta=$nrkonta" );
  76. $arrRow = mysql_fetch_array($resResult);
  77. $x=$arrRow["$strKey1"];
  78.  
  79. echo "<tr><td style=padding-bottom:11px;>$strKey1:</td>";
  80. echo "<td style=padding-bottom:11px;>$strValue1</td>";
  81. echo "<td style=padding-bottom:11px;>$x $waluta</td></tr>";
  82. }
  83.  
  84. }
  85. echo '</tr>';
  86. echo '</table>';
  87. }
  88. ?>
  89. </div>
  90.  
  91. <div id="srodek-prawa" style="border:solid 0px black;float:right;">
  92.  
  93. <div style="width:160px;border:solid 0px black;">
  94. <div style="padding-bottom:5px;">Ustalanie ceny:</div>
  95. <form action='magazyn.php' method='post'>
  96. <input type='text' name='towar'>
  97. <input autocomplete='off' type='text' name='cena'>
  98. <input type='submit' value='Wykonaj'>
  99. </form>
  100. </div>
  101. <?
  102. if(!empty($_POST['cena'])){$cena = str_replace(',', '.', $cena);}
  103. if($_POST['cena']){
  104. if($wybor1==sklep){$_SESSION['ref']=2;}else{$_SESSION['ref']=1;}
  105. $odpowiedz4 = mysql_query("update ceny set $towar = $cena WHERE nrkonta = $nrkonta;");
  106. header("Location: magazyn.php");
  107. }
  108. ?>
  109. </div>
  110. </div>
  111. </div>
  112.  
  113.  
  114.  
  115.  
  116. </body>
  117. </html>
  118.  
  119.  
Go to the top of the page
+Quote Post
Turson
post
Post #16





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. $_SESSION[ref]
  2. $_SESSION[ref]

znowu brakuje "

  1. <input style=margin-left:60px;margin-top:4px; type='submit' value='Wykonaj'>

style umieśc w "

  1. if(empty($_POST['wybor1']) and empty($_POST['wybor']) and empty($wybor1) and empty($_POST['cena'])){echo $kom1; exit();}

coś mi się tu wydaje, że powinno być OR (||) a nie AND. Gdy user nie uzupełni któregoś z pól raczej powinno się zatrzymać skrypt

  1. if($wybor1==start)

Masz stałą start bo nie widziałem nigdzie deklaracji. Umieść też w uszkach, a do tego === zamiast ==
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@iqique włacz wkoncu odrobine samodzielnosci :/

Podalem ci co masz robic, podalem ci linka do tematu, ktory to wszystko wyjasnia. Czy naprawda za kazdym razem trzeba ci pisac: a teraz wez sprawdz czy ta zmienna jest ustawiona czy nie?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)

Mowisz ze nie wykouje ci sie update. On jest w warunku. Zobacz, czy warunek jest spelniony, jesli tak, zobacz jak wyglada wygeneroane zapytanie, zobacz czy zapytanie nie rzuca bledem. Ile razy mozna to samo powtarzarzac ?
Go to the top of the page
+Quote Post
com
post
Post #18





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


nospor
Dalej się nie rozumiemy, wiec wyjaśnię to łopatologicznie:
przykładowa składnia Update:
UPDATE table_name SET column1=value1,...WHERE ....;

column1 - musi być nazwą kolumny z bazy danych, wiec jak w input podam jabłko to takiej kolumny mi nie znajdzie, bo w bazie mam kolumnę towar a w niej rekord o wartości jablko a nie milion kolumn o nazwach towarów, bo jeśli tak ma autor to znaczy ze ma źle zaprojektowaną bazę.. Z czym na pewno się zgodzisz..

dlatego też sie poprawiłem w tamtym poście żeby nie było wątpliwości :
Cytat
sądzę że $towar2=$cena2 nie masz kolumny o nazwie z zmiennej towar2 ale może się mylę, tak to powinienem napisać sory wink.gif
Go to the top of the page
+Quote Post
Turson
post
Post #19





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


ba, bo jest wręcz niebezpieczne, jeśli użytkownik może dać update kolumny jakiej chce, bo wystarczy, że poda ją w formularzu
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: 18.09.2025 - 10:36