Mysql Checkbox
12 отговора
0 прегледа
Mysql Checkbox
Привет. Напълно начинаещ съм в областта и сега се уча.
Моля ви за малко помощ по следния елементарен проблем.
Значи базата данни е съставена от три колонки, като трябва да се търси само по едната колонка (колонка 1). Тази колонка може да има само три стойности (да ги наречем А, Б и C)
Формулярът е съставен съответно само от 3 checkboxa. Ако някой от тях е избран, програмата трябва да изпише съответните редове (и трите колонки в пълен вид) от базата данни, съдържащи тази сойност. Например избрани са checkbox А и Б и програмата изписва точно редовете от базата данни, за които колонка 1 приема стойности A и Б под формата на таблица.
Формулярът е съставен, базата данни също.
Може ли някой да ми помогне със php-скриптчето?
Ще съм много благодарен
Моля ви за малко помощ по следния елементарен проблем.
Значи базата данни е съставена от три колонки, като трябва да се търси само по едната колонка (колонка 1). Тази колонка може да има само три стойности (да ги наречем А, Б и C)
Формулярът е съставен съответно само от 3 checkboxa. Ако някой от тях е избран, програмата трябва да изпише съответните редове (и трите колонки в пълен вид) от базата данни, съдържащи тази сойност. Например избрани са checkbox А и Б и програмата изписва точно редовете от базата данни, за които колонка 1 приема стойности A и Б под формата на таблица.
Формулярът е съставен, базата данни също.
Може ли някой да ми помогне със php-скриптчето?
Ще съм много благодарен
Re: Mysql Checkbox
<?php
$where = '';
if ( $_POST['A'] ) { $where = "'A'"; }
if ( $_POST['B'] ) {
if ( $where ) {
$where .= " or `column_1`='B'";
} else {
$where = "'B'";
}
}
if ( $_POST['C'] ) {
if ( $where ) {
$where .= " or `column_1`='C'";
} else {
$where = "'C'";
}
}
mysql_connect("host", "user", "pass");
mysql_select_db("db_name");
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
echo '<table>';
while ( $row = mysql_fetch_array( $result ) ) {
echo "<tr>
<td>
$row[column_1]
</td>
<td>
$row[column_2]
</td>
<td>
$row[column_3]
</td>
</tr>
";
}
echo '</table>';
mysql_close();
?>
Не съм го тествал, ама не виждам да има грешки, така че ще работи.
Редактирано от Tpaвъл на
Re: Mysql Checkbox
Благодари ти много, жив и здрав да си. Помощта ти е наистина безценна.
Показва ми следната грешка:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Като прибавя към кода
echo 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 '' at line 1.
Версията е MySQL 4.0.18 .
Какъв ли е пък сега проблемът?
Още веднъж благодаря
Показва ми следната грешка:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Като прибавя към кода
echo 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 '' at line 1.
Версията е MySQL 4.0.18 .
Какъв ли е пък сега проблемът?
Още веднъж благодаря
Re: Mysql Checkbox
Грешката ти е, че не задаваш правилни параметри тук
mysql_select_db("db_name");
или тук
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
mysql_select_db("db_name");
или тук
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
Re: Mysql Checkbox
А не би ли ти харесало повече това:
<?php
$where = array();
if ( $_POST['A'] ) $where[] = "`column_1`='A'";
if ( $_POST['B'] ) $where[] = "`column_1`='B'";
if ( $_POST['C'] ) $where[] = "`column_1`='C'";
if (sizeof($where) == 0) print "No records";
else {
$where = implode(' && ', $where);
mysql_connect("host", "user", "pass");
mysql_select_db("db_name");
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
echo '<table>';
while ( $row = mysql_fetch_array( $result ) ) {
echo "<tr>
<td>
$row[column_1]
</td>
<td>
$row[column_2]
</td>
<td>
$row[column_3]
</td>
</tr>
";
}
echo '</table>';
mysql_close();
}
?>
И най-ярките личности си плащат тока.
<?php
$where = array();
if ( $_POST['A'] ) $where[] = "`column_1`='A'";
if ( $_POST['B'] ) $where[] = "`column_1`='B'";
if ( $_POST['C'] ) $where[] = "`column_1`='C'";
if (sizeof($where) == 0) print "No records";
else {
$where = implode(' && ', $where);
mysql_connect("host", "user", "pass");
mysql_select_db("db_name");
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
echo '<table>';
while ( $row = mysql_fetch_array( $result ) ) {
echo "<tr>
<td>
$row[column_1]
</td>
<td>
$row[column_2]
</td>
<td>
$row[column_3]
</td>
</tr>
";
}
echo '</table>';
mysql_close();
}
?>
И най-ярките личности си плащат тока.
Re: Mysql Checkbox
По-добра идея, по-чист код, по-малко проверки. Супер.
$where = implode(' or ', $where);
$where = implode(' or ', $where);
Re: Mysql Checkbox
Не знам защо, но като го изпълня и ми дава винаги No entry, въпреки че в базата данни има въведени редове.
Възможно ли е грешката да ми е във формуляра?
Ето го и него:
<HTML><HEAD><TITLE>Formular 1</TITLE></HEAD><BODY>
<CENTER><H1>Formular 1</H1></CENTER>
<FORM ACTION="index.php" METHOD="get">
<INPUT TYPE="checkbox" NAME="A" value="ON" >Section 1
<INPUT TYPE="checkbox" NAME="B" value="ON" >Section 2
<INPUT TYPE="checkbox" NAME="C" value="ON" >Section 3
<P><CENTER>
<INPUT TYPE="submit" VALUE="Send">
</CENTER>
</FORM>
</BODY></HTML>
Благодаря ви и на двамата и извинете за тъпите въпроси.
Възможно ли е грешката да ми е във формуляра?
Ето го и него:
<HTML><HEAD><TITLE>Formular 1</TITLE></HEAD><BODY>
<CENTER><H1>Formular 1</H1></CENTER>
<FORM ACTION="index.php" METHOD="get">
<INPUT TYPE="checkbox" NAME="A" value="ON" >Section 1
<INPUT TYPE="checkbox" NAME="B" value="ON" >Section 2
<INPUT TYPE="checkbox" NAME="C" value="ON" >Section 3
<P><CENTER>
<INPUT TYPE="submit" VALUE="Send">
</CENTER>
</FORM>
</BODY></HTML>
Благодаря ви и на двамата и извинете за тъпите въпроси.
Re: Mysql Checkbox
Иззвинявай. Мисля, че грешката е тук.
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
Трябва да бъде
$result = mysql_query("SELECT * FROM `table` WHERE `$where;");
И най-ярките личности си плащат тока.
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");
Трябва да бъде
$result = mysql_query("SELECT * FROM `table` WHERE `$where;");
И най-ярките личности си плащат тока.
Re: Mysql Checkbox
Пак извинявай и още един пропуск
<FORM ACTION="index.php" METHOD="get">
трябва да бъде
<FORM ACTION="index.php" METHOD="post">
С тези промени трябва да върви
И най-ярките личности си плащат тока.
<FORM ACTION="index.php" METHOD="get">
трябва да бъде
<FORM ACTION="index.php" METHOD="post">
С тези промени трябва да върви
И най-ярките личности си плащат тока.
Супер си
Сега излиза. Но има още един малък проблем.
Когато всяко е избрано поединично, не показва нищо.
Когато са избрани А и B, показва само B.
Когато са избрани B и C, показва само C.
Когато са избрани и трите, показва само B и C.
Когато всяко е избрано поединично, не показва нищо.
Когато са избрани А и B, показва само B.
Когато са избрани B и C, показва само C.
Когато са избрани и трите, показва само B и C.
Re: Mysql Checkbox
Грешката ми е била във формуляра - трябва да е post, а аз съм пробвал с get.
Сега върви без грешка скриптчето, мерси.
Сега върви без грешка скриптчето, мерси.
Re: Супер си
Какато Травъл правилно забеляза
$where = implode(' && ', $where);
трябва да бъде
$where = implode(' or ', $where);
Не виждам друга причина да не отговаря на очакванията ти. Ако все пак е така остава да се справиш сам. Все пак този код не съм тествал. А и задачата е твоя. Мисля, че сега знаеш повече отколкото в начлото. Останалото не е толкова трудно.
Успех.
И най-ярките личности си плащат тока.
$where = implode(' && ', $where);
трябва да бъде
$where = implode(' or ', $where);
Не виждам друга причина да не отговаря на очакванията ти. Ако все пак е така остава да се справиш сам. Все пак този код не съм тествал. А и задачата е твоя. Мисля, че сега знаеш повече отколкото в начлото. Останалото не е толкова трудно.
Успех.
И най-ярките личности си плащат тока.