Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PHP|MySQL] WEB интерфейс работы с базой данных, Сделать базу данных книжного магазина.  
:(
    Опции темы
Melkiy666
Дата 25.1.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.1.2007

Репутация: нет
Всего: нет



Нужно сделать веб-интерфейс (на php) работы с бд mysql. 
На веб странице должны быть формы добавления книг в базу данных интернет магазина, а также функции  удаления книг и поиск.
Поля: 
- название книги
- автор
-год выпуска
-цена.  
 
Также можно любой аналогичный проект. Если подобные темы уже были, скиньте линк.  Заранее спасибо.

вот что  уже есть:

index.html
Код

<html>
<head><title>Bookstore</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form action="add.php" method="post">
Name:  <input type="text" name="name" size="25"><br>
Author: <input type="text" name="author" size="10"><br>
Price:   <input type="text" name="price" size="10"><br><br>
<input type="submit" name="go" value="Add book"><br>
</form>
</body>
</html>


add.php
Код

<?php
if ( isset($_POST['go']) ) {
    $mysql = mysql_connect("localhost", "user", "password") or die('Ошибка при подключении к БД!');
    mysql_select_db("bookstore") or die('Ошибка при выборе БД!');
    $query = "INSERT INTO `books` values ('', '" . $_POST['name'] . "', '" . $_POST['author'] . "', '" . $_POST['price'] . "');";
    $result = mysql_query($query) or die('Ошибка при запросе к БД!');
    print( "\nadded" );
}
?>


Это сообщение отредактировал(а) Rodman - 26.1.2009, 14:21
PM MAIL   Вверх
bars80080
Дата 26.1.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



а за чем дело стало? дальше

вывод данных:
Код

$sql = 'select * from books';
$q = mysql_query($sql);
echo '<table>';
while($r = mysql_fetch_array($q)) {
    echo '<tr><td>'.$r['name'].'</td><td>'.$r['author'].'</td>'; // ну или как там у тебя поля называются
    echo '<td><a href="?delete='.$r['id'].'">удалить</a></td></tr>'; // кнопка удалить
}
echo '</table>';

для удаления такой алгоритм:
Код

if(!empty($_GET['delete'])) {
    $sql = 'delete from books where id='.$_GET['delete'];
    $q = mysql_query($sql);
}

для поиска делаешь ещё одну форму:
<form method="post"><input name="search" /><input type="submit" value="go" /></form>
и далее создаёшь дополнительный хвост, который будет цепляться к первому примеру:
Код

if(!empty($_POST['search'])) {
    $ql = ' where name like "%'.$_POST['search'].'%" ';
}
else { $ql = ''; }

// далее то же построение таблицы:
$sql = 'select * from books'.$ql;
$q = mysql_query($sql);
echo '<table>';
while($r = mysql_fetch_array($q)) {
    echo '<tr><td>'.$r['name'].'</td><td>'.$r['author'].'</td>'; // ну или как там у тебя поля называются
    echo '<td><a href="?delete='.$r['id'].'">удалить</a></td></tr>'; // кнопка удалить
}
echo '</table>';
осталось всё объединить в один код и всё


конечно, потом надо будет разобраться с безопасностью и прочая, но это потом
PM MAIL WWW   Вверх
Melkiy666
Дата 28.1.2009, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.1.2007

Репутация: нет
Всего: нет



а как создать базу данных и таблицу в ней?  если можно поподробнее - что добавить в index.hml, а что в create.php.
PM MAIL   Вверх
bars80080
Дата 28.1.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



ну, создание БД и таблицы - дело одноразовое. а какие поля в ней создавать - извини, это ты должен знать сам

что-то вроде:
Код

CREATE database bookstore;

CREATE TABLE `books` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `date` int(10) unsigned default '0',
  `name` tinytext,
  `author` varchar(64) default '',
  `god` int(10) unsigned default '0',
  `price` float(12,2) unsigned default '0'
);


а весь скрипт можно запихерить в один файл:

Код

