Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] UPDATE się nie wykonuje
Forum PHP.pl > Forum > PHP
banki
Witam, siedzę nad tym już trochę czasu, nie mam pojęcia dlaczego dane się nie aktualizują.

dopiero się uczę php i nie widzę gdzie jest coś nie tak. na podobnej podstawie robię dodawanie danych do bazy i działa bez zarzutu.

wrzucam kod całego pliku bo nei wiem gdzie może być błąd i który fragment z góry odrzucić. Proszę o jakieś rady


  1. <?
  2.  
  3. include "../../affconfig.php";
  4. include "../lang/$language";
  5.  
  6. if(!aff_admin_check_security())
  7. {
  8. aff_redirect('index.php');
  9. }
  10.  
  11. include "header.php";
  12.  
  13. // protection against script injection
  14. $change = preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['change']);
  15. mysql_connect($server, $db_user, $db_pass) or die ("Database CONNECT Error (line 17)");
  16. $errorMsg = '';
  17. ?>
  18. <br />
  19. <form method=post action=zmien.php>
  20. <table border=0 cellspacing=0 cellpadding=0 align=center>
  21. <tr align=center valign=middle>
  22. <td width=280><font face=Arial, Helvetica, sans-serif>Szczegóły sprzedaży użytkownika</font></td>
  23. <td width=70>
  24. <select name=change>";
  25. <?
  26. mysql_connect($server, $db_user, $db_pass)
  27. or die ("Database CONNECT Error (line 29)");
  28.  
  29. $result = mysql_db_query($database, "select * from affiliates")
  30. or die ("Database Error");
  31.  
  32. if (mysql_num_rows($result))
  33. {
  34. while ($qry = mysql_fetch_array($result))
  35. echo "<option value=".$qry['refid']." ".($change == $qry['refid'] ? 'selected' : '').">".$qry[refid]."</option>";
  36. print "</select>";
  37. }
  38. ?>
  39. </td>
  40. <td width=50>
  41. <p>
  42. <input type=submit value=<?=AFF_G_SHOW?>>
  43. </p>
  44. </td>
  45. </tr>
  46. </table>
  47. </form>
  48.  
  49. <?
  50. mysql_connect($server, $db_user, $db_pass) or die ("Database CONNECT Error");
  51. $errorMsg = '';
  52.  
  53.  
  54. if($_POST['commited'] == 'yes')
  55. {
  56.  
  57.  
  58.  
  59.  
  60. mysql_db_query($database, "UPDATE sales SET refid = '".$_POST['refid']."', date = '".$_POST['date']."', date_end = '".$_POST['date_end']."', date_kasa = '".$_POST['date_kasa']."', payment = '".$_POST['payment']."', wartosc = '".$_POST['wartosc']."', prowizja = '".$_POST['prowizja']."', usluga = '".$_POST['usluga']."', usluga2 = '".$_POST['usluga2']."', usluga3 = '".$_POST['usluga3']."', klient = '".$_POST['klient']."', klients = '".$_POST['klients']."', osoba = '".$_POST['osoba']."', tel = '".$_POST['tel']."', mail = '".$_POST['mail']."', adres = '".$_POST['adres']."', status = '".$_POST['status']."', info = '".$_POST['info']."' WHERE refid = '$change'")
  61. or die ("Database INSERT sss Error");
  62. echo "<br><p align=center><font color=#009900>".AFF_D_CHANGED."</font></p>";
  63. }
  64.  
  65.  
  66.  
  67. $result = mysql_db_query($database, "select * from sales where refid = '$change' ORDER BY date")
  68. or die ("Database Error");
  69.  
  70.  
  71. print "<br><br><font face=arial>Przekazanych <b>".mysql_num_rows($result)."</b> przez <b>".$change."</b> <b></b><br><br>";
  72.  
  73. if (mysql_num_rows($result))
  74. {
  75. print "<font face=arial><TABLE border=1 cellspacing=0 cellpadding=3 align=center>";
  76. print "<TR><TH align='center' width='130'>Polecający</TH><TH align='center' width='160'>".AFF_G_DATE."</TH>";
  77. print "<TH width='120' align='center'>Firma</TH>";
  78. print "<TH width='240' align='center'>Usługa</TH>";
  79. print "<TH width='75' align='center'>Prowizja</TH><TH width='80' align='center'>Zarobek</TH><TH width='100' align='center'>Status</TH></TR>";
  80.  
  81. while ($qry = mysql_fetch_array($result))
  82. { ?>
  83.  
  84.  
  85. <form action='zmien.php' method='post' ENCTYPE=multipart/form-data>
  86.  
  87. <tr>
  88. <TD align='center'><font size=2><?=$qry[refid]?></TD>
  89. <TD align='center'><font size=2><?=$qry[date]?></TD>
  90. <TD align='center'><font size=2><?=$qry[klients]?></TD>
  91.  
  92. <TD align='center'><font size=2>
  93.  
  94. <?=$qry[usluga]?>
  95. <?if ($qry[usluga2] == '') {
  96. print "";
  97. }
  98. else {
  99. print ", ";
  100. print $qry[usluga2];
  101. }
  102. if ($qry[usluga3] == '') {
  103. print "";
  104. }
  105. else {
  106. print ", ";
  107. print $qry[usluga3];
  108. }
  109. ?>
  110.  
  111. </TD>
  112.  
  113. <TD align='center'><font size=2><input type="text" name="urzad" value="<?=$qry[prowizja]?>"></TD>
  114. <TD align='center'><font size=2><?=$qry[payment]?> zł</TD>
  115.  
  116. <TD align='center'><font size=2>
  117.  
  118. <? if ($qry[status] == 'przyjete do realizacji') {
  119. print "przyjęte do realizacji";
  120. }
  121. else
  122. if ($qry[status] == 'zakonczone niepowodzeniem') {
  123. print "<font color=red>zakończone niepowodzeniem</font>";
  124. }
  125. else
  126. if ($qry[status] == 'rozliczone') {
  127. print "<font color=green>rozliczone</font>";
  128. }
  129. else
  130. if ($qry[status] == 'wykonane') {
  131. print "<font color=green>wykonane</font>";
  132. }
  133. else
  134. print $qry[status]; ?>
  135.  
  136. </TD>
  137.  
  138. </tr>
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146. <?
  147.  
  148. }
  149. print "</TABLE><br><input type='hidden' name='commited' value='yes'><input class='input_zmien' type='submit' name='Submit' value=''></form><br /><br />";
  150. }
  151. ?>
  152.  
  153.  
  154.  
  155. <?
  156. include "../../includes/footer.php";
  157. ?>
