Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Formularz edycji danych - nie zapisuje w bazie.
Forum PHP.pl > Forum > Przedszkole
bartekm1
Witam,

mam taki błąd, mam połączenie z bazą, zrobiony formularz (niżej podany kod), i po wypełnieniu danych, nie zapisuje ich w mysql.

Co może być nie tak?

  1. <?php
  2. if(!empty($_POST["imienazwisko"]) && !empty($_POST["adres"]) && !empty($_POST["kodpocztowy"]) && !empty($_POST["miasto"]) )
  3. {
  4. $_GET['id'] = (int)$_GET['id'];
  5. $sql = "select * from gracze where gracz = ".$_GET['id']."";
  6. $res = mysql_query($sql);
  7. $num = mysql_num_rows($res);
  8. if($num > 0)
  9. {
  10. //tutaj możesz dać walidację danych z formularza
  11. //następnie zapytanie sql
  12. $sql="UPDATE gracze SET imienazwisko='".$_POST["imienazwisko"]."',adres='".$_POST["adres"]."',kodpocztowy='".$_POST["kodpocztowy"]."',miasto='".$_POST["miasto"]."' WHERE id=$id";
  13. $result = mysql_query($sql)
  14. or die("blad");
  15. {
  16. echo'update ok';
  17. }
  18. //oczywiście zmienne $adres, $kod,$miasto to przefiltrowane zmienne pochodzące z formularza
  19. }
  20. }
  21. else
  22. {
  23. $body = '<center>
  24. <h3>Edytuj Swoje Dane Osobowe</h3>
  25. <table>
  26. <tr>
  27. <td>
  28. <form action="vprofil" method="post">
  29. <h4>Imię i nazwisko</h4>
  30. <input type="text" name="imienazwisko" id="input" maxlength="30" value="'.$_POST['imienazwisko'].'" />
  31. <h4>Adres</h4>
  32. <input type="text" name="adres" id="input" maxlength="30" value="'.$_POST['adres'].'" />
  33. <h4>Kod pocztowy</h4>
  34. <input type="text" name="kodpocztowy" id="input" maxlength="30" value="'.$_POST['kodpocztowy'].'" />
  35. <h4>Miasto</h4>
  36. <input type="text" name="miasto" id="input" maxlength="30" value="'.$_POST['miasto'].'" /><br /></td></tr>
  37. <tr><td align="right">
  38. <input type="submit" id="button" value="Zapisz" />
  39. </form>
  40. </td></tr>
  41. </table>
  42. </center>' ;
  43. echo $body;
  44. }
  45. ?>


