Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z bazą danych. Błąd w tabeli.
Forum PHP.pl > Forum > Przedszkole
Croos22
Witam.
Moja tabela wygląda następująco:
  1. CREATE TABLE `users` (
  2. `user_id` tinyint(10) unsigned NOT NULL auto_increment,
  3. `user_name` varchar(13) collate latin1_general_cs NOT NULL,
  4. `user_password` varchar(40) collate latin1_general_cs NOT NULL,
  5. `user_password_short` varchar(17) collate latin1_general_cs NOT NULL,
  6. `user_email` text collate latin1_general_cs NOT NULL,
  7. `user_money` int(10) collate latin1_general_cs NOT NULL,
  8. PRIMARY KEY (`user_id`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=3;


Mój problem polega na tym, że nie chce mi rejestrować nowych użytkowników gdy jest w tabeli to user_money chodź w pliku rejestracji nie ma o tym słowa.
Nie może być tak, że jedna rubryka pozostaje pusta? Czy może coś stworzyłem źle?

Rejestracja:
  1. <?php
  2. include ('includes/config_includes.php'); // Odniesienie Do pliku który łączy nas z DB
  3.  
  4.  
  5. //jesli byl wyslany formularz przechodzimy do obsługi danych
  6. if(isset($_POST['wyslij']))
  7. {
  8.  
  9. //Obrabiamy wszystkie zmienne przekazane metodą POST
  10. foreach ($_POST AS $klucz => $wartosc)
  11. {
  12. $wartosc= trim($wartosc);//usuwamy białe znaki
  13. $wartosc= stripslashes($wartosc);
  14. $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  15. $_POST[$klucz]=$wartosc;
  16. }
  17.  
  18. $login=$_POST['login'];
  19. $haslo=$_POST['haslo'];
  20. $re_haslo=$_POST['re_haslo'];
  21. $email=$_POST['email'];
  22.  
  23. $blad_txt='';
  24. $blad=false;
  25.  
  26.  
  27.  
  28.  
  29. //Sprawdzamy czy użytkownik o danym Loginie nie jest juz zajęty
  30. $zapytanie_sprawdz_usera= "select * from users where user_name='$login' ";
  31. $wynik = mysql_query($zapytanie_sprawdz_usera);
  32. if(!$wynik)
  33. {
  34. echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
  35. .';
  36. }
  37. if(mysql_num_rows($wynik)>0)
  38. {
  39. $sprawdz_login=1;
  40. }
  41.  
  42. // Sprawdzamy czy adres email sie nie powtarza.
  43. $zapytanie_sprawdz_email= "select * from users where user_email ='$email' ";
  44. $wynik_email = mysql_query($zapytanie_sprawdz_email);
  45. if(!$wynik_email)
  46. {
  47. echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
  48. .';
  49. }
  50. if(mysql_num_rows($wynik_email)>0)
  51. {
  52. $sprawdz_email=1;
  53. }
  54.  
  55.  
  56. //sprawdzamy czy poprawnie jest wypełnine pole login
  57.  
  58. if(empty($login)){
  59. $info_txt_nick.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
  60. $blad=true;
  61. }
  62. else if($sprawdz_login==1){
  63. $info_txt_nick.='<img src="x.gif" /> <font color="#B20000"> Login o takiej nazwie już istnieje.</font>';
  64. $blad=true;
  65. }
  66. else if(strlen($login)<5){
  67. $info_txt_nick.='<font color="#B20000">Login jest za krótki.</font>';
  68. $blad=true;
  69. }
  70. else if(strlen($login)>12){
  71. $info_txt_nick.='<img src="x.gif" /> <font color="#B20000"> Nie poprawna nazwa loginu, max 12 znaków.</font>';
  72. $blad=true;
  73. }
  74. else{
  75. $info_txt_nick.='<img src="v.gif" /> <font color="#207C07"> OK.</font>';
  76. }
  77.  
  78. //sprawdzamy czy jest prawidlowe haslo
  79. if(empty($haslo)){
  80. $info_txt_haslo.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
  81. $blad=true;
  82. }
  83. else if(strlen($haslo)<=6) {
  84. $info_txt_haslo.='<img src="x.gif" /> <font color="#B20000"> Hało jest za krótkie.</font>';
  85. $blad=true;
  86. }
  87. else if(strlen($haslo)>16){
  88. $info_txt_haslo.='<img src="x.gif" /> <font color="#B20000"> Hasło może składać sie z Max 16 znaków.</font>';
  89. $blad=true;
  90. }
  91. else{
  92. $info_txt_haslo.='<img src="v.gif" /> <font color="#207C07"><b> OK.</b></font>';
  93. }
  94.  
  95. //sprawdzamy czy jest 2 hasło
  96. if(empty($re_haslo)){
  97. $info_txt_re_harlo.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
  98. $blad=true;
  99. }
  100. else if($haslo != $re_haslo){
  101. $info_txt_re_harlo.='<img src="x.gif" /> <font color="#B20000"> Hała muszą być takie same.</font>';
  102. $blad=true;
  103. }
  104. else{
  105. $info_txt_re_harlo.='<img src="v.gif" /> <font color="#B20000"><font color="#207C07"> OK.</font>';
  106. }
  107.  
  108.  
  109.  
  110. //sprawdzamy czy jest podany prawidłowy adres e-mail
  111. if(empty($email)){
  112. $info_txt_email.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
  113. $blad=true;
  114. }
  115. else if($sprawdz_email==1){
  116. $info_txt_email.='<img src="x.gif" /> <font color="#B20000"> Adres email o takiej nazwie już istnieje.</font>';
  117. $blad=true;
  118. }
  119. else if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $email)){
  120. $info_txt_email.='<img src="x.gif" /> <font color="#B20000"> Adres email jest nie prawidłowy.</font>';
  121. $blad=true;
  122. }
  123. else{
  124. $info_txt_email.='<img src="v.gif" /> <font color="#207C07"> OK.</font>';
  125. }
  126.  
  127.  
  128. if(!$blad)
  129. {
  130. //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
  131. $pokaz_form=true;
  132.  
  133. // Wysyłamy zapytanie do bazy danych
  134. $zapytanie_add_user = "INSERT INTO `users` values(NULL, '".$login."', '".sha1($haslo)."', '".$haslo."', '".$email."')";
  135.  
  136. // Odpowiedz
  137. $odpowiedz = mysql_query($zapytanie_add_user);
  138. if($odpowiedz > 0){
  139. echo 'Rojestracja przebiegła pomyślnie do konca.<br /><ul><li>Twój nick to: '.$login.'</li><li>email: '.$email.'</li></ul>';
  140. }
  141. else{
  142. $pokaz_form=false;
  143. echo 'Problem z MySQL.';
  144. }
  145.  
  146.  
  147. }
  148. else
  149. {
  150. //cos jest zle – wyświetlamy stosowne komunikaty
  151. // echo $blad_txt;
  152. $pokaz_form=false;
  153. }
  154. }
  155. else
  156. {
  157. //wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
  158. $login='';
  159. $haslo='';
  160. $re_haslo='';
  161. $email='';
  162. }
  163. //wyswietlamy formularz
  164. if($pokaz_form!=true){
  165. ?>
  166. <style>
  167. table.form{
  168. margin-left: 120px;
  169. font-size: 12px;
  170. }
  171. td.title{
  172. vertical-align: bottom;
  173. text-align: right;
  174. }
  175. td.info{
  176. vertical-align: bottom;
  177. text-align: left;
  178. }
  179. </style>
  180. <form action="<? $_SERVER['PHP_SELF']; ?>" method="POST">
  181. <table class="form" name="form" border="0px" cellpadding="3px" cellspacing="0px">
  182. <tbody>
  183. <tr>
  184. <td style="width:80px;"></td>
  185. <td>REJESTRACJA</td>
  186. </tr>
  187.  
  188. <tr>
  189. <td class="title">Login:</td>
  190. <td class="info">
  191. <input type="text" name="login" value="<? echo $login; ?>"> <? echo $info_txt_nick; ?>
  192. </td>
  193. </tr>
  194.  
  195. <tr>
  196. <td class="title">Hasło:</td>
  197. <td class="info">
  198. <input type="password" name="haslo" value="<? echo $haslo; ?>"> <? echo $info_txt_haslo; ?>
  199. </td>
  200. </tr>
  201.  
  202. <tr>
  203. <td class="title">Powtórz Hasło:</td>
  204. <td class="info">
  205. <input type="password" name="re_haslo" value="<? echo $re_haslo; ?>"> <? echo $info_txt_re_harlo; ?>
  206. </td>
  207. </tr>
  208.  
  209. <tr>
  210. <td class="title">E-Mail:</td>
  211. <td class="info">
  212. <input type="text" name="email" value="<? echo $email; ?>"> <? echo $info_txt_email; ?>
  213. </td>
  214. </tr>
  215.  
  216. <tr>
  217. <td>
  218. </td>
  219. <td>
  220. <input type="submit" name="wyslij" value="Wyślij" />
  221. <input type="button" value="wyczyść" class="clean" onclick="window.location='<? $_SERVER['PHP_SELF']; ?>' "/>
  222. </td>
  223. </tr>
  224. </tbody>
  225. </table>
  226. </form>
  227. v2.0
  228. <?
  229. }
  230. else{
  231. return false;
  232. }
  233. ?>
