Есть таблица perif и в ней есть поля: id_perif, name_perif и model.
И есть общая таблица el_zhurnal, в которой есть поле id_perif.
На форме я формирую выпадающий список из БД $name_perif + $model
<TD>
<select class='input' type='select' name='id_perif'>
<option value='' disabled selected='selected'>Выберите оборудование...</option>
<?php $query = "SELECT name_perif, model, id_users, id_perif
FROM perif
WHERE id_users = '".$_SESSION['id_users']."'
";
$sql = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($sql) > 0)
{
while($form_value_new = mysql_fetch_assoc($sql))
{
echo '<option>'. $form_value_new['name_perif'] .' '. $form_value_new['model'] .'</option>';
}
}
?>
</select>
</TD>
И соответственно запись в табл el_zhurnal
$query = ("INSERT INTO el_zhurnal SET
neispr_date = '".$today."',
fio = '".$fio."',
id_ltor = '".$id_ltor."',
id_perif = (SELECT id_perif FROM perif WHERE name_perif = ". $form_value_new['name_perif'] ."
AND model = ". $form_value_new['model'] .")");
mysql_query($query) or die(mysql_error());
Но почему-то выдает ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND model = )' at line 6
Помогите пожалуйста с запросом! Сегодня целый день голову ломала и ничего не придумала! Пожалуйста не оставьте без внимания.
Спустя 8 минут, 54 секунды (25.06.2012 - 20:44) Placido написал(а):
Дублирование тем не приветствуется ни на одном форуме. Можно было просто сделать up в предыдущей теме. Тем более, я вам уже сказал - в $form_value_new['model'] ничего нет. Смотрите, как формируется этот элемент массива.
Спустя 10 минут, 47 секунд (25.06.2012 - 20:55) pretty_xai написал(а):
Извините пожалуйста за дублирование тем, просто я только сейчас заметила, что я изначально не в том разделе создала тему, а как перенести или удалить ее я не нашла...
Цитата |
в $form_value_new['model'] ничего нет. Смотрите, как формируется этот элемент массива. |
Ну при формировании SELECTa переменная $form_value_new['model'] тоже участвует, и там проблем не возникает....SELECT формируется правильно....
Еще раз извиняюсь за дублирование...
Спустя 4 минуты, 46 секунд (25.06.2012 - 21:00) Placido написал(а):
Вопрос в том, что и как попадает в массив $form_value_new после отправки формы. Я лично этого не вижу.
Спустя 3 минуты, 6 секунд (25.06.2012 - 21:03) ИНСИ написал(а):
Попробуй так, ты просто забыла одинарные ковычки вставить в условие:
$query = "
INSERT
INTO `el_zhurnal`
SET `neispr_date` = '{$today}', `fio` = '{$fio}', `id_ltor` = '{$id_ltor}',
`id_perif` = (
SELECT `id_perif`
FROM `perif`
WHERE `name_perif` = '{$form_value_new['name_perif']}' AND `model` = '{$form_value_new['model']}'
)
"
;
Спустя 21 минута, 48 секунд (25.06.2012 - 21:25) pretty_xai написал(а):
Цитата |
Попробуй так, ты просто забыла одинарные ковычки вставить в условие: |
ИНСИ Точно, СПАСИБО! Вы правы. Ошибки больше не выдает, но в базу вставляет NULL. Хотя если поставить только одно условие,
[/php]WHERE `name_perif` = '{$form_value_new['name_perif']}'[php] то запрос срабатывает и выдает ошибку, что результат запроса больше чем одна строчка.
Получается что одну переменную $form_value_new['name_perif'] он определяет, а другую $form_value_new['model'] нет??Подскажите пожалуйста
Спустя 19 минут, 28 секунд (25.06.2012 - 21:44) ИНСИ написал(а):
Цитата |
Подскажите пожалуйста |
1. Посмотри, вставляется ли нужное значение. К примеру впиши:
exit($query);
2. Если все ок, смотри есть ли записи с твоим условием в бд.
Спустя 35 минут, 29 секунд (25.06.2012 - 22:20) pretty_xai написал(а):
Оказывается проблема вся в том, что эти две переменные почему-то не определяются! Если значения в зарос вписать в ручную, то данные корректно вставляются в бд не подскажите, как определить переменные $form_value_new['name_perif'] и $form_value_new['model']
В селекте я их определила
А вот как их определить для запроса не могу понять...
В селекте я их определила
<select class='input' type='select' name='id_perif'>
<option value='' disabled selected='selected'>Выберите оборудование...</option>
<?php $query = "SELECT name_perif, model, id_users, id_perif
FROM perif
WHERE id_users = '".$_SESSION['id_users']."'
";
$sql = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($sql) > 0)
{
while($form_value_new = mysql_fetch_assoc($sql))
{
echo '<option>'. $form_value_new['name_perif'] .' '. $form_value_new['model'] .'</option>';
}
}
</select>
А вот как их определить для запроса не могу понять...
Спустя 4 минуты, 24 секунды (25.06.2012 - 22:24) fdr написал(а):
в соседней теме ответил...)))
второй запрос выполняйте в цикле while($form_value_new = mysql_fetch_assoc($sql)) должно работать!
второй запрос выполняйте в цикле while($form_value_new = mysql_fetch_assoc($sql)) должно работать!
Спустя 27 минут, 31 секунда (25.06.2012 - 22:51) pretty_xai написал(а):
fdr
Если я вас правильно поняла, то второй запрос необходимо было выполнить так
$query = "SELECT name_perif, model, id_users, id_perif
FROM perif
WHERE id_users = '".$_SESSION['id_users']."'
";
$sql = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($sql) > 0)
{
while($form_value_new = mysql_fetch_assoc($sql))
{
$query = ("INSERT INTO el_zhurnal SET
neispr_date = '".$today."',
fio = '".$fio."',
id_ltor = '".$id_ltor."',
id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = '".$name_perif."'
AND `model` = '".$model."' )");
mysql_query($query) or die(mysql_error());
exit($query);
}
}
Но таким образом запрос не выполняется совсем...и результат выгладит так
INSERT INTO el_zhurnal SET neispr_date = '25.06.12 22:45:06', fio = 'Султанов Денис Юрьевич', id_ltor = '1112', id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = '' AND `model` = '' )
Я наверное вас неправильно поняла?
Спустя 16 минут, 20 секунд (25.06.2012 - 23:08) fdr написал(а):
Да, но обратите внимание на
id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = '".$name_perif."'
$name_perif он разве не должен быть $form_value_new['name_perif']
id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = '".$name_perif."'
$name_perif он разве не должен быть $form_value_new['name_perif']
Спустя 18 минут, 38 секунд (25.06.2012 - 23:26) pretty_xai написал(а):
fdr, спасибо вам огромное, запрос работает, но вот возникла теперь другая проблема... Запрос вставляет всегда только первую запись из таблицы, независимо , что выбрано в форме. Но это и понятно, т.к. сначала идет форма.....(в ней запрос на формирование списка селект)......форма продолжается......и только потом в новом цикле запрос на вставку в бд. Ну это и понятно, т.к. начался новый цикл и переменные обнулились...А как же сделать так, чтобы из первого селекта переменные использовались во втором?Заранее большое спасибо!
Может так $_POST[$form_value_new]['name_perif']???
Может так $_POST[$form_value_new]['name_perif']???
Спустя 11 минут, 12 секунд (25.06.2012 - 23:38) fdr написал(а):
$_POST['id_perif'] - оно будет работать после отправке формы
вообще можно для отладки оспользовать var_dump($_POST);
вообще можно для отладки оспользовать var_dump($_POST);
Спустя 10 минут, 18 секунд (25.06.2012 - 23:48) pretty_xai написал(а):
Цитата |
var_dump($_POST); |
за это отдельное спасибо... А по поводу
Цитата |
$_POST['id_perif'] |
я знала, но только у меня селект
'<option>'. $form_value_new['name_perif'] .' '. $form_value_new['model'] .'</option>';состоит из двух переменных и такое обращение не подойдет...
Спустя 22 минуты, 43 секунды (26.06.2012 - 00:11) pretty_xai написал(а):
Форумчане, подскажите пожалуйста
Вот сформировала я окончательно запрос...
Результат такой получается
А должен получиться
Подскажите как разделить переменные?
Вот сформировала я окончательно запрос...
$query = ("INSERT INTO el_zhurnal SET
neispr_date = '".$today."',
fio = '".$fio."',
id_ltor = '".$id_ltor."',
id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = '".$_POST['name_perif']."'
AND `model` = '".$_POST['model']."' )");
Результат такой получается
INSERT INTO el_zhurnal SET neispr_date = '26.06.12 00:02:51', fio = 'Султанов Денис Юрьевич', id_ltor = '1112', id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = 'Ксерокс HP 1200' AND `model` = '' )
А должен получиться
INSERT INTO el_zhurnal SET neispr_date = '26.06.12 00:02:51', fio = 'Султанов Денис Юрьевич', id_ltor = '1112', id_perif = (SELECT id_perif FROM perif WHERE[i][b] `name_perif` = 'Ксерокс ' AND `model` = 'HP 12[/i]00'[/b] )
Подскажите как разделить переменные?
Спустя 20 минут, 23 секунды (26.06.2012 - 00:31) pretty_xai написал(а):
Спасибо всем огромное!!!Проблему решила с помощью функции explode! Вы заставляете людей думать и в этом ваш бооольшой плюс! Спасибо
Спустя 9 часов, 35 минут, 39 секунд (26.06.2012 - 10:07) fdr написал(а):
Цитата |
id_perif = (SELECT id_perif FROM perif WHERE `name_perif` = '".$_POST['name_perif']."' |
Откудого у вас тут $_POST['name_perif']
в форме у вас <select class='input' type='select' name='id_perif'>
id_perif - значить данные из формы у вас будут в $_POST['id_perif']
что бы в один <option> заталкнуть две переменные и потом их использовать
echo '<option>'. $form_value_new['name_perif'] .' '. $form_value_new['model'] .'</option>';
можно сделать так, при формирование формы...
echo
'<option value="'.
$form_value_new['name_perif'] .
'|' .
$form_value_new['model'] .
'">' . $form_value_new['name_perif'] .' '. $form_value_new['model'] .
'</option>';
при отправке формы в переменной $_POST['id_perif'] должно быть примерно
Ксерокс|HP 1200
вот их можете разделить, примерно так
list($pervoye_znach, $vtoroye_znach) = explode('|', $_POST['id_perif']);
Спустя 20 минут, 18 секунд (26.06.2012 - 10:27) pretty_xai написал(а):
fdrДа, я же написала! Исправила код сама (я сама нашла все те ошибки, которые вы указали...) и про функцию explode('|', $_POST['id_perif']); я тоже додумалась! Просто была каша в голове, а потом села и аккуратно все разобрала...Главное, что вы меня направили ....Спасибо!!!
А еще я хотела спросить (извините, но не по теме) вот я только недавно начала изучать php, и на данном этапе при написании кода все равно какая-то каша, беспорядок. Это пройдет со временем? Приходит с опытом?
А еще я хотела спросить (извините, но не по теме) вот я только недавно начала изучать php, и на данном этапе при написании кода все равно какая-то каша, беспорядок. Это пройдет со временем? Приходит с опытом?
Спустя 4 минуты, 34 секунды (26.06.2012 - 10:32) fdr написал(а):
Цитата |
А еще я хотела спросить (извините, но не по теме) вот я только недавно начала изучать php, и на данном этапе при написании кода все равно какая-то каша, беспорядок. Это пройдет со временем? Приходит с опытом? |
Если будете хорошо учится, то конечно!!!)))