Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [bład] Logowanie z użyciem MySQL
Forum PHP.pl > Forum > Przedszkole
regua
Hej! Mam pytanie. Mianowicie zrobiłem skrypt logowania, w którym user wybiera wybiera swój kraj i skrypt sprawdza, czy nie ma takiego skryptu w bazie - jeśli jest, wywala błąd. W tym rzecz, że pisze mi: "Rejestracja przebiegła pomyślnie", a nie zostają dodane do bazy danych potrzebne dane.
(Moja tabela user ma kolumny: login, haslo, kraj)
  1. <?php
  2. $login = $_POST['login'];
  3. $pass = $_POST['pass'];
  4. $email = $_POST['email'];
  5. $kraj = $_POST['kraj'];
  6. $dbc = mysql_connect('localhost', 'xxx', 'xxx') or die("Nie mogę połączyć");
  7. mysql_select_db('xx') or die("Nie mogę wybrać bazy");
  8. $spr = "SELECT COUNT(*) FROM user WHERE kraj = $kraj";
  9. if(!@mysql_query($spr) == 0) {
  10. print("Ten kraj jest już w użyciu. Wybierz inny.");
  11. } else {
  12. @mysql_query('INSERT INTO user VALUES ("$login", "$haslo", "$kraj");');
  13. print("Rejestracja przebiegła pomyślnie!<br>");
  14. } }
  15. ?>
SongoQ
Tekst z manuala:

Cytat
mysql_query() zwraca identyfikator wyniku (lub FALSE  w przypadku niepowodzenia) jedynie dla zapytań typu SELECT, SHOW, EXPLAIN i DESCRIBE. Dla innych zapytań SQL mysql_query() zwraca TRUE  lub FALSE informując czy zapytanie zakończyło się sukcesem czy też nie. Jeśli nie została zwrócona wartość FALSE to znaczy, że zapytanie było prawidłowe i może być wykonane przez serwer. Nie mówi natomiast nic o liczbie przetworzonych lub zwróconych wierszy. Jest również możliwe, że zapytanie zostanie wykonane poprawnie, nie przetwarzając lub zwracając żadnych wierszy.
vtuner
nic dziwnego ze to nie wychodzi jak jest zle

  1. <?php
  2. $spr = mysql_query("SELECT * FROM user WHERE kraj = $kraj");
  3. if(mysql_num_rows($spr) == 1) {
  4. echo "Ten kraj jest już w użyciu. Wybierz inny.";
  5. } else {
  6.  if(mysql_query("INSERT INTO user VALUES ('$login', '$haslo', '$kraj')")) {
  7. echo("Rejestracja przebiegła pomyślnie!<br>"); }
  8. ?>
regua
Cytat(SongoQ @ 2006-01-21 09:33:56)
Tekst z manuala:

Cytat
mysql_query() zwraca identyfikator wyniku (lub FALSE  w przypadku niepowodzenia) jedynie dla zapytań typu SELECT, SHOW, EXPLAIN i DESCRIBE. Dla innych zapytań SQL mysql_query() zwraca TRUE  lub FALSE informując czy zapytanie zakończyło się sukcesem czy też nie. Jeśli nie została zwrócona wartość FALSE to znaczy, że zapytanie było prawidłowe i może być wykonane przez serwer. Nie mówi natomiast nic o liczbie przetworzonych lub zwróconych wierszy. Jest również możliwe, że zapytanie zostanie wykonane poprawnie, nie przetwarzając lub zwracając żadnych wierszy.

Czyli muszę to:
  1. <?php
  2. if(!@mysql_query($spr) == 0) {
  3. ?>

zastąpić tym:
  1. <?php
  2. if(@mysql_query($spr) == TRUE) {
  3. ?>

? blink.gif
regua
Cytat(vtuner @ 2006-01-21 09:38:03)
nic dziwnego ze to nie wychodzi jak jest zle

  1. <?php
  2. $spr = mysql_query("SELECT * FROM user WHERE kraj = $kraj");
  3.             if(mysql_num_rows($spr) == 1) {
  4.             echo "Ten kraj jest już w użyciu. Wybierz inny.";
  5.             } else {
  6.                if(mysql_query("INSERT INTO user VALUES ('$login', '$haslo', '$kraj')")) {
  7.             echo("Rejestracja przebiegła pomyślnie!<br>"); }
  8. ?>

Teraz nic nie wyświetla :/
crash
Nic nie zrozumiałeś. Posta wyżej masz gotowca, nie chce Ci się myśleć to go użyj.
regua
Cytat(crash @ 2006-01-21 09:44:39)
Nic nie zrozumiałeś. Posta wyżej masz gotowca, nie chce Ci się myśleć to go użyj.

Gdzie mam gotowca questionmark.gif
Wkleiłem kod, próbowałem zmian i nic...

dry.gif
SongoQ
  1. <?php
  2. $spr = mysql_query("SELECT * FROM user WHERE kraj = $kraj");
  3. if(mysql_num_rows($spr) == 1) {
  4. echo "Ten kraj jest już w użyciu. Wybierz inny.";
  5. } else {
  6.  if(mysql_query("INSERT INTO user VALUES ('$login', '$haslo', '$kraj')")) {
  7. echo("Rejestracja przebiegła pomyślnie!<br>"); }
  8. else
  9. echo 'Jakis blad ........ pomysl i poszukaj gdzie jest bleeeeeee';
  10. ?>
regua
Nie działa sad.gif

Oto cały kod:
[php] <?php
$login = $_POST['login'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$kraj = $_POST['kraj'];
$dbc = mysql_connect('localhost', 'xxx', 'xxx') or die("Nie mogę połączyć");
mysql_select_db('xxx') or die("Nie mogę wybrać bazy");
$spr = mysql_query("SELECT * FROM user WHERE kraj = $kraj");
if(mysql_num_rows($spr) == 1) {
echo "Ten kraj jest już w użyciu. Wybierz inny.";
} else {
if(mysql_query("INSERT INTO user VALUES ('$login', '$haslo', '$kraj')")) {
echo("Rejestracja przebiegła pomyślnie!<br>"); }
else
echo 'Jakis blad ........ pomysl i poszukaj gdzie jest bleeeeeee';
}
?>

I wyskakuje "Jakis blad ........ pomysl i poszukaj gdzie jest bleeeeeee" dry.gif
SongoQ
Heheheh. To chyba dziala.
Kraj jest jako string? bo jesli tak to ma byc ''
regua
Cytat(SongoQ @ 2006-01-21 11:36:31)
Heheheh. To chyba dziala.
Kraj jest jako string? bo jesli tak to ma byc ''

LOGIN i HASŁO pobierają dane z pól <input type="text">, a KRAJ z listy <select>, wszystkie trzy są wartościami tekstowymi.
SongoQ
  1. <?php
  2.  $spr = mysql_query("SELECT * FROM user WHERE kraj = '$kraj'");
  3. ?>
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.