minolone
Myśle że twoim problemem jest to ze pole `user_money` ma atrybut NOT NULL co oznacza że nie może być puste, a skoro w formularzu niema nic co by bylo związane z tym polem to wartość jest pusta. Zamień NOT NULL na NULL i ustaw sobie np. wartość domyślna 0
lord2105
  1. $zapytanie_add_user = "INSERT INTO `users` values(NULL, '".$login."', '".sha1($haslo)."', '".$haslo."', '".$email."')";


na:

  1. $zapytanie_add_user = "INSERT INTO `users` values(NULL, '".$login."', '".sha1($haslo)."', '".$haslo."', '".$email."','0')";


Myślę, że Twój skrypt posiada jakiegoś moda i stąd ta kolumna
Croos22
Mam jeszcze jedno pytanie a nie chciałem zakładać nowego tematu.

Pytanie dotyczy sesji a dokładniej każdy zalogowany użytkownik ma update własnej tabelki.
Tu mam proste zapytanie:
  1. <?php
  2. $zapytanie = "UPDATE `users` (`user_money`) VALUES ('+10')";
  3. $idzapytania = mysql_query($zapytanie);
  4. ?>

W jaki sposób mam zrobić aby zmianę zobaczył tylko zalogowany użytkownik.
Mam osobny plik w którym rejestrowane są sesje:
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. include ('includes/config_includes.php');
  5.  
  6. if(!isset($_SESSION["zalogowany"]) || $_SESSION["zalogowany"]==0)$_SESSION["zalogowany"]=0;
  7. else{
  8. $_SESSION["zalogowany"]=intval($_SESSION["zalogowany"]);
  9. mysql_query("select id from users where user_id=".$_SESSION["zalogowany"]." and user_password='".htmlspecialchars($_SESSION["haslo"])."'");
  10. }