<html>
<head><title>Bookstore</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form method="post">поиск <input name="search" /><input type="submit" value="go" /></form>
<form method="post">
Name:  <input type="text" name="name" size="25"><br>
Author: <input type="text" name="author" size="10"><br>
Price:   <input type="text" name="price" size="10"><br><br>
<input type="submit" name="go" value="Add book"><br>
</form>
<?php
$mysql = mysql_connect("localhost", "user", "password") or die('Ошибка при подключении к БД!');
mysql_select_db("bookstore") or die('Ошибка при выборе БД!');
if(!empty($_GET['delete'])) {
    $sql = 'delete from books where id='.$_GET['delete'];
    $q = mysql_query($sql);
}
if ( isset($_POST['go']) ) {
    $query = "INSERT INTO `books` values ('', '" . $_POST['name'] . "', '" . $_POST['author'] . "', '" . $_POST['price'] . "');";
    $result = mysql_query($query) or die('Ошибка при запросе к БД!');
    print( "\nadded" );
}
if(!empty($_POST['search'])) {
    $ql = ' where name like "%'.$_POST['search'].'%" ';
}
else { $ql = ''; }

// далее то же построение таблицы:
$sql = 'select * from books'.$ql;
$q = mysql_query($sql);
echo '<table>';
while($r = mysql_fetch_array($q)) {
    echo '<tr><td>'.$r['name'].'</td><td>'.$r['author'].'</td>'; // ну или как там у тебя поля называются
    echo '<td><a href="?delete='.$r['id'].'">удалить</a></td></tr>'; // кнопка удалить
}
echo '</table>';
?>
</body>
</html>

может даже работать будет

Это сообщение отредактировал(а) bars80080 - 28.1.2009, 21:12
PM MAIL WWW   Вверх
Melkiy666
Дата 28.1.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.1.2007

Репутация: нет
Всего: нет



bars80080, спасиббо за помошь! блин у меня в голове каша уже. надо все самого начала постепенно изучать. когда просто функции пхп вроде понятно. а когда в хтмл уже не понятно как там переменные передаются между ними и как происходит взаимодействие. 
PM MAIL   Вверх
Melkiy666
Дата 29.1.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.1.2007

Репутация: нет
Всего: нет



вобщем вот что у меня получилось
Код

<html>
 <head>
  <title>Testing PHP</title>
 </head>
 <body>
 
  <?php echo 'Hello, world!'; ?>
    <!--Проверяем соединение с mysql-->
    <?php
    $dblocation = "localhost";
    $dbname = "bookstore";
    $dbuser = "user";
    $dbpasswd = "password";
    $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    if (!$dbcnx) 
    {
      echo( "<P><br>Cannot connect to database server!</P>" );
      exit();
    }
    else echo ("<br>Connected to database server!");
    if (!@mysql_select_db($dbname, $dbcnx)) 
    {
      echo( "<P>Cannot connect to database $dbname !</P>" );
      exit();
    } else echo("<br>Connected to database $dbname !");
    ?>
    <!--Проверяем соединение с mysql-->
    
        
  <br>
             
    <!--проверяем существует ли таблица books-->
                <?php
                $otvet = mysql_query ("select * from books;");
                if(!$otvet)
                echo("Tables are not exists!");
                ?>
    <!--проверяем существует ли таблица books-->
    
    <!--Создаем талицу books-->
    <?php 
    // Создаём таблицу customer
    // т.е. делаем sql запрос
    
    $query = "create table books (id int(2) primary key
    auto_increment, name varchar(100),author varchar(100), price int(20))";
    mysql_query($query);   
    echo ("Table created!");
    ?>
    
    <!--Создаем талицу books-->
                
                
                
    
    
    <!--Выводим содержимое таблицы books-->
    <form  method="post">
    <input type="submit" name="show"   value="Show All"><br>
    </form>
     <?php
    if ( isset($_POST['show']) ) {    
       
    $otvet = mysql_query("select * from books;");
    if($otvet)
    { echo ("<br>Content of database $dbname:");
      // Определяем таблицу и заголовок
      echo "<table border=1>";
      echo "<tr><td>id</td><td>name</td><td>author</td><td>price</td></tr>";
      // Так как запрос возвращает несколько строк, применяем цикл
      while($rezultat = mysql_fetch_array($otvet))
      {
        echo "<tr><td>".$rezultat['id']."</td><td>".$rezultat['name']."</td><td>".$rezultat['author']."</td><td>".$rezultat['price']."</td></tr>";
      }
      echo "</table>";
    }
    else
    {
      echo "<p><b>Error: ".mysql_error()."</b><p>";
      exit();
    } }
    ?> 
    <!--Выводим содержимое таблицы books-->
    
    
    
    <br>
    
    <form  method="post">
              <br>
