Problem z pobieraniem danych z MySQL


(Mbronicki) #1

Witam! mam problem z tym kodem:

<?php
require_once('db.php');
$ip = $_SERVER['REMOTE_ADDR']; 
// odbieramy dane z formularza 
$login = substr(addslashes(htmlspecialchars($_POST['login'])),0,32);
$haslo = substr(addslashes($_POST['pass']),0,32);
$vhaslo = substr($_POST['pass2'],0,32);
$email = substr($_POST['email'],0,32);
$login = trim($login);
$sprofile = $_POST['sprofile'];
$spr1 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login='$login' LIMIT 1")); //czy user o takim loginu istnieje
$spr2 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE email='$email' LIMIT 1")); // czy user o takim emailu istnieje
$pos = strpos($email, "@");
$pos2 = strpos($email, ".");
$spr4 = strlen($login);
$spr5 = strlen($haslo);
if (!$login || !$email || !$haslo || !$vhaslo ) {
$komunikaty .= "Musisz wypełnić wszystkie pola!<br>"; }
if ($spr4 < 4) {
$komunikaty .= "Login musi mieć przynajmniej 4 znaki<br>"; }
if ($spr5 < 4) {
$komunikaty .= "Hasło musi mieć przynajmniej 4 znaki<br>"; }
if ($spr1[0] >= 1) {
$komunikaty .= "Ten login jest zajęty!<br>"; }
if ($spr2[0] >= 1) {
$komunikaty .= "Ten e-mail jest już używany!<br>"; }
if ($haslo != $vhaslo) {
$komunikaty .= "Hasła się nie zgadzają ...<br>";}
if ($pos == false OR $pos2 == false) {
$komunikaty .= "Nieprawidłowy adres e-mail<br>"; }
//jesli cos jest nie tak to blokuje rejestracje i wyswietla bledy
if ($komunikaty) {
echo '
<b>Rejestracja nie powiodła się, popraw następujące błędy:</b><br>
'.$komunikaty.'<br>';
} else {
//jesli wszystko jest ok dodaje uzytkownika i wyswietla informacje
$login = str_replace ( ' ','', $login );
$haslo = md5($haslo); //szyfrowanie hasla

mysql_query("INSERT INTO `users` (login, password, email, ip, sprofile) VALUES('$login','$haslo','$email','$ip','sprofile')") or die("Nie mogłem Cie zarejestrować!");
}
?>

Otóż po dostarczeniu mu danych formularzem wyświetla:

 

 

Warning : mysql_fetch_array() expects parameter 1 to be resource, boolean given in  C:\xampp\htdocs\register.php  on line  11


(dr.boczek) #2

Mysql_fetch_array spodziewa się tablicy w wyniku zapytania a “select count(*)” tablicy nie zwróci tylko jeden wiersz. Zmień na “mysql_fetch_row”. To tak na szybko…


(Mbronicki) #3

Nastąpiła lekka zmiana :slight_smile:

 

Warning : mysql_fetch_row() expects parameter 1 to be resource, boolean given in  C:\xampp\htdocs\register.php  on line  11


#4

(dr.boczek) #5

Weź wywal zapytanie do bazy do osobnej zmiennej bo nie wiadomo co zwraca mysql_query() i czy w ogóle to się łączy z bazą i czy zapytanie wykonuje się.


(Grzelix) #6
INSERT INTO `users` (login, password, email, ip, sprofile) VALUES('$login','$haslo','$email','$ip','sprofile')

Przy sprofile brakuje znaku $.

 

Spróbuj jakoś uporządkować ten kod: korzsystaj z metod, nie używaj zmiennych a’la spr4 tylko np: dlugoscLoginu itd, itp