tehaha
po pierwsze używasz mysql_db_query() zamiast mysql_query() , ta pierwsza jest przestarzała i Twój serwer może jej nie obsługiwać, bo drugie zrób
  1. or die ("Database INSERT sss Error".mysql_error());
żeby zobaczyć czy wywala błedy
banki
nie wywala żadnych błędów, pokazuje że dodało, mimo to w bazie są stare wartości
tehaha
dodało czy zaktualizowało? bo tym skrypt dokonujesz aktualizacji danych a nie wprowadzasz nowy wpis, dodaj to pod zapytaniem żeby zobaczyć jakie zapytanie generuje skrypt
  1. $query = "UPDATE sales SET refid = '".$_POST['refid']."', date = '".$_POST['date']."', date_end = '".$_POST['date_end']."', date_kasa = '".$_POST['date_kasa']."', payment = '".$_POST['payment']."', wartosc = '".$_POST['wartosc']."', prowizja = '".$_POST['prowizja']."', usluga = '".$_POST['usluga']."', usluga2 = '".$_POST['usluga2']."', usluga3 = '".$_POST['usluga3']."', klient = '".$_POST['klient']."', klients = '".$_POST['klients']."', osoba = '".$_POST['osoba']."', tel = '".$_POST['tel']."', mail = '".$_POST['mail']."', adres = '".$_POST['adres']."', status = '".$_POST['status']."', info = '".$_POST['info']."' WHERE refid = '$change'";
  2.  
  3. echo $query;
