Witam
Borykam się z problemem dotyczącym jak w temacie, mianowicie studiuję książkę "PHP5, Apache i MySQL. Od podstaw" na potrzeb utworzenia panelu administracyjnego do strony internetowej.Skrypt działa prawie dobrze, problem występuje, gdy zalogowany administrator aktualizuje jednego użytkownika, aktualizuje wszystkich naraz w bazie danych, również przy usuwaniu użytkowników. Usuwam jednego, usuwam wszystkich z bazy danych.
Oto skrypt z książki, sprawdzałem kilka razy kod.
Podam przykład z/w książki, strona 400 jeśli ktoś posiada tą książkę.
delete_user.php
<?php
include "auth_admin.inc.php";
include "conn.inc.php";
if ($_SESSION['admin_level'] == "1") {
if (isset($_POST['submit']) && $_POST['submit'] == "Tak") { $query_delete = "DELETE FROM user_info " .
"WHERE id = '" . $_POST['id'] . "'";
$_SESSION['user_logged'] = "";
$_SESSION['user_password'] = "";
header("Refresh: 5; URL=admin_area.php"); echo "Konto zstało usunięte! " . "Zostaniesz przekierowany do obszaru administracyjnego!<br>";
echo "(Jeśli przeglądarka nie obsługuje przekierowań, " . "<a href=\"admin_area.php\">kliknij tutaj</a>)";
} else {
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>PHP5. Apache i MySQL</title>
</head>
<body>
<h1>Obaszar administracyjny</h1>
<p>
Czy na pewno chcesz usunąć użytkownika?<br />
Tej operacji nie można cofnąć!<br />
<form action="delete_user.php" method="post">
<input type="hidden" name="id" value="
<?php echo $_GET['id']; ?>">
<input type="submit" name="submit" value="Tak">
<input type="button" value=" Nie " onclick="history.go(-1);">
</form>
</p>
</body>
</html>
<?php
}
} else {
?>
Nie masz wystarczających uprawnień, aby usunąć użytkownika.<br>
<a href="admin_area.php">Kliknij tutaj</a>, aby wrócić.
<?php
}
?>
a oto skrypt do aktualizacji użytkownika może tu błąd gdzieś występuje ?
update_user.php
<?php
include "auth_admin.inc.php";
include "conn.inc.php";
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>PHP5. Apache i MySQL</title>
</head>
<body>
<h1>Aktualizacja informacji o użytkowniku</h1>
<p>
<?php
if (isset($_POST['submit']) && $_POST['submit'] == "Uaktualnij") { $query_update = "UPDATE user_info SET username = '" .
$_POST['username'] . "', password = (PASSWORD('" .
$_POST['password'] . "')), first_name = '" .
$_POST['first_name'] . "', last_name = '" .
$_POST['last_name'] . "', email = '" .
$_POST['email'] . "', city = '" .
$_POST['city'] . "', state = '" .
$_POST['state'] . "', hobbies = '" .
implode(", ", $_POST['hobbies']) . "' " . "WHERE id = '" . $_POST['id'] . "'";
$query = "SELECT * FROM user_info WHERE id = '" . $_POST['id'] . "'";
$hobbies = explode(" , ", $row['hobbies']) ?>
<b>Informacje zotały uaktualnione.</b><br />
<a href="admin_area.php">Kliknij tutaj</a>, aby powrócić do obszaru
administracyjnego.
<form action="update_user.php" method="post">
<input type="hidden" name="id" value=
<?php echo $_POST['id']; ?>">
Nazwa użytkownika: <input type="text" name="username"
value="
<?php echo $row['username']; ?>"><br />
Hasło: <input type="password" name="password"
value="">Nie jest wyświetlane<br />
Imię: <input type="text" name="first_name"
value="
<?php echo $row['first_name']; ?>"><br />
Nazwisko: <input type="text" name="last_name"
value="
<?php echo $row['last_name']; ?>"><br />
Adres email: <input type="text" name="email"
value="
<?php echo $row['email']; ?>"><br />
Miasto: <input type="text" name="city"
value="
<?php echo $row['city']; ?>"><br />
Województwo: <input type="text" name="state"
value="
<?php echo $row['state']; ?>"><br />
Zainteresowania: lub hobby (należy wybrać co najmniej jedno):<br />
<select name="hobbies[]" size="10" multiple>
<option value="Golf"<?php
} ?>>Golf</option>
<option value="Wędkarstwo"<?php
} ?>>Wędkarstwo</option>
<option value="Czytanie"<?php
} ?>>Czytanie</option>
<option value="Taniec"<?php
} ?>>Taniec</option>
<option value="Internet"<?php
} ?>>Internet</option>
<option value="Podróże"<?php
} ?>>Podróże</option>
<option value="Komputer"<?php
} ?>>Komputer</option>
<option value="Inne niż wymienione"<?php
if (in_array("Inne niż wymienione", $hobbies)) { } ?>>Inne niż wymienione</option>
</select><br /><br />
<input type="submit" name="submit" value="Uaktualnij">
</form>
<?php
} else {
$query = "SELECT * FROM user_info WHERE id = '" . $_GET['id'] . "'";
$hobbies = explode(", ", $row['hobbies']) ?>
<form action="update_user.php" method="post">
<input type="hidden" name="id" value=
<?php echo $_GET['id']; ?>">
Nazwa użytkownika: <input type="text" name="username"
value="
<?php echo $row['username']; ?>"><br />
Hasło: <input type="password" name="password"
value="">Nie jest wyświetlane<br />
Imię: <input type="text" name="first_name"
value="
<?php echo $row['first_name']; ?>"><br />
Nazwisko: <input type="text" name="last_name"
value="
<?php echo $row['last_name']; ?>"><br />
Adres email: <input type="text" name="email"
value="
<?php echo $row['email']; ?>"><br />
Miasto: <input type="text" name="city"
value="
<?php echo $row['city']; ?>"><br />
Województwo: <input type="text" name="state"
value="
<?php echo $row['state']; ?>"><br />
Zainteresowania: lub hobby (należy wybrać co najmniej jedno):<br />
<select name="hobbies[]" size="10" multiple>
<option value="Golf"<?php
} ?>>Golf</option>
<option value="Wędkarstwo"<?php
} ?>>Wędkarstwo</option>
<option value="Czytanie"<?php
} ?>>Czytanie</option>
<option value="Taniec"<?php
} ?>>Taniec</option>
<option value="Internet"<?php
} ?>>Internet</option>
<option value="Podróże"<?php
} ?>>Podróże</option>
<option value="Komputer"<?php
} ?>>Komputer</option>
<option value="Inne nię wymienione"<?php
if (in_array("Inne nię wymienione", $hobbies)) { } ?>>Inne niż wymienione</option>
</select><br /><br />
<input type="submit" name="submit" value="Uaktualnij">
<input type="button" value="Anuluj" onclick="history.go(-1);">
</form>
<?php
}
?>
</body>
</html>
Prosiłbym o pomoc, bo już sobie nie radzę.
Pytanko drugie:
Nie wiem czy mam racje ale książka narzuciła mi taki skrypt jako tworzenie nowego użytkownika w bazie danych:
CREATE TABLE user_info (
email varchar (50) NOT NULL,
username varchar (50) NOT NULL,
....
....
....
id int(10) NOT NULL DEFAULT '0'
);
Czy "id int(10) NOT NULL default '0'" przypisuje wszystkim użytkownikom "id" 0 ?
Zauważyłem, że w PHPMyAdmin wszyscy użytkownicy mają nadaną wartość "id" 0.
Czy to nie powoduje właśnie mojego problemu ?
Przepraszam za taką pisownie ale nie znam jeszcze fachowego języka jak większość tu ludzi posługuje się.
Pozdrawiam i z góry dziękuje.
Ten post edytował jerry1984 10.04.2011, 21:12:00