Witam serdecznie!
Występuję u mnei taki błąd, czy ktoś wie jak go wyeliminować? I co dokładnie oznacza.
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in
W internecie było coś napsiane o nadpisywaniu zmiennych, ale pozmienialem i błąd nadal występuje.
@edit Podrzucam kod, postaram się go skrócić do wystarczającego minimum :P
To może od początku, przy rejestracji użytkownika, powinna się tworzyć baza danych jego firmy i się tworzyła, jednak teraz już się nie tworzy. Zmiana nastąpiła jak zacząłem zmieniać inne podstrony związane.
Może pierwsze pytanie, to czy zapytanie sql CREATE jest dobre:
<?php
include '/strony/configure.php';
@db_connect();
if(!$_SESSION['logged'] ) {
echo<<<END
<form method="post" action="index.php?page=rejestracja">
<center>
<fieldset class="ramka2">
<legend><h2>Rejestracja pracowników</h2></legend>
<p><center>
<z>Login:<z><br>
<input class="ramkamała" type="text" value="" name="name">
</p>
<p>
<z>Hasło:<z>
<input class="ramkamała" type="password" value="" name="password">
</p>
<p>
<z>Powtórz hasło:<z>
<input class="ramkamała" type="password" value="" name="password2">
</p>
<p>
<z>E-mail:<z>
<input class="ramkamała" type="text" value="" name="email">
<z>Firma:<z>
<input class="ramkamała" type="text" value="" name="firma">
</p>
</fieldset >
<p>
<input type="submit" value="Zarejestruj" >
</p>
</form>
END;
// jeśli zostanie naciśnięty przycisk "Zarejestruj"
if(isset($_POST['name'])) {
// filtrujemy dane
$_POST['name'] = clear($_POST['name']);
$_POST['password'] = clear($_POST['password']);
$_POST['password2'] = clear($_POST['password2']);
$_POST['email'] = clear($_POST['email']);
$_POST['firma'] = clear($_POST['firma']);
$firma = $_POST['firma'];
// sprawdzamy czy wszystkie pola zostały wypełnione
if(empty($_POST['name']) || empty($_POST['password']) || empty($_POST['password2']) || empty($_POST['email']) || empty($_POST['firma'])) {
echo '<err>Musisz wypełnić wszystkie pola.</err>';
// sprawdzamy czy podane dwa hasła są takie same
} elseif($_POST['password'] != $_POST['password2']) {
echo '<b><p style="color:red;">Podane hasła różnią się od siebie.</err>';
// sprawdzamy poprawność emaila
} elseif(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
echo '<err>Podany email jest nieprawidłowy.</err>';
} else {
// sprawdzamy czy są jacyś uzytkownicy z takim loginem lub adresem email
$result = mysql_query("SELECT Count(user_id) FROM `users` WHERE `user_name` = '{$_POST['name']}' OR `user_email` = '{$_POST['email']}' OR `user_from` = '{$_POST['firma']}'");
$row = mysql_fetch_row($result);
if($row[0] > 0) {
echo '<err>Już istnieje użytkownik z takim loginem, adresem e-mail lub pochodzi z tej samej firmy.</err>';
} else {
// jeśli nie istnieje to kodujemy haslo...
$_POST['password'] = codepass($_POST['password']);
// i wykonujemy zapytanie na dodanie usera
mysql_query("INSERT INTO `users` (`user_name`, `user_password`, `user_email`, `user_regdate`, `user_from`) VALUES ('{$_POST['name']}', '{$_POST['password']}', '{$_POST['email']}', '".time()."', '{$_POST['firma']}')");
echo '<z>Zostałeś poprawnie zarejestrowany! Możesz się teraz <a href="index.php?page=logowanie">zalogować</a>.</z>';
//tworzenie tabeli firmy
$result_mc = mysql_query("CREATE TABLE `$firma` (
`id_thing` int NOT NULL auto_increment,
`name_thing` varchar(255),
`thing_stan` boolean,
`desc_thing` text,
`amount_thing` int,
PRIMARY KEY (`id_thing`)
)" or die("BŁĄD: nie można utworzyć tabeli"));
}
}
}
} else {
}
db_close();
?>
Jeśli chodzi orejestrację, to nie wywala tutaj żadnego błędu.
Bład wywala dopiero dla nowo zarejestrowanego użytkownika, który jeszcze nie ma rekordów wpisanych w baze(dla użytkownika zarejestrowanego i mającego już jakieś rekordy jest ok), no i w sumie baza dancyh się nie tworzy(w phpmyadmin jej nie ma). Błędy wywala przy podstronie gdzie się wyświetlają wyniki pobierania z bazy danych.