Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подскажите функцию
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Подскажите функцию

Страниц (2): [1] 2 »
 

1. Onyx - 30 Декабря, 2006 - 16:39:54 - перейти к сообщению
Есть таблица(client) в БД. Одна из колонок таблицы (name)
Я хочу через страницу удалять данный из этой таблицы.
Создал текстовое поле и кнопку

Цитата:

<form method= "post" action= "index.php" >
<input type="text" name="name">
<input type="submit" name="delete" value="Delete">
</form>

<?
$host = "localhost";
$user = "user";
$password = "secret_password";

if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}

mysql_query ("DELETE FROM client WHERE name = "$_POST[name]" ");

?>


Пробывал через mysql_query не получилось.
2. evgenijj - 30 Декабря, 2006 - 16:46:49 - перейти к сообщению
Забыл выбрать базу данных, с которой будешь работать
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbname = "mydatabase";
  4. $select_db = mysql_select_db ( $dbname );
  5. if ( !$select_db )
  6. {
  7.     exit("<p >В настоящий момент база данных не доступна,
  8.               поэтому корректное отображение страницы невозможно.</p >");
  9. }
  10. ?>
  11.  


Да, и еще
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. mysql_query ("DELETE FROM client WHERE name = '".$_POST["name"]."'");
  4. ?>
  5.  
3. Onyx - 30 Декабря, 2006 - 16:55:17 - перейти к сообщению
Ну а впринципе через функцию mysql_query можно удалять и вводить строки ?
4. evgenijj - 30 Декабря, 2006 - 16:57:25 - перейти к сообщению
Onyx пишет:
Ну а впринципе через функцию mysql_query можно удалять и вводить строки ?

Ты не поверишь: именно для этого и создана эта функция Улыбка
5. Onyx - 30 Декабря, 2006 - 16:59:58 - перейти к сообщению
Проста везде в примерах описывается запрос (SELECT) вот и поинтересовался Улыбка Ок спасибо буду пробывать.
6. evgenijj - 30 Декабря, 2006 - 17:20:38 - перейти к сообщению
Давай так: мухи - отдельно, котлеты - отдельно. Ты пишешь запрос к БД на языке SQL:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT id, name, email FROM users WHERE 1 ORDER BY name;";
  3.  

Выполняешь этот запрос с помощью функции mysql_query. Эта функция позволяет выполнить запрос к БД: SELECT, INSERT, DELETE, UPDATE и т.п.
PHP:
скопировать код в буфер обмена
  1.  
  2. $res = mysql_query( $query );
  3.  

Потом обрабатываешь полученные данные
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if ( mysql_num_rows( $res ) > 0 )
  4. {
  5.     echo "<table border='1'>";
  6.     while ( $user = mysql_fetch_array( $res ) )
  7.     {
  8.         echo "<tr><td>".$user["name"]."</td><td>".$user["email"]."</td></tr>";
  9.     }
  10.     echo "</table>";
  11. }
  12. ?>
  13.  
7. Onyx - 30 Декабря, 2006 - 18:14:48 - перейти к сообщению
У меня в БД есть 6 таблиц
Я хочу зделать панель админа на страничке для того чтобы удалять записи из этих таблиц.
Вот весь мой код:

Получаю доступ к БД

Цитата:
<html>
<title>Administr&#257;tora panele</title>
<body>
<?
$host = "localhost";
$user = "user";
$password = "password"];


if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}

?>


Затем создаю саму панель. Один раскрывающейся список, текстовое поле и кнопка

Цитата:
<form method = post action = "index.php" >
<select name = "variants" >
<option value="1"> </option>
<option value="2">TABLE1</option>
<option value="3">TABLE2</option>
<option value="4">TABLE3</option>
<option value="5">TABLE4</option>
<option value="6">TABLE5</option>
<option value="7">TABLE6</option>
</select>
<p>Select name: <input type="text" name="name">
<input type="submit" name="submit" value="Delete">
</form>


Принцып работы: Человек выбирает из списка таблицу, вводит в поле имя и нажимает кнопку Delete и происходит удаление строки с выбранным именем из выбранной таблицы.

Пишем скрипт для 1 варианта:

Цитата:

