Re: Выпадающий список
Ошибка.
if (isset($_POST [$row'brand'])) {
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → Работа с phpMyAdmin → Выпадающий список
Страницы Назад 1 … 19 20 21 22 23 … 41 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Ошибка.
if (isset($_POST [$row'brand'])) {
Спасибо исправил
if (isset($_POST[$row['brand']]))
Подскажите, вы раньше привели мне код где у чекбокса при первой загрузке страницы уже стоит галочка,
if (isset($_POST['autoguard'])|| !isset($_POST['nazv_sezon'])) {
echo '<p>AUTOGUARD <input type="checkbox" checked="checked" name="autoguard" value="" onchange="this.form.submit();" >';
} else {
echo '<p>AUTOGUARD <input type="checkbox" name="autoguard" value="" onchange="this.form.submit();">';
}
А можно дописать чтоб при первой загрузке страницы он был нажат тоесть сейчас галочка ставится автоматически но нажатие не происходит.
Где формируется запрос, если не нажаты галочки?
если ничего не нажато то выбираются все строки из всей базы
else { $sql = '
SELECT DISTINCT brand, model FROM `baza` ORDER BY `brand` ';
}
если ничего не нажато то выбираются все строки из всей базы
Сформируйте там запрос на выборку данных, как-будто нажата галочка. Условие прописывается в WHERE `field` = "что-то".
Не получяется
else { $sql = '
SELECT DISTINCT brand, model FROM `baza` WHERE `field` = "ACHILLES" ORDER BY `brand` ';
}
галочка стоит в чекбоксе ACHILLES но віводится ошибка
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\autoshina\BARUM.php on line 255
field - это имя поля по которому надо найти ACHILLES. Запросы проверяйте в phpMyAdmin.
Здравстуйте помогите пожалуйста сформировать зпрос. Не получяется вывести таблицы.Предположим что есть три разных модели которые повторяются в таблице каждая по три раза и у какждой разная цена. Я пытаюсь вывести их так чтоб сначяла ишли таблицы заглавления они отсортированы по цене по убыванию и згрупированы по столбику model чтоб не выпадали дубликаты, но при етом получяется когда групируеш по модели то выбираются только первые строки из каждой модели, а нужно чтоб сначяла отсортировалось по цене по убыванию а потом уже из отсоритрованого вывелись строки без дубликатов.
мой запрос
$sql = '
SELECT * FROM `baza` WHERE `brand` = "ACHILLES" GROUP BY model ORDER BY cena DESC ';
Я пытаюсь вывести их так чтоб сначяла ишли таблицы заглавления они отсортированы по цене по убыванию и згрупированы по столбику model чтоб не выпадали дубликаты, но при етом получяется когда групируеш по модели то выбираются только первые строки из каждой модели, а нужно чтоб сначяла отсортировалось по цене по убыванию а потом уже из отсоритрованого вывелись строки без дубликатов.
Без примера не могу понять.
Предположим мы имеем таблицу с 9 строками первое поле имеет записи в столбик (model1,model1,model1,model2,model2,model2,model3,model3,model3) но у каждой разная цена
если составить запрос
$sql = '
SELECT * FROM `baza` WHERE `brand` = "ACHILLES" GROUP BY model ORDER BY cena DESC ';
то в результате выведутся строки (каждая первая из своей модели и в порядке убывания но сортировка по убыванию произошла между етими 3 строками). И получяется что остальные строки не учитываются, а у меня например 1 строка model1 = 900, model1= 1200 но вторая строка не учлась. Если убрать GROUP BY model то выведутся дубликаты, они не нужны так как из строк нужно сформировать таблицы заглавления которые не должны повторятся
Надо делать подзапрос. Запрос находящийся внутри сортирует все строки по полю cena и уже затем происходит группировка записей по полю model.
$sql = 'SELECT * FROM (
SELECT * FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t`GROUP BY `model`';
Немного не так выводится. Вот точное расположение полей в базе
model cena
Desert Hawk H/T 509
Desert Hawk H/T 1200
PLATINUM 330
PLATINUM 580
WINTER 101 600
WINTER 101 20
WINTER 101 500
WINTER 101 580
WINTER 101 1400
WINTER 101 566
WINTER 101 500
WINTER 101 500
WINTER 101 500
при данном запросе
$sql = 'SELECT * FROM (
SELECT * FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t`GROUP BY `model`';
вывелось три таблицы в таком порядке
Desert Hawk H/T цена 1200
PLATINUM цена 580
WINTER 101 цена 1400
а надо чтоб выводилось по убыванию
WINTER 101 цена 1400
Desert Hawk H/T цена 1200
PLATINUM цена 580
Так должно работать.
$sql = 'SELECT * FROM (
SELECT * FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';
Да работает, обясните пожалуйста что за параметр `t`вместо него ставлю `model` или `brand`работает также и почему всюду ети скобки `` без них тоже работает
До тех пор, пока вы не запомнили наизусть все зарезервированные слова, необходимо имена таблиц и полей в запросах заключать в косые кавычки, например: `table_name`. Для правильного синтаксиса запросов, косые кавычки обязательны.
Мы делаем запрос внутри запроса и чтобы он работал необходимо запросу находящемуся внутри присвоить имя, как будто это таблица, чтобы запрос находящийся вовне, мог к нему обратиться, как к обычной таблице. Имя присваивается с помощью конструкции AS и называется алиасом. Какое имя дать алиасу - это значения не имеет. Документация по подзапросам.
Спасибо за разяснение!
Подскажите такой момент. Я вывожу таблицы заглавия под ними идут подтаблицы их число всегда разное.
<?php
function sub_func($row, $aSQL, $aName) {
global $db;
$aSub = array();
$aSQL[] = ' `model` = "' . $row['model'] . '" ';
foreach ($aName as $checkbox) {
if (isset($_POST[$checkbox])) {
$aSub[] = mysql_real_escape_string($checkbox);
}
}
// Здесь запросі с условиями
if ($result = mysql_query($sql, $db)) {
while ($row = mysql_fetch_array($result)) {
if ($row["ostatok"] > 0) {
print "<table width='750' class='smaltable'>
<tr>
<td width='70' align='center'><font color= '#1A7EDF'>" . $row["shirina"] . "</font></td>
<td width='80' align='center'><font color= '#1A7EDF'>" . $row["profil"] . "</font></td>
<td width='80' align='center'><font color= '#1A7EDF'>" . $row["diametr"] . "</font></td>
<td width='120' align='center'><font color= '#1A7EDF'>" . $row["indnag"] . "</font></td>
<td width='100' align='center'><font color= '#1A7EDF'>" . $row["indskor"] . "</font></td>
<td width='70' align='center'><font color= '#1A7EDF'>" . $row["ostatok"] . "</font></td>
<td width='100' align='center'><font color= '#098a12'><b>" . $row["cena"] . "</b></font></td>
<td align='center'><a href='view_form.php?id=" . $row["id"] . "'>заказать</a></td>
</tr>
</table>";
} else {
print "";
}
}
}
}
// Здесь запросы с условиями
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
print "
<table width='750' border='1'>
<tr>
<td>" . $row["model"] . "</td>
</tr>
</table>"
sub_func($row, $aSQL, $aName, $aUnion);
print "<br><br>";
}
?>
В условии функции
sub_func($row, $aSQL, $aName)
есть условие если переменная
if ($row["ostatok"] > 0)
то всю таблицу не выводить. Но при етом получяется что если модель всего одна и ее остаток равен 0 она не выводится, но выводится таблица заглавления и под ней ничего. Как будет выглядеть условие в которое нужно поместить масив из всех подстрок в которых нужно проверить остаток если во всех строках масива он равен 0 то не выводить ни под строки ни таблицу заглавления, а если есть хоть одна строка в которой переменная остаток не равна 0 то вывести таблицу заглавления и ету подтаблицу?
выводится таблица заглавления и под ней ничего
Какой запрос выводит заголовки таблицы?
Заголовки таблицы
else {$sql = 'SELECT * FROM (
SELECT * FROM `baza` WHERE `brand` = "ACHILLES" ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';
Пробуйте такой запрос. Он должен отсеять строки в которых поле ostatok меньше или равно нулю.
$sql = 'SELECT * FROM (
SELECT * FROM `baza` WHERE `brand` = "ACHILLES"
AND `ostatok` > 0
ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';
Да действительно работает отлично, я думал что нужно не в запросе а в условии вывода писать код. Большое спасибо.
У меня еще такой вопрос. Вот запрос с выводом в нем пишу еще запрос с выборкой из другой таблицы где приравниваю переменные с таблицей baza
else {$sql = 'SELECT * FROM (
SELECT * FROM `baza` WHERE `brand` = "ACHILLES"
AND `ostatok` > 0
ORDER BY `cena` DESC
) AS `t` GROUP BY `model` ORDER BY `cena` DESC';
}
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$result2 = mysql_query("select * from sezon where nazv_sezon='" . $row["sezon"] . "' ",$db);
$row2 = mysql_fetch_array($result2);
$result3 = mysql_query("select * from sezon where nazv_tip='" . $row["tip"] . "' ",$db);
$row3 = mysql_fetch_array($result3);
print "<table width='750' height='150' class='table22'>
<tr>
<td align='center' valign='bottom'>" . $row2["sezonimg"] . "</td>
<td align='center' valign='bottom'>" . $row3["tipimg"] . "</td>
</tr>
</table>" ;
Выводятся картинки из таблицы sezon названия которых совпадают с названием модели в таблице baza
если пишу запрос вот так то ничего не выводится
$result2 = mysql_query("select * from sezon where nazv_sezon='" . $row["sezon"] . "' AND nazv_tip='" . $row["tip"] . "' ",$db);
$row2 = mysql_fetch_array($result2);
Смотрите как выглядит запрос к БД, который формируется с значениями переменных и проверьте этот запрос в phpMyAdmin.
Здраствуйте, возникла проблема с формой. А именно в коде
<form action="zakaz.php" method="post" name="form2"><input name="name" type="text" size="30" maxlength="30">
<?php echo '<form method="POST" action="">';
$auto = "<select name='nazv_auto' size='1' selected='selected' onchange=\"this.form.submit();\" >;
<option value='' >Все</option>";
$query = mysql_query("SELECT * FROM auto ORDER BY id_auto DESC");
$result = mysql_fetch_array($query);
do
{
$auto .= "<option value='".$result['nazv_auto']."' "; /* то что передается */
if (!empty($_POST['nazv_auto']) && $_POST['nazv_auto'] == $result['nazv_auto']) {
$auto .= ' selected="selected"';
}
$auto .= ">".$result['nazv_auto']."</option>"; /* то что отобразится в списке */
}
while($result = mysql_fetch_array($query));
$auto.= "</select>";
echo $auto."";
{ $model = "<select name='nazv_model' size='1' >;
<option value=''>Все</option>";
$query = mysql_query("SELECT * FROM automodel
WHERE id_auto = '" . addslashes($_POST['nazv_auto']) . "' ORDER BY id_model "); /* здесь нужно принять номер названия тоесть id_auto */
$result = mysql_fetch_array($query);
do
{
$model .= "<option value='".$result['nazv_model']."'";
if (!empty($_POST['nazv_model']) && $_POST['nazv_model'] == $result['nazv_model']) {
$model .= ' selected="selected"';
}
$model .= ">".$result['nazv_model']."</option>";
}
while($result = mysql_fetch_array($query));
$model .= "</select>";
echo $model.""."";
}?>
<input name="submit2" type="submit" value="оформить заказ"></form>
Есть кнопка которая отправляет данные в обработчик, и есть два зависимых выпадающих списка у которых есть функция
onchange=\"this.form.submit();\"
Выходит что при выборе параметра в списке он нажимает кнопку отправить. А они должны работать независимо. Что здесь можно зделать?
Я вижу тег <form> внутри другого тега <form>, что делать нельзя. Если есть возможность, то разделите формы, чтобы избежать их вложения.
Здравствуйте. У меня не получяется правильно вставить функцию во внутрь таблицы.
print "<table width='750' height='150' class='table22'>
<tr>
<td>'".sub_func($row, $aSQL, $aName, $aUnion)."'</td>
</tr>
</table>" ;
print "<br><br>";
}
в коде она внутри таблицы а при выводе в браузере она выводится сверху таблицы, почему так?
Страницы Назад 1 … 19 20 21 22 23 … 41 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум PHP-MyAdmin.RU → Работа с phpMyAdmin → Выпадающий список
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.