Dzień dobry,mam problem z rejestracją.Polega on na tym,że mam datę w int(MYSQL) i <select>(HTML) i nie mogę zrobić tak,żeby uzgodnić.Szukałem w internecie i nic nie znalazłem.
Oto błędy:
Notice: Undefined index: birth in C:\xampp\htdocs\tablica\editprofile.php on line 21
Notice: Uninitialized string offset: 0 in C:\xampp\htdocs\tablica\editprofile.php on line 22
Notice: Uninitialized string offset: 0 in C:\xampp\htdocs\tablica\editprofile.php on line 22
Notice: Uninitialized string offset: 0 in C:\xampp\htdocs\tablica\editprofile.php on line 22
Notice: Undefined index: user_plec in C:\xampp\htdocs\tablica\editprofile.php on line 117
I jeszcze coś wyskakuje:
Array (
[fname] =>
[lname] =>
[email] =>
[new_password] =>
[new_password2] =>
[plec] =>
[data_urodzenia] => Array (
[dzien] =>
[miesiac] =>
[rok] => )
[password] =>
[website] =>
[from] =>
[birth] => )
A oto kod:
<?php
include 'config.php';
db_connect();
check_login();
$user_data = get_user_data();
// jeśli zostanie naciśnięty przycisk "Edytuj profil"
if(isset($_POST['email'])) {
// filtrujemy dane
$_POST['website'] = clear($_POST['website']);
$_POST['from'] = clear($_POST['from']);
$_POST['new_password'] = clear($_POST['new_password']);
$_POST['new_password2'] = clear($_POST['new_password2']);
$_POST['password'] = clear($_POST['password']);
$_POST['email'] = clear($_POST['email']);
$_POST['fname'] = clear($_POST['fname']);
$_POST['lname'] = clear($_POST['lname']);
$_POST['plec'] = clear($_POST['plec']);
$_POST['birth'] = clear($_POST['birth']);
$data_urodzenia = date($_POST['birth']['rok'].'.'.$_POST["birth"]['miesiac'].'.'.$_POST["birth"]['dzien']);
// zmienne tymczasowe na treść błędu
$err = '';
// i zapytanie sql
$up2 = '';
// jeśli zostanie podane nowe hasło lub inny email
if(!empty($_POST['new_password']) || $_POST['email'] != $user_data['user_email']) {
// sprawdzamy czy zostało podane aktualne hasło
if(empty($_POST['password'])) {
$err = '<p>Jeśli chcesz zmienić hasło lub adres email musisz podać aktualne hasło.</p>';
// jeśli zostało podane to sprawdzamy czy jest poprawne
} elseif(codepass($_POST['password']) != $user_data['user_password']) {
$err = '<p>Podane aktualne hasło jest nieprawidłowe.</p>';
} else {
// jeśli wszystko jest ok...
// sprawdzamy czy user chce zmienić hasło
if(!empty($_POST['new_password'])) {
// jeśli podane dwa hasła są różne to wyświetlamy błąd
if($_POST['new_password'] != $_POST['new_password2']) {
$err = '<p>Podane hasła nie są takie same.</p>';
// jeśli wszystko jest ok, dopisujemy do zmiennej tymczasowej zapytanie do zaktualizowania hasła
} else {
$up2.= ", `user_password` = '".codepass($_POST['new_password'])."'";
}
}
// sprawdzamy czy user chce zmienić email (czy ten podany jest różny od aktualnego)
if($_POST['email'] != $user_data['user_email']) {
// sprawdzamy czy podany email jest prawidłowy
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
$err = '<p>Podany email jest nieprawidłowy.</p>';
} else {
// sprawdzamy czy istnieje taki email w bazie przy czym omijamy usera który jest zalogowany
$result = mysql_query("SELECT Count(user_id) FROM `users` WHERE `user_id` != '{$user_data['user_id']}' AND `user_email` = '{$_POST['email']}'");
$row = mysql_fetch_row($result);
if($row[0] > 0) {
$err = '<p>Już istnieje użytkownik z takim loginem lub adresem e-mail.</p>';
} else {
// jeśli wszystko jest ok to dopisujemy zapytanie do zaktualizowania emaila
$up2.= ", `user_email` = '{$_POST['email']}'";
}
}
}
}
}
// jeśli są jakieś błędy z powyższych działań to je wyświetlamy
if(!empty($err)) {
echo $err;
} else {
// jeśli nie ma błędów to wykonujemy zapytanie dopisując te na aktualizacje hasła oraz emaila - $up2
$result = mysql_query("UPDATE `users` SET `user_website` = '{$_POST['website']}', `user_from` = '{$_POST['from']}'{$up2} WHERE `user_id` = '{$user_data['user_id']}'");
if($result) {
// jeśli zapytanie się wykonało to wyświetlamy komunikat...
echo '<p>Twój profil został poprawnie zaktualizowany.</p>';
// i pobieramy od nowa dane usera aby w poniższym formularze się one zaktualizowały
$user_data = get_user_data();
} else {
// jeśli zapytanie będzie błędne to wyświetlamy treść errora
echo '<p>Niestety wystąpił błąd:<br>'.mysql_error().'</p>';
}
}
}
// wyświetlamy prosty formularz
echo '<table>
<form method="post" action="editprofile.php">
<tr>
<td>Imie:</td>
<td><input type="text" value="'.$user_data['user_fname'].'" name="fname"></td>
</tr>
<tr>
<td>Nazwisko:</td>
<td><input type="text" value="'.$user_data['user_lname'].'" name="lname"></td>
</tr>
<tr>
<td>Login:</td>
<td><input type="text" value="'.$user_data['user_name'].'" disabled="true"></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type="text" value="'.$user_data['user_email'].'" name="email"></td>
</tr>
<tr>
<td>Nowe haslo (pozostaw puste jeśli nie chcesz zmieniać):</td>
<td><input type="password" value="" name="new_password" autocomplete="off"></td>
</tr>
<tr>
<td>Powtórz nowe hasło:</td>
<td><input type="password" value="" name="new_password2" autocomplete="off"></td>
</tr>
<tr>
<td>Plec:</td>
<td><input type="text" value="'.$user_data['user_plec'].'" name="plec"></td>
</tr>
<tr>
<td>Data urodzenia(RRRR-MM-DD):</td><td>
'; print_r($_POST);?>
<select name="data_urodzenia[dzien]" value="<?php echo $user_data['user_birth']['dzien'];?>"><?php for ($i=1; $i<=31; $i++){echo "<option value='$i'>$i</option>";}?></select>
<select name="data_urodzenia[miesiac] value="<?php echo $user_data['user_birth']['miesiac'];?>""><?php for ($i=1; $i<=12; $i++){echo "<option value='$i'>$i</option>";}?></select>
<select name="data_urodzenia[rok] value="<?php echo $user_data['user_birth']['rok'];?>""><?php for ($i=2011; $i>=1900; $i=$i-1){echo "<option value='$i'>$i</option>";} ?></select>
<?php echo '</td>
</tr>
<tr>
<td>Aktualne haslo (wymagane przy zmianie emaila lub hasła):</td>
<td><input type="password" value="" name="password" autocomplete="off"></td>
</tr>
<tr>
<td>Strona WWW:</td>
<td><input type="text" value="'.$user_data['user_website'].'" name="website"></td>
</tr>
<tr>
<td>Miasto:</td>
<td><input type="text" value="'.$user_data['user_from'].'" name="from"></td>
</tr>
<tr>
<td>.</td>
<td><input type="submit" value="Edytuj profil"></td>
</tr>
</form>
</table>';
db_close();
?>
Pozdrawiam.