За последние 24 часа нас посетили 16179 программистов и 1667 роботов. Сейчас ищут 910 программистов ...

Удаление в выборке из двух таблиц

Тема в разделе "Прочие вопросы по PHP", создана пользователем fessnik, 25 май 2014.

  1. fessnik

    fessnik Новичок

    С нами с:
    25 май 2014
    Сообщения:
    2
    Симпатии:
    0
    У меня есть две таблицы:
    createTable($link,'catalog','id int(8) NOT NULL AUTO_INCREMENT,author Varchar(32),title Varchar(64),pubyear int (4),
    price int (8),PRIMARY KEY(id)');
    createTable($link,'basket','id int(11) NOT NULL auto_increment, customer varchar(32),goodsid int(11),quantity int(4),datetime VARCHAR(24) NOT NULL default 0,PRIMARY KEY (id)');
    В таблице catalog храниться имеющийся товар(книги),а в таблице basket товар который конкретный пользователь добавил себе в карзину.
    Пользователь добавляет книги по одной в корзину.Когда переходит в корзину отображаеться все что он добавил,если какието книги он добавил несколько раз то пишеться их количество.Напротив каждой книги есть ссылка удалить,которая удаляет конкретную книгу из заказа.
    Теперь вопрос- как сделать,что бы если количество книг больше одной,то предлагалось указать сколько именно книг нужно удалить,и удалялось указанное количество??Тоесть ,в корзине есть книги за авторством Шекспир в количестве 3 штуки,нужно сделать,чтобы когда я нажал удалить ,предложило ввести количество которую нужно удалить,я ввел 2 ,меня перенаправило опять на корзину(basket.php),но там в строке количество уже было 1
    Ниже мой код
    basket.php
    Код (Text):
    1. <?php
    2. $customer=$_SESSION['login'];
    3. ?>
    4. <table border="1" cellpadding="5" cellspacing="0" width="100%">
    5.     <tr>
    6.         <th>N п/п</th>
    7.         <th>Автор</th>
    8.         <th>Название</th>
    9.         <th>Год издания</th>
    10.         <th>Цена, руб.</th>
    11.         <th>Количество</th>
    12.         <th>Удалить</th>
    13.     </tr>
    14. <?php
    15. $number=0;
    16. //Запрос выбирает заказ пользователя и если есть одинаковые товары,то считает их количество
    17. $result=mysqli_query($link,"SELECT author, title, pubyear, price, basket.id, goodsid,COUNT( goodsid ) AS quantity
    18.                   FROM catalog, basket
    19.                   WHERE customer =  '$customer'
    20.                   AND catalog.id = basket.goodsid
    21.                   GROUP BY author, title");
    22. //Выводит этот запрос на страницу
    23. while($item=mysqli_fetch_assoc($result)){
    24. //номер по порядку
    25.     $number++;
    26.     ?>
    27.     <tr>
    28.         <td><?=$number?></td>
    29.         <td><?=$item['author']?></td>
    30.         <td><?=$item['title']?></td>
    31.         <td><?=$item['pubyear']?></td>
    32.         <td><?=$item['price']?></td>
    33.         <td><?=$item['quantity']?></td>
    34. //переход на delBasket.php
    35.         <td><a href="delBasket.php?del=<?=$item['goodsid']?>">Удалить</a></td>
    36.     </tr>
    37. <?php
    38. }
    39. echo "</table>";
    40.     ?>
    При нажатии на удалить переходит на delBasket:
    Код (Text):
    1. <?php
    2. //id удаляемого заказа
    3.     $del=$_GET['del']*1;
    4. $customer=$_SESSION['login'];
    5. $result=mysqli_query($link,"SELECT author, title, pubyear, price, basket.id, goodsid,COUNT( goodsid ) AS quantity
    6.                   FROM catalog, basket
    7.                   WHERE customer =  '$customer'
    8.                   AND catalog.id = basket.goodsid
    9.                   AND goodsid=$del
    10.                   GROUP BY author, title");
    11. $res=mysqli_fetch_assoc($result);
    12. //если количество больше одного,указать какое количество удалить
    13. if($res['quantity']>1){
    14.     echo "<form method='post' action='basket.php'>
    15.     <input type='number' name='quant'>
    16.     <input type='submit' value='ok' name='send'>
    17.     </form>";
    18. }
    19. //удаляем весь заказ
    20. else{
    21. queryMysql($link,"Delete FROM basket WHERE goodsid=$del");
    22. }
    23. ?>
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    По моему нескромному мнению, ты бессмысленно усложняешь задачу. Разве такое встречается где-нибудь, чтобы моно было удалить N экземпляров?
    Бывает так: редактирование количества в каждой позиции + удаление позиции целиком.
     
  3. fessnik

    fessnik Новичок

    С нами с:
    25 май 2014
    Сообщения:
    2
    Симпатии:
    0
    Ты натолкнул меня на мысль,все сделать немного по-другому. Пусть удаляется целиком.Но тогда при добавлении сделать возможность указать количество книг.Я попробывал в <input> указывать количество,но это же в форму пихать нужно,submit добавлять,а это уже не очень красиво смотрится ,да и нормально достать из конкретного инпата значение не вышло.
    Код (Text):
    1. <table border="1" cellpadding="5" cellspacing="0" width="100%">
    2.     <tr>
    3.         <th>Автор</th>
    4.         <th>Название</th>
    5.         <th>Год издание</th>
    6.         <th>Цена</th>
    7.         <th>Количество</th>
    8.         <th>В корзину</th>
    9.     </tr>
    10.  
    11. <?php
    12.     $result=mysqli_query($link,"SELECT * FROM catalog");
    13.     $result=db2array($result);
    14.     foreach ($result as $item){
    15.     ?>
    16.     <tr>
    17.         <td><?=$item['author']?></td>
    18.         <td><?=$item['title']?></td>
    19.         <td><?=$item['pubyear']?></td>
    20.         <td><?=$item['price']?></td>
    21. [b]Как достать указанное количество??[/b]
    22.         <td>#</td>
    23.         <td><a href="addBasket.php?add=<?=$item['id']?>">В корзину</a> </td>
    24.     </tr>
    25. <?php
    26. }
    27. ?>
    28. </table>