A struktura tej bazy wygląda tak:


  1. CREATE TABLE `gracze` (
  2. `gracz` int(6) NOT NULL AUTO_INCREMENT,
  3. `haslo` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  4. `email` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  5. `data` datetime NOT NULL,
  6. `telefon` int(15) NOT NULL,
  7. `imienazwisko` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  8. `adres` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  9. `kodpocztowy` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  10. `miasto` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  11. PRIMARY KEY (`gracz`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=735 ;

lobopol
Zapewne dlatego, że nie masz ustawionego $_GET['id'] formularz idzie na vprofil. I skrypt zatrzymuję ci się na tym ifie:
  1. if($num > 0)

bartekm1
Za bardzo nie znam sie na PHP smile.gif A co zrobić żeby nie przenosiło tego na vprofil, tylko zeby zostało na tym vedycja, ale jak kliknie Zapisz, to żeby mu się wyświetliłą informacja "Poprawnie Zmieniłeś Swoje Dane" i tam pod spodem, hiperłącze do zakłądki "vprofil" z napisem (wróć do profilu).

Jak tak sie zrobi to będzie działało że zapisywało będzie?
jackraymund
po co ty to zmieniałeś lol, jakiś czas temu zrobiłem ci ten kodzik to na mus musiałeś znowu to wstawić lol
http://forum.php.pl/index.php?showtopic=19...mp;#entry949043
tam wystarczyło by tylko dodać jeden nawias do ifa
bartekm1
No tak, ale był błąd w bazie. Również nie zapisywało tego w bazie sad.gif

Co tu może być problemem?
jackraymund
  1. $sql="UPDATE gracze SET imienazwisko='".$_POST["imienazwisko"]."',adres='".$_POST["adres"]."',kodpocztowy='".$_POST["kodpocztowy"]."',miasto='".$_POST["miasto"]."' WHERE id=$id";
  2. $result = mysql_query($sql)



niema pola id
  1. CREATE TABLE `gracze` (
  2. `gracz` int(6) NOT NULL AUTO_INCREMENT,
  3. `haslo` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  4. `email` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  5. `data` datetime NOT NULL,
  6. `telefon` int(15) NOT NULL,
  7. `imienazwisko` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  8. `adres` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  9. `kodpocztowy` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  10. `miasto` varchar(99) COLLATE utf8_unicode_ci NOT NULL,
  11. PRIMARY KEY (`gracz`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=735 ;
Niktoś
A powiedz jak wygląda link do strony chodzi mi o parametr id.
bartekm1
ID to jest kolumna "gracz"
Niktoś
A masz go w URL?Ja widzę metodę post,a ty getem coś skrobiesz.A co to właściwie za tworek?
Cytat
$_GET['id'] = (int)$_GET['id'];
bartekm1
To może innaczej smile.gif

Będzie łatwiej jak udostępnie Wam plik rejestracji, ponieważ ja tego nie robiłem i sie za bardzo nie orientuje.

  1. <h3>Rejestracja</h3>
  2. <?
  3. if($oGracz[gracz] > 0){
  4. header("Location: ?a=konto");
  5. }
  6. $akcja = trim($_REQUEST["akcja"]);
  7. if ($akcja=="rejestracja") {
  8. $login = htmlspecialchars(stripslashes(trim($_POST["login"])), ENT_QUOTES);
  9. $haslo = htmlspecialchars(stripslashes(trim($_POST["haslo"])), ENT_QUOTES);
  10. $email = htmlspecialchars(stripslashes(trim($_POST["email"])), ENT_QUOTES);
  11. $in = htmlspecialchars(stripslashes(trim($_POST["in"])), ENT_QUOTES);
  12. $adres = htmlspecialchars(stripslashes(trim($_POST["adres"])), ENT_QUOTES);
  13. $kodpocztowy = htmlspecialchars(stripslashes(trim($_POST["kodpocztowy"])), ENT_QUOTES);
  14. $miasto = htmlspecialchars(stripslashes(trim($_POST["miasto"])), ENT_QUOTES);
  15. $plec = htmlspecialchars(stripslashes(trim($_POST["plec"])), ENT_QUOTES);
  16. $telefon = htmlspecialchars(stripslashes(trim($_POST["telefon"])), ENT_QUOTES);
  17. $data_urodzenia = date($_POST['data_urodzenia']['rok'].'-'.$_POST['data_urodzenia']['miesiac'].'-'.$_POST['data_urodzenia']['dzien']);
  18.  
  19. if (strlen($login)<3 or strlen($login)>24
  20. or !eregi("^[a-zA-Z0-9_.]+$",$login)) { $blad++;
  21. echo "<div class='alert'><div class='inner'>Login musi mieć od 3 do 24 znaków bez polskich znaków i spacji!</div></div>";
  22. } else {
  23. if ($baza = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych)) {
  24. if (mysql_select_db($nazwa_bazy_danych)) {
  25. $wynik=mysql_query("SELECT * FROM gracze WHERE login='$login'");
  26. $wynik2=mysql_query("SELECT email FROM gracze WHERE email='$email'");
  27. } else echo "Nie można połączyć się z bazą.";
  28. mysql_close($baza);
  29. } else echo "Nie można połączyć się z bazą.";
  30. if (mysql_num_rows($wynik)<>0) { $blad++;
  31. echo "<div class='alert'><div class='inner'>Taki login już jest w naszej bazie!</div></div>";
  32. }
  33. if (mysql_num_rows($wynik2)<>0) { $blad++;
  34. echo "<div class='alert'><div class='inner'>Taki e-mail już jest w naszej bazie danych!</div></div>";
  35. }
  36. }
  37.  
  38. if (strlen($haslo)<6 or strlen($haslo)>50
  39. or !eregi("^[a-zA-Z0-9]+$",$haslo)) { $blad++;
  40. echo "<div class='alert'><div class='inner'>Hasło musi mieć od 6 do 50 znaków bez polskich znaków i spacji!</div></div>";
  41. }
  42.  
  43. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email)) { $blad++;
  44. echo "<div class='alert'><div class='inner'>E-mail nie został podany prawidłowo!</div></div>";
  45. }
  46. if (strlen($in)<3) {$blad++;
  47. echo "<div class='alert'><div class='inner'>Podaj prawidłowo imię i nazwisko!</div></div>";
  48. }
  49. if (strlen($adres)<3) {$blad++;
  50. echo "<div class='alert'><div class='inner'>Podaj prawidłowo adres!</div></div>";
  51. }
  52. if (strlen($kodpocztowy)<3) {$blad++;
  53. echo "<div class='alert'><div class='inner'>Podaj prawidłowo kod pocztowy!</div></div>";
  54. }
  55. if (strlen($miasto)<3) {$blad++;
  56. echo "<div class='alert'><div class='inner'>Podaj prawidłowo miasto!</div></div>";
  57. }
  58. if(isset($_POST['regulamin']) &&
  59. $_POST['regulamin'] == '0') {
  60. }
  61. else
  62. { $blad++;
  63. echo "<div class='alert'><div class='inner'>Musisz zaakceptować regulamin!</div></div>";
  64. }
  65. require_once('var/recaptchalib.php');
  66. $privatekey = "6LcTWM4SAAAAAASgWIbHpdar89ZQDZPShyE8pT_B";
  67. $resp = recaptcha_check_answer ($privatekey,
  68. $_SERVER["REMOTE_ADDR"],
  69. $_POST["recaptcha_challenge_field"],
  70. $_POST["recaptcha_response_field"]);
  71. if (!$resp->is_valid) {
  72. echo "";
  73. }
  74. if ($blad==0) {
  75. $kod = uniqid(rand());
  76. $haslo = md5($haslo);
  77. if ($baza = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych)) {
  78. if (mysql_select_db($nazwa_bazy_danych)) {
  79. $polecony = $_COOKIE['strona'];
  80. $wynik = mysql_query("INSERT INTO gracze SET login='$login', haslo='$haslo', kod='$kod', status='1', imienazwisko='$in', adres='$adres', kodpocztowy='$kodpocztowy', miasto='$miasto', telefon='$telefon', data_ur='$data_urodzenia', plec='$plec', polecony='$polecony', data=NOW(), email='$email'");
  81. } else echo "Nie można połączyć się z bazą.";
  82. mysql_close($baza);
  83. } else echo "Nie można połączyć się z bazą.";
  84.  
  85. if ($wynik) {
  86. $list="
  87. Aby potwierdzić Twoją rejestrację, kliknij w poniższy link lub skopiuj go do paska adresu Twojej przeglądarki i potwierdź klawiszem Enter.
  88.  
  89. <a href="http://strona.pl/potwierdz:$kod" target="_blank">http://strona.pl/potwierdz:$kod</a>
  90.  
  91. Jeżeli nie rejestrowałeś się w serwisie, zignoruj ten list.
  92. ";
  93. mail($email, "Rejestracja", $list, "From: strona.pl <admin@strona.pl>");
  94. echo "<div class='ok'><div class='inner'>Aby dokończyć proces rejestracji, kliknij w link wysłany na Twój e-mail.</div></div>";
  95. }
  96. } else $akcja="";
  97. }
  98.  
  99. if ($akcja=="") {
  100. ?>
  101. <script type="text/javascript">
  102. var RecaptchaOptions = {
  103. theme : 'custom',
  104. custom_theme_widget: 'recaptcha_widget'
  105. };


Część druga pliku rejestracji:

  1. </script>
  2. <table width="100%"><tr><td><form action="?a=rejestracja" method="post">
  3. <input type="hidden" name="akcja" id="input" value="rejestracja" />
  4. <h4>Login</h4>
  5. <input type="text" name="login" id="input" maxlength='24' value="<?php $login ?>" />
  6. <h4>Hasło</h4>
  7. <input type="password" name="haslo" id="input" maxlength='50' value="<?php $haslo ?>" />
  8. <h4>E-mail</h4>
  9. <input type="text" name="email" id="input" maxlength='50' value="<?php $email ?>" />
  10. <h4>Imię i nazwisko</h4>
  11. <input type="text" name="in" id="input" maxlength='30' value="<?php $in ?>" />
  12. <h4>Adres</h4>
  13. <input type="text" name="adres" id="input" maxlength='30' value="<?php $adres ?>" />
  14. <h4>Kod pocztowy</h4>
  15. <input type="text" name="kodpocztowy" id="input" maxlength='30' value="<?php $kodpocztowy ?>" />
  16. <h4>Miasto</h4>
  17. <input type="text" name="miasto" id="input" maxlength='30' value="<?php $miasto ?>" />
  18. <h4>Płeć</h4>
  19. <select name="plec" id="select"><option value="1">Mężczyzna</option><option value="2">Kobieta</option></select>
  20. <h4>Data urodzenia</h4>
  21. <select name="data_urodzenia[dzien]" id="styled"><?php for ($i=1; $i<=31; $i++){echo "<option value='$i'>$i</option>";}?></select> -
  22. <select name="data_urodzenia[miesiac]" id="select"><?php for ($i=1; $i<=12; $i++){echo "<option value='$i'>$i</option>";}?></select> -
  23. <select name="data_urodzenia[rok]" id="select"><?php for ($i=1998; $i>=1900; $i=$i-1){echo "<option value='$i'>$i</option>";} ?></select>
  24. <h4>Numer telefonu</h4>
  25. <input type="text" name="telefon" id="input" maxlength='15' value="<?php $telefon ?>" />
  26. </td><td align="right"><script type="text/javascript"><!--
  27. google_ad_client = "ca-pub-1157982378110244";
  28. /* Duży kwadrat */
  29. google_ad_slot = "8564127234";
  30. google_ad_width = 300;
  31. google_ad_height = 250;
  32. //-->
  33. </script>
  34. <script type="text/javascript"
  35. src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  36. </script></td></tr></table>
  37. <table cellspacing="20" width="600"><tr><td><h4>Przepisz kod potwierdzający</h4>
  38.  
  39. <div id="recaptcha_widget" style="display:none">
  40. <div class="recaptcha_only_if_incorrect_sol" style="color:red">Kod potwierdzający jest nieprawidłowy!</div>
  41. <input type="text" id="recaptcha_response_field" class="input" name="recaptcha_response_field" /></td><td>
  42. <br /><div id="recaptcha_image" style="border: 3px solid #043a4b"></div>
  43. <div><a href="java script:Recaptcha.reload()">Przeładuj obrazek</a></div>
  44. </div>
  45. </td></tr></table>
  46.  
  47. <script type="text/javascript"
  48. src="http://www.google.com/recaptcha/api/challenge?k=6LcTWM4SAAAAAPQJ1kkwj8pYwa9avtqhQK658mLw ">
  49. </script>
  50. <noscript>
  51. <iframe src="http://www.google.com/recaptcha/api/noscript?k=6LcTWM4SAAAAAPQJ1kkwj8pYwa9avtqhQK658mLw "
  52. height="300" width="500" frameborder="0"></iframe><br>
  53. <textarea name="recaptcha_challenge_field" rows="3" cols="40">
  54. </textarea>
  55. <input type="hidden" name="recaptcha_response_field"
  56. value="manual_challenge">
  57. </noscript>
  58. <input name="regulamin" type="checkbox" name="regulamin" value="0">Zapoznałem/am się z <a href="?a=regulamin" target="_blank">regulaminem</a> serwisu<br />
  59. <input type="submit" id="button" value="Dalej" />
  60. </form>
  61. <?php
  62. KONIEC;
  63. }
  64.  
  65.  
  66. if ($akcja=="potwierdz") {
  67. $kod = htmlspecialchars(stripslashes(trim($_GET["kod"])), ENT_QUOTES);
  68. if ($kod<>"") {
  69. if ($baza = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych)) {
  70. if (mysql_select_db($nazwa_bazy_danych)) {
  71. $wynik = mysql_query("DELETE FROM gracze
  72. WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=1");
  73. $wynik = mysql_query("UPDATE gracze
  74. SET status='2', data=NOW() WHERE kod='$kod' and status=1");
  75. $wynik = mysql_query("SELECT * FROM gracze
  76. WHERE kod='$kod' and status=2");
  77. } else echo "Nie można połączyć się z bazą";
  78. mysql_close($baza);
  79. } else echo "Nie można połączyć się z bazą";
  80. if (mysql_num_rows($wynik)==1) {
  81. $dane = mysql_fetch_array($wynik);
  82. echo "<div class='ok'><div class='inner'>Dziękujemy. Rejestracja została zakończona poprawnie.</div></div>";
  83. }
  84. }
  85. if ($kod=="" or mysql_num_rows($wynik)<>1) {
  86. echo "<div class='error'><div class='inner'>Rejestracja nie może zostać dokończona - sprawdź czy link jest poprawny!</div></div>";
  87. }
  88. }
  89.  
  90.  
  91.  
  92. if ($akcja=="przypomnij") {
  93. echo <<<KONIEC
  94. Aby skorzystać z funkcji przypominania hasła, należy wpisać swój adres email podany przy rejestracji.<br /><br />
  95. <table width="100%"><tr><td><br /><br /><br /><form action="vrejestracja&akcja=wyslijhaslo" method="post">
  96. <input type="hidden" name="akcja" value="wyslijhaslo" />
  97. <h4>E-mail</h4>
  98. <input type="text" name="email" id="input" value="$email" /><br />
  99. <input type="submit" id="button" value="Dalej" />
  100. </form></td>
  101. <td align="right"><script type="text/javascript"><!--
  102. google_ad_client = "ca-pub-1157982378110244";
  103. /* Duży kwadrat */
  104. google_ad_slot = "8564127234";
  105. google_ad_width = 300;
  106. google_ad_height = 250;
  107. //-->
  108. </script>
  109. <script type="text/javascript"
  110. src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  111. </script></td></tr></table>
  112. KONIEC;
  113. }
  114.  
  115.  
  116. function haslo() {
  117. $min = 6; $max = 12;
  118. for($i=0;$i<rand($min,$max);$i++) {
  119. $znak=chr(rand(48,122));
  120. if (eregi("[0-9a-zA-Z]",$znak)) $haslo .= $znak;
  121. else $i--;
  122. }
  123. return $haslo;
  124. }
  125.  
  126.  
  127. if ($akcja=="wyslijhaslo") {
  128.  
  129.  
  130. $email = htmlspecialchars(stripslashes(trim($_POST["email"])), ENT_QUOTES);
  131. $hasloczytelne = haslo();
  132. $haslo = md5($hasloczytelne);
  133. if ($email<>"") {
  134. if ($baza = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych)) {
  135. if (mysql_select_db($nazwa_bazy_danych)) {
  136. $wynik = mysql_query("UPDATE gracze SET haslo='$haslo' WHERE email='$email'");
  137. $wynik = mysql_query("SELECT * FROM gracze WHERE email='$email'");
  138. } else echo "Nie można połączyć się z bazą";
  139. mysql_close($baza);
  140. }
  141. if (mysql_num_rows($wynik)==1) {
  142. $dane = mysql_fetch_array($wynik);
  143. $email = $dane["email"];
  144. $list="Twoje nowe hasło to: $hasloczytelne";
  145. mail($email, "Przypomnienie hasła", $list,"From: strona.pl <admin@strona.pl>");
  146. echo "<div class='ok'><div class='inner'>Hasło zostało wyslane na Twój adres e-mail.</div></div>";
  147. } else {
  148. echo "<div class='alert'><div class='inner'>Podałeś nieprawidłowy adres e-mail!</div></div>";
  149. }
  150. }
  151. }


Byłby ktoś w stanie pomóc??

Jakoś się odwdzięcze
Niktoś
A możesz to na live puścić?Chciałbym się dowiedzieć jak budowane są linki,bo w tym skrypcie nie widze innych parametrów jak paramter akcja a ty się odwołujesz do tablicy GET np:
$kod = htmlspecialchars(stripslashes(trim($_GET["kod"])).
$_GET['id'] = (int)$_GET['id'];

PS.Dla mnie ten formularz jest strasznie nie czytelny,istne spagetti,trudno rozeznać o co w nim chodzi.Zastanów się dobrze nad napisaniem nowego ,albo daj to komuś do poprawy w ramach jakiejś kary.
bartekm1
Wiem że ten formularz jest nie bardzo czytelnny.

Potrzebuje kogoś kto, pomoże stworzyć nowy który będzie działał. Ja nie ogarniam zbytnio PHP.

Dla kogoś kto umie to kilka minut. Prosze o pomoc
Niktoś
Trening czyni mistrza ,a jak Jesteś zbyt leniwy to do działu oferty.Ja też wszystkiego nie wiem ale uczę się.Zacznij od czegoś prostszego.Od prostego formularza rejestracji bez recaptchy, bez walidacji.
Potem stwórz stronę logowania też w jak najprostszej formie.Jak zbaczysz ,że jest dobra i zaczaisz o co chodzi to dodawaj kolejne element np.walidację czy system odzyskiwania hasła.Nie od razu Rzym zbudowano.A jak nie chcesz się uczyć ,a chcesz Mieć tą stronkę to musisz Komuś zapłacić , bo czas to pieniądz.Może Cie to zmotywuje.
bartekm1
uczę sie małymi kroczkami smile.gif

Ale ten formularz potrzebuje na dzisiaj sad.gif

Od rana siedze na internecie, ucząc sie z tutków itp, i nie wiem jak to zrobić zeby zapisywało poprawnie. Już mnie oczy bolą od monitora.
Niktoś
Co Ci po tym formularzu jak nie będziesz wiedział o co chodzi.Weź poszukaj jakiś formularz w najprostszej formie na google , puść go u siebie na kompie i zobacz jak to działa.
nospor
@bartekm1 masz już konto na forum to z niego korzystaj!
Na nowym koncie robisz dokładnie te same przewinienia co na starym. Nie dość że zakładasz nowe konto to nadodatek nie wyciągasz żadnych wniosków z błędów pierwszego.
Myślisz, że to przejdzie?
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.