banki
chcę aby się aktualizowało, a nie robi się nic
echo $query; nic nie pokazało ...
tehaha
to wtedy wygląda na to że ta część skryptu wcale się nie wykonuje, jesteś pewien, że ten warunek jest spełniony?
  1. if($_POST['commited'] == 'yes')
  2. {


poza tym nie rozumiem tej częśc, tu próbujesz podmieniać numer ID
  1. SET refid = '".$_POST['refid']."'
a potem używasz go tutaj
  1. WHERE refid = '$change'
skoro jesteś początkujący to nie rób tak że piszesz długi skrypt i się pół dnia zastanawiasz czemu nie działa, rozbij to na serie małych kroków, najpierw spróbuj skonstruować zapytanie na UPDATE tak żeby cokolwiek się podmieniało w bazie jak będzie działać to dołóż warunek if($_POST['commited']) , jeżeli to będzie działać to wtedy dołącz przekazywanie danych z formularza itd. bo tak to będzie się tylko męczył i zniechęcał
banki
to jest spełnione, bo wyświetla się potem komunikat że niby wysłało do bazy

  1. if($_POST['commited'] == 'yes')
  2. {
  3.  


a loginu nie podmieniam, nawet jesli, to on i tak sie nei zmienia
mortus
Sprawdźmy jakie dane zostały przesłane metodą post. W linii 55 umieść kod
  1. echo '<pre>'; print_r($_POST); echo '</pre>';
i spróbuj wykonać update. Na stronie wyświetli Ci się wtedy zawartość tablicy $_POST w postaci sformatowanego kodu. Wklej ten kod tutaj.
banki
uprościłem to wszystko do takiego kodu:

  1. <?
  2.  
  3. include "../../affconfig.php";
  4. include "../lang/$language";
  5.  
  6.  
  7. include "header.php";
  8.  
  9. $change2 = 2;
  10.  
  11. mysql_connect($server, $db_user, $db_pass) or die ("Database CONNECT Error");
  12. $errorMsg = '';
  13.  
  14. echo '<pre>'; print_r($_POST); echo '</pre>';
  15.  
  16. mysql_db_query($database, "UPDATE sales SET date_end = '".$_POST['prowizja']."' WHERE id = '$change2'")
  17. or die ("Database INSERT sss Error".mysql_error());
  18. echo "<br><p align=center><font color=#009900>poprawnie dodano</font></p>";
  19.  
  20. ?>
  21.  
  22. <form action='zmien3.php' method='post' ENCTYPE=multipart/form-data>
  23. <input type='text' name='prowizja' value=''>
  24. <input class='input_zmien' type='submit' name='Submit' value=''></form>




i dalej update się nie wykonuje.

po wpisaniu w tabelke 34 i kliknięciu submit jednak pokazuje się:

  1. (
  2. [prowizja] => 34
  3. [Submit] =>
  4. )



p.s. plik ten nazywa się zmien3.php jakby co
maston
sprobuj nazwy kolumny umieścić pomiędzy znakami ` , zmienna $change2 umiesc miedzy kropkami i uzyj mysql_query

  1. mysql_query("UPDATE sales SET `date_end` = '".$_POST['prowizja']."' WHERE `id` = '".$change2."'")
  2. or die ("Database INSERT sss Error".mysql_error());


sprawdź też czy może typ danych kolumny pozwala na zapis liczb. Albo masz varchar(1) i jak się pojawi coś dłuższego to nie zapisze CI niczego.
jak dalej nie będzie zmian to poprzez PhpMyAdmina ręcznie wykonaj to zapytanie SQL z podstawionymi wartościami. Wtedy zobaczysz dokładnie co tam nie gra.
mortus
@banki A dostajesz jakiś komunikat błędu?
banki
dobra już wiem gdzie jest błąd, sorki za trucie dupy, mialem przypisaną inną zmienną w formularzu a inną do wysyłki w dane pole. to po 1. po drugie nei mialem w tabeli mysql przypisane id jako primary key (refid to co innego, inna kolumna). ale dzieki za pomoc dla wszystkich naprowadzilo mnie to co napisaliscie
tehaha
nie widzę żeby zmienna $change2 w 17 linijce była w jakiś sposób przekazywana, po za tym zamień mysql_db_query na mysql_query
banki
@mortus

miałem przykładowo kilka wierszy o takim samym refid, dodałem nową kolumnee z parametrem primary key
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.