Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 20:21   #1
shtep
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 16
По умолчанию Списки

Помогите с проблемкой.
Есть 4 таблицы table1, table2, table3, table4. Во всех таблицах одинаковые поля (id, number_pribors, number_cikle).
Есть 3 списка. В первом списке выводится список названий таблиц, во втором выводится все приборы из выбранной таблицы.
Как мне вывести 3 список с номерами циклов исходя из выбранной таблицы и выбранного прибора.
Мой код:
Файл test.php
PHP код:
<script language=Javascript>

function 
Inint_AJAX() {
try { return new 
ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
alert("XMLHttpRequest not supported");
return 
null;
};

function 
dochange(srcval) {
var 
req Inint_AJAX();
req.onreadystatechange = function () { 
if (
req.readyState==4) {
if (
req.status==200) {
document.getElementById(src).innerHTML=req.responseText//

}
};
req.open("GET""script.php?data="+src+"&val="+val); //
req.setRequestHeader("Content-Type""application/x-www-form-urlencoded;charset=utf-8"); // set Header
req.send(null); //
}

window.onLoad=dochange('tabl', -1); 
</script>

<form action=”vid_v_upd.php” method=”get”>
<label>Выберите № таблицы из списка</label>
<div id=”tabl”></div> 
<div id=”pribors”></div>
<div id=”cikl”></div>
<input name=”button” type=”submit” />
</form> 

Файл script.php
PHP код:
<?php
  
    header 
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    
header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
    
header ("Cache-Control: no-cache, must-revalidate");
    
header ("Pragma: no-cache");
    
header("content-type: application/x-javascript; charset=utf-8");
    
$data = isset($_GET['data'])?$_GET['data']:hull;
    
$val = isset($_GET['val'])?$_GET['val']:hull;

$dbhost "localhost";
$dbuser "admin";
$dbpass "1111";
$dbname "bd";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");

@
mysql_query("SET NAMES utf8");
  
if (
$data=='tabl'

    echo 
"<select name='tabl' onChange=\"dochange('pribors', this.value)\">\n";
    echo 
"<option value=''>Выбрать таблицу</option>\n";
    echo 
"<option value='1'>Таблица 1</option> \n";
    echo 
"<option value='2'>Таблица 2</option> \n";
    echo 
"<option value='3'>Таблица 3</option> \n";
    echo 
"<option value='4'>Таблица 4</option> \n";
    echo 
"</select>\n";
}

 
if (
$data=='pribors'
{
    if (
$val == "1")
    {
        echo 
"<label>Выберите № прибора</label><br>";
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n";
        echo 
"<option value=''>Выбрать прибор</option>\n";                              
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table1 ORDER BY number_pribors");
        while(list(
$name) = mysql_fetch_array($result))
        {
            echo 
"<option value=\"$name\">$name</option> \n";
        }
        echo 
"</select>\n";
    }
    elseif (
$val == "2")
    {
        echo 
"<label>Выберите № прибора</label><br>";        
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n";
        echo 
"<option value=''>Выбрать прибор</option>\n";                              
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table2 ORDER BY number_pribors");
        while(list(
$name) = mysql_fetch_array($result))
        {
            echo 
"<option value=\"$name\">$name</option> \n";
        }
        echo 
"</select>\n";    
    }
    elseif (
$val == "3")
    {
        echo 
"<label>Выберите № прибора</label><br>";        
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n";
        echo 
"<option value=''>Выбрать прибор</option>\n";                              
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table3 ORDER BY number_pribors");
        while(list(
$name) = mysql_fetch_array($result))
        {
            echo 
"<option value=\"$name\">$name</option> \n";
        }
        echo 
"</select>\n";            
    }
    elseif (
$val == "4")
    {
        echo 
"<label>Выберите № прибора</label><br>";        
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n";
        echo 
"<option value=''>Выбрать прибор</option>\n";                              
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table4 ORDER BY number_pribors");
        while(list(
$name) = mysql_fetch_array($result))
        {
            echo 
"<option value=\"$name\">$name</option> \n";
        }
        echo 
"</select>\n";        
    }
}

if (
$data=='cikl'
{
    echo 
"<label>Выберите № цикла</label><br>";
    echo 
"<select name='cikl'>\n";
    echo 
"<option value=''>Выбрать цикл</option>\n";
    echo 
"<option value='0'>0 цикл</option> \n";
    echo 
"<option value='1'>1 цикл</option> \n";
    echo 
"<option value='2'>2 цикл</option> \n";
    echo 
"<option value='3'>3 цикл</option> \n";
    echo 
"<option value='4'>4 цикл</option> \n";
    echo 
"<option value='5'>5 цикл</option> \n";
    echo 
"</select>\n";
}
shtep вне форума Ответить с цитированием
Старый 29.04.2014, 01:21   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

С архитектурой БД жесть какая-то похоже, или я чего-то не понял.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 29.04.2014 в 01:24.
Fenex вне форума Ответить с цитированием
Старый 29.04.2014, 01:35   #3
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Вот это всё очень плохо:
PHP код:
    if ($val == "1"
    { 
        echo 
"<label>Выберите № прибора</label><br>"
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n"
        echo 
"<option value=''>Выбрать прибор</option>\n";                               
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table1 ORDER BY number_pribors"); 
        while(list(
$name) = mysql_fetch_array($result)) 
        { 
            echo 
"<option value=\"$name\">$name</option> \n"
        } 
        echo 
"</select>\n"
    } 
    elseif (
$val == "2"
    { 
        echo 
"<label>Выберите № прибора</label><br>";         
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n"
        echo 
"<option value=''>Выбрать прибор</option>\n";                               
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table2 ORDER BY number_pribors"); 
        while(list(
$name) = mysql_fetch_array($result)) 
        { 
            echo 
"<option value=\"$name\">$name</option> \n"
        } 
        echo 
"</select>\n";     
    } 
    elseif (
$val == "3"
    { 
        echo 
"<label>Выберите № прибора</label><br>";         
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n"
        echo 
"<option value=''>Выбрать прибор</option>\n";                               
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table3 ORDER BY number_pribors"); 
        while(list(
$name) = mysql_fetch_array($result)) 
        { 
            echo 
"<option value=\"$name\">$name</option> \n"
        } 
        echo 
"</select>\n";             
    } 
    elseif (
$val == "4"
    { 
        echo 
"<label>Выберите № прибора</label><br>";         
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n"
        echo 
"<option value=''>Выбрать прибор</option>\n";                               
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table4 ORDER BY number_pribors"); 
        while(list(
$name) = mysql_fetch_array($result)) 
        { 
            echo 
"<option value=\"$name\">$name</option> \n"
        } 
        echo 
"</select>\n";         
    } 
Вместо 4 (а в худшем случае n+1) таблиц делается одна, в которой добавляется дополнительный столбец (type).

Тогда:
PHP код:
        echo "<label>Выберите № прибора</label><br>"
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n"
        echo 
"<option value=''>Выбрать прибор</option>\n";                               
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table WHERE type = " $val " ORDER BY number_pribors"); 
        while(list(
$name) = mysql_fetch_array($result)) 
        { 
            echo 
"<option value=\"$name\">$name</option> \n"
        } 
        echo 
"</select>\n"
Соответственно,
Цитата:
Как мне вывести 3 список с номерами циклов исходя из выбранной таблицы и выбранного прибора.
запрос будет выглядеть примерно так:
Код:
SELECT * FROM table WHERE type = $val AND number_pribors = $number_pribors LIMIT 30;
Даже если по каким-то причинам такое невозможно сделать (что точно странно), сделайте одну функцию, и вызывайте её с параметром $val:

PHP код:
function echoForm($num) {
        
$dbname ''//!!!

        
echo "<label>Выберите № прибора</label><br>";         
        echo 
"<select name='pribors' onChange=\"dochange('cikl', this.value) \">\n"
        echo 
"<option value=''>Выбрать прибор</option>\n";                               
        
$result mysql_db_query($dbname,"SELECT DISTINCT number_pribors FROM table ".$num." ORDER BY number_pribors"); 
        while(list(
$name) = mysql_fetch_array($result)) 
        { 
            echo 
"<option value=\"$name\">$name</option> \n"
        } 
        echo 
"</select>\n";

        
}
echoForm($val); 
Приведённый выше код надо дорабатывать, т.к. он уязвим к SQL-inj.
^-.-^ My GitHub

Последний раз редактировалось Fenex; 29.04.2014 в 22:25. Причина: пробел в коде забыл поставить
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки на С++ innaa639 Помощь студентам 3 14.10.2010 17:27
Списки. Corpinccom Помощь студентам 2 12.10.2010 21:54
Списки. Skyriver Помощь студентам 1 16.06.2010 00:21