<?
if ($_POST["variants"] == 2 {

$dbname = "mydatabase";
$select_db = mysql_select_db ( $dbname );
if ( !$select_db )
{
exit("<p >В настоящий момент база данных не доступна,
поэтому корректное отображение страницы невозможно.</p >");
}

mysql_query ("DELETE FROM ' TABLE1 ' WHERE name = ' ".$_POST[name]." ' ");
}
?>
</body>
</html>


В итоге на странице НИЧЕГО не отображается и в логах пишет:
Цитата:
[error] [client 127.0.0.1] PHP Parse error: parse error, unexpected '{' in C:wwwindex.php on line 36

Вот в этой строке :
Цитата:
if ($_POST["variants"] == 2 {


Я уже по всякому пробывал и не могу понять что ему не нравится ОгорчениеНахмурился
8. f0rm4t - 30 Декабря, 2006 - 18:36:51 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. if ($_POST["variants"] == 2) {
9. Onyx - 30 Декабря, 2006 - 20:10:40 - перейти к сообщению
Мндааааааааааа у меня нет слов Растерялся чувствую себе ослом :insane:
Спасибо Подмигивание\n\n(Добавление)
Поехали дальше. теперь все отображается и все ок. Но когда выбираем 1 вариант, указываю имя и нажимаем на кнопку Delete он не удаляет строку с выбранным именем, а в логах пишет что в этой строке:
Цитата:
mysql_query ("DELETE FROM ' TABLE1 ' WHERE name = ' ".$_POST[name]." ' ");

Use of undefined constant name - assumed 'name'
А если поставить
Цитата:
mysql_query ("DELETE FROM ' TABLE1 ' WHERE name = ' ".$_POST['name']." ' ");

То в логах ничего не пишется но удалять строку он всеравно отказывается Растерялся
10. f0rm4t - 30 Декабря, 2006 - 21:32:11 - перейти к сообщению
Вот еще так можно:
PHP:
скопировать код в буфер обмена
  1. mysql_query ("DELETE FROM ' TABLE1 ' WHERE name='$_POST[name]'");


Проверь передается ли `name`, чему она равна, и есть ли в БД запись с таким значением поля `name`;
11. evgenijj - 30 Декабря, 2006 - 23:28:47 - перейти к сообщению
У тебя пробел перед именем таблицы TABLE1 и после. И пробел перед значением $_POST["name"] и после - это ошибка:
mysql_query ("DELETE FROM `*TABLE1*` WHERE name = '*".$_POST["name"]."*' ");
И имя таблицы нужно заключать либо в обратные кавычки `, либо вообще не использовать кавычки:
mysql_query ("DELETE FROM `TABLE1` WHERE name = '".$_POST["name"]."'");
mysql_query ("DELETE FROM TABLE1 WHERE name = '".$_POST["name"]."'");
Поставь себе редактор с подсветкой кода (например Notepad++) - будет проще искать синтаксические ошибки.
12. Onyx - 02 Января, 2007 - 13:39:36 - перейти к сообщению
Всем спасибо все заработало Радость
Но опять появилась проблемка Хм

Решил я поставить проверку на лог и пароль. Создал отдельную страницу (pass.php) с кодом
Цитата:
<html>
<body>
<form action = "index.php" method= post>
<p>Login: <input type= "text" name= "login">
<p>Password: <input type= "text" name= "pass">
<input type = "submit" name= "submit" value= "OK">
</form>
</body>
</html>


И в начале страницы index.php (код которой я выкладывал выше) зделал маленькое изменение.

Цитата:
<html>
<title>Administr&#257;tora panele</title>
<body>
<?
mysql_connect("localhost", "$_POST[login]", "$_POST[pass]")
or die("Could not connect : " . mysql_error());
print "Connected successfully";

?>


Терерь когда я ввожу неверный пароль для пользователя "root" на странице (pass.php) он открывает (index.php) и выдает только ошибку
Цитата:
Could not connect : Access denied for user 'root'@'localhost' (using password: YES)

Все как и должно быть. Когда логин и пароль введены верно, то пишется
Цитата:
Connected successfully
и отображается вся страница (index.php) и тут возникает проблемка, когда я хочу опять таки удалить запись.
Выбираю таблицу, пишу в текстовом поле (name) кого хочу удалить и нажимаю Delete. В результате получаю
Цитата:
Could not connect : Access denied for user 'ODBC'@'localhost' (using password: NO)

Непонятно Хм я же как root зашел причем тут ODBC Однако
13. evgenijj - 02 Января, 2007 - 13:56:16 - перейти к сообщению
Форма для удаления записей из таблиц находится в файле index.php. В этом же файле - обработчик формы. Но откуда скрипт будет брать значения $_POST["login"], $_POST["pass"], если эти переменные ты получаешь из формы в файле pass.php?

Кстати, по поводу административной панели для добавления / удаления / редактирования записей в БД. Я тут недавно писал ответ на аналогичный вопрос: http://forum.php.su/topic.php?fo...=28&topic=34
14. Onyx - 02 Января, 2007 - 15:13:59 - перейти к сообщению
Ну мы же потом передаем через метод POST эти переменные в файл index.php и присваиваем их значения переменным $user и $password. Иначе он бы не реагировал на не верный пароль.
Повторюсь: Когда в фаиле pass.php в поле логин вводим (root) а в поле Password вводим неверный пароль, то открывается index.php и выводится ошибка
Цитата:
Could not connect : Access denied for user 'root'@'localhost' (using password: YES)

А когда вводим верный пароль то открывается index.php и выводится
Цитата:
Connected successfully


Проверка на логин и пароль находится то в index.php значит скрипт нормально берет значения из полей Логин и Пароль в фаиле pass.php и вставляет их в index.php
Растерялся
15. evgenijj - 02 Января, 2007 - 18:29:23 - перейти к сообщению
Тяжелый случай.
index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <title>Admin</title>
  4. <body>
  5. <form method = "post" action = "index.php" >
  6. <select name = "variants" >
  7. <option value="1"> </option>
  8. <option value="2">TABLE1</option>
  9. <option value="3">TABLE2</option>
  10. <option value="4">TABLE3</option>
  11. <option value="5">TABLE4</option>
  12. <option value="6">TABLE5</option>
  13. <option value="7">TABLE6</option>
  14. </select>
  15. <p>Select name: <input type="text" name="name">
  16. <input type="submit" name="submit" value="Delete">
  17. </form>
  18. <br/><br/>
  19.  
  20. <?PHP
  21.  
  22. // Посмотрим, какие значения содержим массив $_POST
  23. foreach ( $_POST as $key => $value )
  24. {
  25.     echo "key=".$key." value=".$value."<br/>";
  26. }
  27.  
  28. if ( !mysql_connect( "localhost", $_POST["login"], $_POST["pass"] ) );
  29. {
  30.     echo "<h2>MySQL Error!</h2>";
  31.     exit;
  32. }
  33.  
  34. $dbname = "mydatabase";
  35. $select_db = mysql_select_db ( $dbname );
  36. if ( !$select_db )
  37. {
  38.     exit("<p >В настоящий момент база данных не доступна,
  39.          поэтому корректное отображение страницы невозможно.</p >");
  40. }
  41.  
  42. if ($_POST["variants"] == 2)
  43. {
  44.     mysql_query ("DELETE FROM TABLE1 WHERE name = '".$_POST["name"]."'");
  45. }
  46.  
  47. ?>
  48.  


pass.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <body>
  4. <form action = "index.php" method= "post">
  5. <p >Login: <input type= "text" name= "login">
  6. <p >Password: <input type= "text" name= "pass">
  7. <input type = "submit" name= "submit" value= "OK">
  8. </form>
  9. </body>
  10. </html>
  11.  


Заполним форму в файле pass.php и нажмем кнопку "OK":
PHP:
скопировать код в буфер обмена
  1.  
  2. key=login value=mylogin
  3. key=pass value=mypassword
  4. key=submit value=OK
  5.  


Теперь заполним форму в файле index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. key=variants value=2
  3. key=name value=Peter
  4. key=submit value=Delete
  5.  


Как видишь, переменные $_POST["login"], $_POST["pass"] не определены.

 

Powered by ExBB FM 1.0 RC1