lord2105
a co ma user_money do sesji?
Croos22
Chciałem tylko dowiedzieć w jaki sposób dajmy na to poprzez kliknięcie w buton lub link zalogowany użytkownik otrzyma np. user_money+25.
lord2105
  1. $q = mysql_query("UPDATE users SET user_money += 25 WHERE user_id = '".$_SESSION[zalogowany]."'");
Croos22
Właśnie taki sam błąd mi wyskoczył jak sam próbowałem.

Cytat
Parse error: syntax error, unexpected T_STRING in xxxx on line 4


  1. <?php
  2. require "sesje.php";
  3. include ('includes/config_includes.php');
  4. $zapytanie = "mysql_query("UPDATE users SET user_money =+ 25 WHERE user_id = '".$_SESSION[zalogowany]."'");
  5. $idzapytania = mysql_query($zapytanie);
  6. ?>
lord2105

  1. $zapytanie = "mysql_query("UPDATE users SET user_money =+ 25 WHERE user_id = '".$_SESSION[zalogowany]."'");


NA:

  1. $zapytanie = mysql_query("UPDATE users SET user_money =+ 25 WHERE user_id = '".$_SESSION[zalogowany]."'");
Croos22
Dlaczego nie aktualizuje mi i nie wyświetla? Użytkownik jest zalogowany.

  1. <?php
  2. require ("sesje.php");
  3. include ('includes/config_includes.php');
  4. $zapytanie = mysql_query("UPDATE users SET user_money =+ 25 WHERE user_id = '".$_SESSION[zalogowany]."'");
  5. $zapytanie = mysql_query("SELECT users SET user_money WHERE user_id = '".$_SESSION[zalogowany]."'");
  6. $idzapytania = mysql_query($zapytanie);
  7. echo 'Pieniądze';
  8. echo $idzapytania['user_money'];
  9. ?>
lord2105
raczej:
  1. $zapytanie = mysql_query("SELECT user_moeny FROM users WHERE user_id = '".$_SESSION[zalogowany]."'");



Pozdrawiam
Croos22
No dobrze dzięki za poprawienie ale nic mi po tym ponieważ ani nie aktualizuje się ani nie wyświetla. Gdzie zrobiłem błąd?
lord2105
  1. <?php
  2. require ("sesje.php");
  3. include ('includes/config_includes.php');
  4. $zapytanie = mysql_query("UPDATE users SET user_money =+ 25 WHERE user_id = '".$_SESSION[zalogowany]."'");
  5. mysql_query($zapytanie);
  6. $zapytanie2 = mysql_query("SELECT user_money FROM users WHERE user_id = '".$_SESSION[zalogowany]."'");
  7. $tab = mysql_fetch_array($zapytanie2);
  8. echo 'Pieni?dze';
  9. echo $tab['user_money'];
  10. ?>


1. Nadpisywałeś zmienną $zapytanie
2. mysql_query nie pokaże ci tablicy
3. tak jak napisałem powinno być ok
Croos22
No, że tak powiem może i jest dobrze ale ani mi nie aktualizuje ani nie wyświetla :<
Coś tu musi być nie tak ponieważ gdy dam user_id np 4 to wszytko ok jest.
WHERE user_id = '".$_SESSION[zalogowany]."'
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.