id:     <input type="text"   name="delete" size="10"><br>

          <input type="submit" name="del"   value="Delete book"><br>
</form>
    <?php
    if ( isset($_POST['del']) ) {
     
  // Удаляем выбранную запись
  $del="delete from books where (id='".$_POST['delete']."')";
  $resdel = mysql_query($del) or die ("Error: ".mysql_error ());
  echo("Deleted");
};

    

    
    ?>
    
    
    
    
    
    
    
    
    
    
    <br><br>
    <!--Форма добавления книги-->    
<form  method="post">
              <br>
Name:     <input type="text"   name="name" size="10"><br>
Author:   <input type="text"   name="author" size="10"><br>
Price:    <input type="text"   name="price"  size="10"><br>
          <input type="submit" name="go"   value="Add book"><br>
</form>
    <!--Форма добавления книги-->         
  
    <!--Функция добавления книги-->
 <?php
    if ( isset($_POST['go']) ) {
    $query = "INSERT INTO books (name,author, price) VALUES ('".$_POST['name']."', '".$_POST['author']."', '".$_POST['price']."')";
    $result = mysql_query ($query)
or die ("Error: ".mysql_error ());
echo "Added";
}
?>
   <!--Функция добавления книги--> 
   
   
  
  
  
  
  
  
  
 </body>
</html>


PM MAIL   Вверх
bars80080
Дата 29.1.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



ну, теперь работа над ошибками:


Цитата(Melkiy666 @  29.1.2009,  16:03 Найти цитируемый пост)
                if(!$otvet)
                echo("Tables are not exists!");

неверная проверка, такой будет даже в том случае, если таблица существует, но у неё нет записей
смысла в создании таблицы в этом скрипте нет. нужно уяснить одну вещь: таблицы создаются один раз и в дальнейшем уже не правятся. не потому что это нельзя, нет, можно, но это противоречит понятию упорядоченных данных и самой СУБД. один раз создал каким-нибудь отдельным скриптом и всё. забыл об этом
Цитата(Melkiy666 @  29.1.2009,  16:03 Найти цитируемый пост)
    $query = "create table books (id int(2) primary key
    auto_increment, name varchar(100),author varchar(100), price int(20))";
    mysql_query($query);   
    echo ("Table created!");
в данном случае, у тебя не стоит проверок. значит ты каждый раз пытаешься создать таблицу

Цитата(Melkiy666 @  29.1.2009,  16:03 Найти цитируемый пост)
  $del="delete from books where (id='".$_POST['delete']."')";
теперь о безопасности. для экранирования входящих переменных, нужно добавить одну деталь:
Код

 $del="delete from books where (id='".mysql_real_escape_string($_POST['delete'])."')";
тоже самое и здесь надо сделать на каждую переменную:
Цитата(Melkiy666 @  29.1.2009,  16:03 Найти цитируемый пост)
    $query = "INSERT INTO books (name,author, price) VALUES ('".$_POST['name']."', '".$_POST['author']."', '".$_POST['price']."')";


Добавлено через 1 минуту и 19 секунд
кстати, я пример делал в одинарных кавычках, а двойные использовал внутри. можешь рассказать, зачем ты их поменял местами? чисто интересно
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.