[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу найти ошибку
Djo
PHP
<div class="form_item">
  <
div class="form_element cf_dropdown">
    <
label class="cf_label" style="width: 200px;">Материал/услуга</label>
    <
select class="cf_inputbox validate-selection" id="select_2" size="1" title=""  name="id_material_serv">
<?
php 
  $s 
mysql_query('SELECT id_material_serv, name_material_serv FROM djo_tipograph_material_services');
//защита от повторного заказа
  
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order=".$_GET['id_order']);
  
$notrade=0;
  while (
$f mysql_fetch_array($s))
  {
    while (
$g mysql_fetch_array($r))
    {
      if (
$f['id_material_serv'] == $g['id_material_serv']) $repeat=true;
    }
    if (
$repeat) {$repeat=false; continue;}
    
$notrade++;
    echo 
"<option value=".$f['id_material_serv'].">".$f['name_material_serv']."</option>";
  }
  if (
$notrade<2) echo "<option value='NULL'>Нечего предложить...</option>";
?>
    </select>
    
  </div>
  <div class="cfclear"


Описание:
Если в заказе уже есть такой товар, то его добавить нельзя, если нет - его название добавляется в выпадающий список.
Если в заказ добавили все имеющиеся товары, то список должен содержать 1 значение = Нечего предложить.

Вопрос:
Уже часа полтора всматриваюсь в код и не могу понять: почему, не смотря на то, что все товары добавлены в заказ, в списке присутствуют 2 значения: выше указанное и еще один товар (который уже есть в заказе).
Причем практически такой же код на другой форме все правильно отрабатывает...



Спустя 12 минут, 59 секунд (4.07.2009 - 22:50) DeeKeiD написал(а):
Могу ошибатся но разве не должно быть так:
PHP
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order = '".$_GET['id_order']."'");

вместо
PHP
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order=".$_GET['id_order']);

Спустя 12 минут, 10 секунд (4.07.2009 - 23:02) jetistyum написал(а):
1. читай про SQL injection
2. эти два страшных запроса и цикла можно объединить в один запрос
3. проговори логику своих вложенных циклов... может сам найдешь ошибку

Спустя 1 день, 12 часов, 41 минута, 35 секунд (6.07.2009 - 11:44) ApuktaChehov написал(а):
Вот так должно работать

PHP
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order = '.$_GET['id_order'].'");

Спустя 18 минут, 1 секунда (6.07.2009 - 12:02) FElix написал(а):
Немогу найти ошибку . Пошет переменная не определенна . Указывает на строку что выделенна ораньжевым. Что нетак не пойму
PHP
<?php  include ("blocks/bd.php");

if (isset(
$_POST['author']))
{
$author $_POST['author'];
}

if (isset(
$_POST['text']))
{
$text $_POST['text'];
}

if (isset(
$_POST['prov']))
{
$prov $_POST['prov'];
}

if (isset(
$_POST['sub_com']))
{
$sub_com $_POST['sub_com'];
}

if (isset(
$_POST['id']))
{
$id $_POST['id'];
}

if (isset(
$sub_com))
{
if (isset(
$author)) {trim($author);   }
else {
$author "";}

if (isset(
$text)) {trim($text);   }
else {
$text "";}

if (empty(
$author) or empty($text))
{
exit (
"<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'>");
}

$author stripslashes($author);
$text stripslashes($text);
$author htmlspecialchars($author);
$text htmlspecialchars($text);

$result mysql_query ("SELECT sum FROM comments_setting",$db);
$myrow mysql_fetch_array($result);

if (
$prov == $myrow["sum"])
{

//aaa

}
else 
{
exit (
"<p>Вы ввели неверную сумму цифр с картинки на предыдущей странице. <br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'>");
}


Спустя 28 минут, 36 секунд (6.07.2009 - 12:30) glock18 написал(а):
FElix
значит не определена $prov.

ApuktaChehov
PHP
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order = '.$_GET['id_order'].'");

с кавычками напутал =>

PHP
$r mysql_query('SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order = '.intval($_GET['id_order']));

Спустя 2 часа, 18 минут, 9 секунд (6.07.2009 - 14:48) Djo написал(а):
Пардон, но чем отличается мой вариант от ващего? (кроме intval разумеется, но здесь он роли не играет)

Спустя 5 минут, 21 секунда (6.07.2009 - 14:54) Djo написал(а):
Кстати про SQL injection очень интересная информация:)
Еще раз попытался проговорить (и даже записать) логику циклов, но к сожалению безуспешно:
первый цикл выбирает id и name (грубо говоря) из таблицы material_services
второй цикл сравнивает выбранный id с теми что находятся в таблице material_serv_in_order. Если находит одинаковые, то первый цикл не добавляет значение в выпадающий цикл.

Спустя 34 секунды (6.07.2009 - 14:54) glock18 написал(а):
Цитата (glock18 @ 6.07.2009 - 09:30)
с кавычками напутал =>

я же говорю, ты с кавычками напутал:

Цитата
"SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order = '.$_GET['id_order'].'"

Спустя 5 минут, 7 секунд (6.07.2009 - 15:00) Djo написал(а):
С ковычками не я напутал)
У меня вообще кавычек нет.. Они разве обязательны?
PHP
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order=".$_GET['id_order']);

Спустя 1 минута, 16 секунд (6.07.2009 - 15:01) glock18 написал(а):
dry.gif
вставь то, что ты дал и проверь уже. я тебе выделил две пары кавычек, а ты говоришь, что у тебя их вообще нет.

Спустя 6 минут, 46 секунд (6.07.2009 - 15:08) Sylex написал(а):
Djo
если поле числовое - не обязательны

Спустя 17 минут, 26 секунд (6.07.2009 - 15:25) Djo написал(а):
unsure.gif Да у меня ж это самое и стояло в самом начале:
мой вариант:
PHP
//защита от повторного заказа
  
$r mysql_query("SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order=".$_GET['id_order']);
  
$notrade=0;


то что ты написал:
PHP
$r mysql_query('SELECT id_material_serv FROM djo_tipograph_material_serv_in_order WHERE id_order = '.intval($_GET['id_order']));


в общем проблема остается нерешенной... sad.gif

Спустя 4 минуты, 45 секунд (6.07.2009 - 15:30) glock18 написал(а):
эт... че-т я от темы отошел.

Щас объясню чего эт я себя так плохо веду, Djo smile.gif
Пришел ApuktaChehov и дал код с некорректно расставленными кавычками.
Дальше я поправил его, а ты отнес все на свой счет. Вот и начали...

Спустя 1 минута, 30 секунд (6.07.2009 - 15:31) glock18 написал(а):
понял что ты там хочешь.

читай про JOIN.

Спустя 30 минут, 15 секунд (6.07.2009 - 16:01) Djo написал(а):
Не подскажешь какой-нибудь ресурс где хорошо про JOIN написано?
Пока из того что прочитал не могу понять разницу между JOIN и WHERE.

Спустя 16 минут, 57 секунд (6.07.2009 - 16:18) glock18 написал(а):
http://dev.mysql.com/doc/refman/5.0/en/join.html

вот оно. если на русском хочешь, то google тебе поможет лучше, чем я.

Спустя 34 минуты, 3 секунды (6.07.2009 - 16:52) Djo написал(а):
Спасибо!

Спустя 8 минут, 34 секунды (6.07.2009 - 17:01) Djo написал(а):
вот нашел на великом и могучем: http://www.mysql.ru/docs/man/JOIN.html
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.