|
 993 байт |
|
| Вот есть у меня такой скрипт для выборки из моей, недавно сделанной, базы и хочу я его до ума довести. Сейчас он умеет только делать выборку по двум параметрам, введенным в html форму. Начнем с следующего, как мне сделать, чтоб выборка происходила в заданных приделах (числа), ну там <, >, <=, >=, это понятно, а как сделать выборку, скажем 5< x <10?
И еще, как сделать так, чтоб поиск происходил по одному введенному параметру (сейчас если не вводить один из них выдается ошибка)? | |
|
|
|
|
|
|
|
для: Peter
(07.06.2005 в 17:00)
| | А не могли бы вы привести так же HTML-форму? и также рассказать немного о том, что ищем?
PS Вопросы посвящённые базам данных лучше сразу размещать в соответсвующем разделе форума http://www.softtime.ru/forum/index.php?id_forum=3 | |
|
|
|
|
|
|
|
для: cheops
(07.06.2005 в 17:18)
| | Sorry, я думал что теперь, восновном, будет работа с php...
Ищем электродвигатели по числовым параметрам:
<form action="test.php" method="post">
<input type="text" name="rpm" >
<input type="text" name="kpd" >
<input type="submit" value="Ввести!">
Это почти вся html страничка с формой... | |
|
|
|
|
|
|
|
для: Peter
(07.06.2005 в 17:37)
| | Добавим к этой HTML-форме ещё два поля kpdfrom и kpdto, смысл которых можно выразить формулой
kpdfrom > kpd >= kpdto
при этом для наглядности оставим все остальные поля
<form action="test.php" method="post">
<input type="text" name="rpm" >
<input type="text" name="kpd" >
От <input type="text" name="kpdfrom" > до <input type="text" name="kpdto" >
<input type="submit" value="Ввести!">
|
Посетитель может заполнять как все поля, так и только одно и запрос должен быть корректным. Решение, чтобы не засорять тему приведено в аттаче - основной смысл его заключается в том, чтобы формировать SQL-запрос по частям, а в конце собирать его из этих частей. | |
|
|
|
|
|
|
|
для: cheops
(07.06.2005 в 18:01)
| | Ого, все действительно довольно просто (если знать как делать :))...
На самом деле, такого скрипта уже достаточно чтобы использовать на сайте, остается только устранить некоторые неправильные штуки, например если я ничего не указываю в поле "ОТ " (форма), то в результатах выборки появляются позиции где это поле не заполнено... как это устранить? | |
|
|
|
|
|
|
|
для: Peter
(08.06.2005 в 10:38)
| | При формировании запроса к базе проверять, есть ли в этом поле что-то и если нет то просто не включать это условие в запрос. | |
|
|
|
|
|
|
|
для: Peter
(08.06.2005 в 10:38)
| | Вот еще что, появилась необходимость выводить в каждом запросе первую строчку из базы (id = 1), там у меня расшифровка параметров находится... | |
|
|
|
|
|
|
|
для: Peter
(08.06.2005 в 17:43)
| | Нужно в запрос поставить условие id=1, но с логикой ИЛИ, т.е. либо удовлетворяющий введённым условиями или id = 1 - это обеспечит вам первую строку в каждом запросе. Только обрамляйте всё в скобки т.е. пишите
(id = 1) or (прочие условия с and)
|
так надёжнее и обойдёте много хитрых ошибок. | |
|
|
|
|
|
|
|
для: Peter
(08.06.2005 в 10:38)
| | А в качестве значения поумолчанию для незаполненного поля что используется? NULL или пустая строка? | |
|
|
|
|
|
|
|
для: cheops
(08.06.2005 в 22:04)
| | 1. Собственно я сам так по началу и сделал, указал id=1 перед другими переменными, но чтото у меня не сработало, возможно как раз из-за скобок... сейчас все нормально.
2. при импорте таблицы из текстового файла (.txt) только часть получилась со значением NULL, часть просто незаполнена...
3. В догонку... print "<table align=center width=60% border=1>"; Как внутри этой строки использоать кавычки, ато нужно class прописать. | |
|
|
|
|
|
|
|
для: Peter
(09.06.2005 в 09:21)
| | 2. Тогда следует поставить дополнительное условие
kpd != "" AND kpd IS NOT NULL
|
3. А можно по-подробнее в чём заключается проблема? | |
|
|
|
|
|
|
|
для: cheops
(09.06.2005 в 12:31)
| | class="tab" например, если его вставить в строку print "<table align=center width=60% border=1 class="tab">"; название класса получится вне кавычек | |
|
|
|
|
|
|
|
для: Peter
(10.06.2005 в 09:05)
| | Все спецсимволы пишутся через слэш. В вашем случае так:
print "class=\"tab\""; | |
|
|
|
|
|
|
|
для: XPraptor
(10.06.2005 в 10:27)
| | Чтобы автоматизировать этот процесс, прогоняйте текст, который собираетесь поместить в базу данных через функцию mysql_escape_string() http://www.softtime.ru/dic/id_dic=96&id_group=2
<?php
$text = mysql_escape_string($text);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(09.06.2005 в 12:31)
| | что то не получается присвоить класс таблице, в которой формируется результат выборки...
print "<br><br><center><table class=\"tab\">\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</center></table>\n";
|
результат нулевой, в с другими таблицами, естественно, все в порядке... | |
|
|
|
|
|
|
|
для: Peter
(10.06.2005 в 11:31)
| | Хм.. перепишите таким образом:
<br><br><center><table class="tab">
<?
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</center></table>\n";
?>
|
Что-нибудь поменялось? | |
|
|
|
|
|
|
|
для: cheops
(10.06.2005 в 11:40)
| | >Что-нибудь поменялось?
Как ни странно - нет, причем на этой странице я сделал еще одну простую таблицу, для пробы и у нее тоже самое... в таблице выборки есть ссылки, так вот они нормально отображаются(в css прописан тэг A)...
посмотрел в браузере html. вроде все в порядке... | |
|
|
|
|
|
|
|
для: Peter
(10.06.2005 в 16:32)
| | Можно код странички и .css целиком сюда приатачить, тогда легче будет разобраться. | |
|
|
|
|
|
|
|
для: Peter
(10.06.2005 в 11:31)
| | Загрузите страницу и посмотрите HTML код из браузера, там нормально все написалось? | |
|
|
|
|
|
|
|
для: XPraptor
(10.06.2005 в 15:03)
| | с классами все наладилось... как? сам не знаю, просто сегодня пришел на работу и все заработало, где-то косяк был...
пришло время навести лоск на все это хозяйство, как мне сделать чтоб в таблице с результатами цвет фона строк чередовался? | |
|
|
|
|
|
|
|
для: Peter
(14.06.2005 в 11:10)
| | делаете ключик, который в цикле переключается в зависимости от своего текущего состояния и вместе с ним переключается цвет. | |
|
|
|
|
|
|
|
для: Loki
(14.06.2005 в 14:12)
| | хотелось бы подробней, и наглядно, если не затруднит...
скрипт в начале темы... | |
|
|
|
|
|
|
|
для: Peter
(14.06.2005 в 15:37)
| |
<?
$key=0;
print "<table>";
while ($massiv=mysql_fetch_array($result))
{
print "<tr><td bgcolor=";
if ($key)
{
print "ffffff";
$key=1;
}
else
{
print "aaaaaa";
$key=0;
}
print ">".$massiv['something']."</td></tr>";
}
print "</table>";
?>
|
На запускаемость не проверял (точнее, он и не должен исполняться:). Думаю, отладите сами. | |
|
|
|
|
 3.4 Кб |
