Mysql Checkbox

12 отговора 0 прегледа
#1

Mysql Checkbox

Привет. Напълно начинаещ съм в областта и сега се уча.
Моля ви за малко помощ по следния елементарен проблем.
Значи базата данни е съставена от три колонки, като трябва да се търси само по едната колонка (колонка 1). Тази колонка може да има само три стойности (да ги наречем А, Б и C)
Формулярът е съставен съответно само от 3 checkboxa. Ако някой от тях е избран, програмата трябва да изпише съответните редове (и трите колонки в пълен вид) от базата данни, съдържащи тази сойност. Например избрани са checkbox А и Б и програмата изписва точно редовете от базата данни, за които колонка 1 приема стойности A и Б под формата на таблица.

Формулярът е съставен, базата данни също.

Може ли някой да ми помогне със php-скриптчето?

Ще съм много благодарен

Отговор
в отговор на Бyrapин #2

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въл на

Отговор
в отговор на Tpaвъл #3

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 .

Какъв ли е пък сега проблемът?
Още веднъж благодаря

Отговор
в отговор на Бyrapин #4

Re: Mysql Checkbox

Грешката ти е, че не задаваш правилни параметри тук
mysql_select_db("db_name");
или тук
$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");

Отговор
в отговор на Tpaвъл #5

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();
}
?>

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #6

Re: Mysql Checkbox

По-добра идея, по-чист код, по-малко проверки. Супер.
$where = implode(' or ', $where);

Отговор
в отговор на edembg #7

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>

Благодаря ви и на двамата и извинете за тъпите въпроси.

Отговор
в отговор на Бyrapин #8

Re: Mysql Checkbox

Иззвинявай. Мисля, че грешката е тук.


$result = mysql_query("SELECT * FROM `table` WHERE `column_1`=$where;");

Трябва да бъде

$result = mysql_query("SELECT * FROM `table` WHERE `$where;");

И най-ярките личности си плащат тока.
Отговор
в отговор на Бyrapин #9

Re: Mysql Checkbox

Пак извинявай и още един пропуск

<FORM ACTION="index.php" METHOD="get">
трябва да бъде

<FORM ACTION="index.php" METHOD="post">

С тези промени трябва да върви

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #10

Супер си

Сега излиза. Но има още един малък проблем.

Когато всяко е избрано поединично, не показва нищо.
Когато са избрани А и B, показва само B.
Когато са избрани B и C, показва само C.
Когато са избрани и трите, показва само B и C.

Отговор
в отговор на Tpaвъл #11

Re: Mysql Checkbox

Грешката ми е била във формуляра - трябва да е post, а аз съм пробвал с get.

Сега върви без грешка скриптчето, мерси.

Отговор
в отговор на Бyrapин #12

Re: Супер си

Какато Травъл правилно забеляза

$where = implode(' && ', $where);

трябва да бъде

$where = implode(' or ', $where);

Не виждам друга причина да не отговаря на очакванията ти. Ако все пак е така остава да се справиш сам. Все пак този код не съм тествал. А и задачата е твоя. Мисля, че сега знаеш повече отколкото в начлото. Останалото не е толкова трудно.

Успех.

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #13

Re: Супер си

Сърдечно благодаря и на двама ви!

Редактирано от Бyrapин на

Отговор