|
|
для: Loki
(14.06.2005 в 17:09)
| | не получилось... в чем ошибка? | |
|
|
|
|
|
|
|
для: Peter
(15.06.2005 в 09:50)
| | Мне кажется вы немного запутались с выводом массива.
Попробуйте так:
<?
$query = "SELECT Type, pod, rpm, nap, watt, link FROM nasos_01 WHERE (id_nasos = 1) or 1 = 1 ".$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6;
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$key=0
print "<br><br><center><table align=center width=60% border=1 class='tab'>\n";
while ($line = mysql_fetch_array($result))
{
print "\t<tr>\n";
print "\t\t<td align=center bgcolor=";
if ($key)
{
print "red";
$key=1;
}
else
{
print "green";
$key=0;
}
print ">".$line['Type']."</td>\n";
}
print "\t</tr>\n";
}
print "</center></table>\n";
?>
|
Этот код должен выводить таблицу с полем Type. остальные добавьте по аналогии. | |
|
|
|
|
|
|
|
для: Loki
(15.06.2005 в 11:55)
| | с этим вариантом так ничего не получилось...
проблему решил с помощью куска, найденного в другом скрипте...
if($key=="1"){$bgcolor=$color1;$key--;}
else{$bgcolor=$color2;$key++;}
|
| |
|
|
|
|
|
|
|
для: Peter
(15.06.2005 в 14:39)
| | это тоже самое - просто я умудрился перепуать местами условия if и else, а так запустил -и все работает:) | |
|
|
|