Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Языки программирования (http://mangos.ytdb.ru/forumdisplay.php?f=34)
-   -   php формы, функции (http://mangos.ytdb.ru/showthread.php?t=7243)

Visible 25.07.2013 14:37

php формы, функции
 
Недавно начал изучать php, подскажите пожалуйста.
Вывожу форму:
Код:

include_once("function.php");
if (isset (некая проверка) {
что то..
}
else {
print_form();
}

function.php

Код:

function print_form()
{
echo <<<qwe
<form action="" method="POST">

и т.д.
интересует момент form action="". что нужно добавлять, если обработчик находится внутри другой функции?

Код:
Код:

function process_add()
{
обработчик формы
}

И ещё, попутный вопрос, может не совсем правильный. file_get_contents читает содержимое файла в строку. Имеется ли функция, которая бы читала содержимое файла в строку не забыв о php коде в этом файле?
Код:

    public function contentsite() {
        return file_get_contents(");
    }

вывод на главную
Код:

echo $engine->contentsite();

lovepsone 25.07.2013 15:55

Для начало разберитесь что делает GET, а что POST и как ими пользоваться.
1)Если хотите использовать post, и что бы можно было делать проверку к нему, то для начала форму надо назвать т.е:
<form name="название" .... > и тд . А form action должен содержать текущий URL(если память мне не изменяет).
И вообще какой смысл содержать обработчик и и форму в разных функциях(файлах)?Бред какой-то!
2) file_get_contents не читает пхп код ни как, если вам нужно вывести php файл с формой и кодом то вот функция include("имя файла");



P.S. Уже давно на пхп не сидел так что могу морозить )

Nepohelovski 25.07.2013 18:55

Цитата:

И вообще какой смысл содержать обработчик и и форму в разных функциях(файлах)?Бред какой-то!
Возьмите любой фреймворк работающий по принципу MVC и увидите что код представления, в данном случае форма html будет в одном файле а модель и контроллер будут в других файлах, это и есть грамотное программирование =)

В случае ТСа тяжело сказать что нужно указать в поле action т.к. самого кода мы не видим и не знаем где находиться обработчик, если обработчик в этом же файле, поле можно оставить пустым.

Цитата:

Имеется ли функция, которая бы читала содержимое файла в строку не забыв о php коде в этом файле?
Не совсем ясно что вы хотите, возможно вы имели ввиду eval

Visible 25.07.2013 19:20

Реализовал выводом из одной функции в function.php.
Код:

<form action='#'
вывожу содержимое файла на странице функцией.
Код:

    public function getContentPage() {
        return file_get_contents("templates/" . $this->_page_file . ".php");
    }

При замене на
Код:

    public function getContentPage() {
        return include("templates/" . $this->_page_file . ".php");
    }

код стал выполняться.
вывожу так:
Код:

echo $engine->getContentPage();
Но постоянно на каждые страницы начала появляться циферка 1. Не совсем разобрался почему так....

Nepohelovski 25.07.2013 19:30

Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage());
че у вас там в контенте, может где забыли что за комментировать лишнее.

Visible 25.07.2013 19:36

Цитата:

Сообщение от Nepohelovski (Сообщение 31687)
Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage());
че у вас там в контенте, может где забыли что за комментировать лишнее.

через фуньку выводит
Код:

int(1)

Nepohelovski 25.07.2013 19:41

http://php.net/manual/ru/function.include.php
Цитата:

Успешные включения, пока это не переопределено во включаемом файле, возвращают значение 1.
Почитайте: Пример #6 Использование буферизинованного вывода для включения PHP файла в строку.

lovepsone 25.07.2013 22:54

Цитата:

Сообщение от Nepohelovski (Сообщение 31685)
Возьмите любой фреймворк работающий по принципу MVC и увидите что код представления, в данном случае форма html будет в одном файле а модель и контроллер будут в других файлах, это и есть грамотное программирование =)

В случае ТСа тяжело сказать что нужно указать в поле action т.к. самого кода мы не видим и не знаем где находиться обработчик, если обработчик в этом же файле, поле можно оставить пустым.

Не знаю как там, но я делал так! Брал код html и сохранял в буфер(не во всех случаях), а потом где надо выводил + мне это дало возможность создавать панели и выводить так как я хочу. Так я пытался html не юзать в коде пхп. Позже я взял библиотечку smarty...
Или я опять что-то нет так понял?


Цитата:

Сообщение от Nepohelovski (Сообщение 31685)
Не совсем ясно что вы хотите, возможно вы имели ввиду eval

Функцию eval(), как по мне, не юзать! Лучше уже свою попробовать написать.(хотя я автора темы немного не понял)

P.S. Мб кинуть с++&Qt и перейти обратно на пхп?

Nepohelovski 26.07.2013 01:03

Цитата:

P.S. Мб кинуть с++&Qt и перейти обратно на пхп?
Угу) Но только не на PHP а на C&GTK ))
Цитата:

Функцию eval(), как по мне, не юзать!
Да уже разобрались ему нужен был include просто мы не так поняли.
А я вот никогда не любил шаблонизатор smarty)

Visible 26.07.2013 13:43

Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в
Код:

<form action='#'

lovepsone 26.07.2013 14:11

Цитата:

Сообщение от Nepohelovski (Сообщение 31695)
А я вот никогда не любил шаблонизатор smarty)

А какие вы предпочитаете шаблонизаторы?

Цитата:

Сообщение от Visible (Сообщение 31704)
Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в
Код:

<form action='#'

Попробуйте ссылку на функцию записать в константу зарание, а позже добавить в form action=константа_ваша (естественно кавычки не забывайте)

P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)

Visible 26.07.2013 14:18

Цитата:

Сообщение от lovepsone (Сообщение 31705)
А какие вы предпочитаете шаблонизаторы?



Попробуйте ссылку на функцию записать в константу зарание, а позже добавить в form action=константа_ваша (естественно кавычки не забывайте)

P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)

итак. Только mercurial...ссылка у вас в ЛС, доступ там же. Сейчас попробую как то так сделать

Nepohelovski 26.07.2013 16:58

Цитата:

Сообщение от lovepsone (Сообщение 31705)
А какие вы предпочитаете шаблонизаторы?

Никакие, мне нравиться фреймворк Yii.

Visible 17.10.2013 18:35

Подскажите пожалуйста, пытаюсь сделать вывод в таблицу данные из mysql.
Таблица создается. Но как сгенерировать запрос на основе данных ещё другой таблицы? делаю вот так:
Код:

        while($data = mysql_fetch_array($qr_result)){
                echo '<tr>';
                echo '<td>' . $data['entry'] . '</td>';
                $id_query = 'SELECT name FROM area WHERE entry ='.$data['id_area'];
                $resultt = mysql_query($id_query);
                echo '<td>' . $resultt . '</td>';
                echo '<td>' . $data['name'] . '</td>';
                echo '</tr>';
        }

первая и третья колонка выводится. а вот вторая: Resource id #13. Подскажите как можно сделать поиск по другой таблице в mysql и вывести значение колонки в таблицу?

Visible 17.10.2013 18:38

разобрался, сделал так:
Код:

        while($data = mysql_fetch_array($qr_result)){
                echo '<tr>';
                echo '<td>' . $data['entry'] . '</td>';
                $id_query = 'SELECT * FROM area WHERE entry ='.$data['id_area'];
                $result = mysql_query($id_query);
                $resultt = mysql_fetch_array($result);
                echo '<td>' . $resultt['name'] . '</td>';
                echo '<td>' . $data['name'] . '</td>';
                echo '</tr>';
        }

Но может есть способ проще?

Visible 18.10.2013 18:45

Подскажите пожалуйста, есть код
Код:

echo '<html><head><title>Сортировка по категориям</title>
</head>
<body>';
 
echo "<center><form method='post'>
      <select name='categories'>
      <option value=''>-- Выберите категорию --</option>";
         
$result =  mysql_query ("SELECT * FROM area")
                or die ("<b>Query failed:</b> " . mysql_error());
 
while ($row = mysql_fetch_array($result)){
 
echo "<option value=' ".$row['entry']." '>".$row['name']."</option>";
}
 
echo '</select></form></center>';
echo '</body></html>';
?>
<form method="POST" name="add_line">
<table>
<tr>
<td>поле</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="save"></td>
</tr>
</table>
</form>

происходит выбор опции, опции подгружаются и таблицы (колонка name)
если отправили форму то вызываем функцию
Код:

        if ('POST' === $_SERVER['REQUEST_METHOD'])
{
            // Форма отправлена
            add_line();
}

сама функция
Код:

function add_line()
{
        if (isset($_POST['name']))
        {
        $name=$_POST['name'];
        }
        if (!empty($name))
        $zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')");
        if ($zapro == 'true')
        {
        echo "dobavleno";
        }
        else
        {
        echo "ne dob";
        }
}

Но есть проблемы,
1. при добавлении записи в запросе не формируется entry выбраного меню. Проблему выделил жирным цветом. (вместо ентри подставляется пустое значение и запрос выполняется с пустым значением), уже 2 дня голову мучаю...
2. если добавить запись, а потом обновить страничку то запись добавится дважды/трижды и т.п. как правильно организовать проверочку?
3. Как правильно спрятать форму до выбора опции, и выводить после выбора опции?

Большое спасибо

lovepsone 18.10.2013 20:25

в нутри функции у тебя нету объявления массива $row. А судя по коду он должен быть глобальным либо передавать как параметр.
Код:

function add_line()
{
        global $row;
        if (isset($_POST['name']))
        {
        $name=$_POST['name'];
        }
        if (!empty($name))
        $zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')");
        if ($zapro == 'true')
        {
        echo "dobavleno";
        }
        else
        {
        echo "ne dob";
        }

А на счет проверочек, то их много куда пихать надо

Visible 19.10.2013 08:18

Спасибо, но если даже объявить переменную все равно не добавляет...эффект тот же. подставляет пустое значение.
ещё недавно заметил, т.к. я IE непользуюсь долго незамечал. есть какая то проблема в стилях, в браузерах отличных от IE работает хорошо, в IE нехочет.
Код:

        body{
                background: #c0c0c0 url(images/header.jpg) no-repeat center top; //цвет фона
                font: 0px 'trebuchet MS', Arial, Helvetica;
        }
       
        h2, p {
                text-align: center;
                color: #eb0d02;
                text-shadow: 0 1px 0 #eb0d02;       
        }
       
        a {
                color: #2A679F;
        }
       
        /* Выше приведёные стили предназначены для демонстрации ----------- */
       
        #menu, #menu ul {
                margin: 0;
                padding: 0;
                list-style: none;
        }
       
        #menu {
                width: 960px; //длина панельки
                margin: 60px auto;
                border: 1px solid #222;
                background-color: #111;
                background-image: -moz-linear-gradient(#444, #111);
                background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));       
                background-image: -webkit-linear-gradient(#444, #111);       
                background-image: -o-linear-gradient(#444, #111);
                background-image: -ms-linear-gradient(#444, #111);
                background-image: linear-gradient(#444, #111);
                -moz-border-radius: 6px;
                -webkit-border-radius: 6px;
                border-radius: 6px;
                -moz-box-shadow: 0 1px 1px #777, 0 1px 0 #666 inset;
                -webkit-box-shadow: 0 1px 1px #777, 0 1px 0 #666 inset;
                box-shadow: 0 1px 1px #acca24, 0 1px 0 #666 inset;
        }
       
        #menu:before,
        #menu:after {
                content: "";
                display: table;
        }
       
        #menu:after {
                clear: both;
        }
       
        #menu {
                zoom:1;
        }
       
        #menu li {
                float: left;
                border-right: 1px solid #222;
                -moz-box-shadow: 1px 0 0 #444;
                -webkit-box-shadow: 1px 0 0 #444;
                box-shadow: 1px 0 0 #444;
                position: relative;
        }
       
        #menu a {
                float: left;
                padding: 12px 30px;
                color: #999;
                text-transform: uppercase;
                font: bold 12px Arial, Helvetica;
                text-decoration: none;
                text-shadow: 0 1px 0 #000;
        }
       
        #menu li:hover > a {
                color: #fafafa;
        }
       
        *html #menu li a:hover { /* Только для IE6 */
                color: #fafafa;
        }
       
        #menu ul {
                margin: 20px 0 0 0;
                _margin: 0; /*Только для IE6*/
                opacity: 0;
                visibility: hidden;
                position: absolute;
                top: 38px;
                left: 0;
                z-index: 9999;   
                background: #444;
                background: -moz-linear-gradient(#444, #111);
                background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));
                background: -webkit-linear-gradient(#444, #111);   
                background: -o-linear-gradient(#444, #111);       
                background: -ms-linear-gradient(#444, #111);       
                background: linear-gradient(#444, #6f8314);
                -moz-box-shadow: 0 -1px rgba(255,255,255,.3);
                -webkit-box-shadow: 0 -1px 0 rgba(255,255,255,.3);
                box-shadow: 0 -1px 0 rgba(255,255,255,.3);       
                -moz-border-radius: 3px;
                -webkit-border-radius: 3px;
                border-radius: 3px;
                -webkit-transition: all .2s ease-in-out;
                -moz-transition: all .2s ease-in-out;
                -ms-transition: all .2s ease-in-out;
                -o-transition: all .2s ease-in-out;
                transition: all .2s ease-in-out; 
        }

        #menu li:hover > ul {
                opacity: 1;
                visibility: visible;
                margin: 0;
        }
       
        #menu ul ul {
                top: 0;
                left: 150px;
                margin: 0 0 0 20px;
                _margin: 0; /*Только для IE6*/
                -moz-box-shadow: -1px 0 0 rgba(255,255,255,.3);
                -webkit-box-shadow: -1px 0 0 rgba(255,255,255,.3);
                box-shadow: -1px 0 0 rgba(255,255,255,.3);               
        }
       
        #menu ul li {
                float: none;
                display: block;
                border: 0;
                _line-height: 0; /*Только для IE6*/
                -moz-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
                -webkit-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
                box-shadow: 0 1px 0 #111, 0 2px 0 #666;
        }
       
        #menu ul li:last-child { 
                -moz-box-shadow: none;
                -webkit-box-shadow: none;
                box-shadow: none;   
        }
       
        #menu ul a {   
                padding: 10px;
                width: 130px;
                _height: 10px; /*Только для IE6*/
                display: block;
                white-space: nowrap;
                float: none;
                text-transform: none;
        }
       
        #menu ul a:hover {
                background-color: #0186ba;
                background-image: -moz-linear-gradient(#acca24,  #6f8314);       
                background-image: -webkit-gradient(linear, left top, left bottom, from(#acca24), to(#6f8314));
                background-image: -webkit-linear-gradient(#acca24, #6f8314);
                background-image: -o-linear-gradient(#acca24, #6f8314);
                background-image: -ms-linear-gradient(#acca24, #6f8314);
                background-image: linear-gradient(#acca24, #6f8314);
        }
       
        #menu ul li:first-child > a {
                -moz-border-radius: 3px 3px 0 0;
                -webkit-border-radius: 3px 3px 0 0;
                border-radius: 3px 3px 0 0;
        }
       
        #menu ul li:first-child > a:after {
                content: '';
                position: absolute;
                left: 40px;
                top: -6px;
                border-left: 6px solid transparent;
                border-right: 6px solid transparent;
                border-bottom: 6px solid #444;
        }
       
        #menu ul ul li:first-child a:after {
                left: -6px;
                top: 50%;
                margin-top: -6px;
                border-left: 0;       
                border-bottom: 6px solid transparent;
                border-top: 6px solid transparent;
                border-right: 6px solid #3b3b3b;
        }
       
        #menu ul li:first-child a:hover:after {
                border-bottom-color: #acca24;
        }
       
        #menu ul ul li:first-child a:hover:after {
                border-right-color: #acca24;
                border-bottom-color: transparent;       
        }
       
        #menu ul li:last-child > a {
                -moz-border-radius: 0 0 3px 3px;
                -webkit-border-radius: 0 0 3px 3px;
                border-radius: 0 0 3px 3px;
        }



// для таблиц

table {
    *border-collapse: collapse; /* Для IE7 и страше */
    border-spacing: 0;
}

th:first-child {
    -moz-border-radius: 6px 0 0 0;
    -webkit-border-radius: 6px 0 0 0;
    border-radius: 6px 0 0 0;
}

th:last-child {
    -moz-border-radius: 0 6px 0 0;
    -webkit-border-radius: 0 6px 0 0;
    border-radius: 0 6px 0 0;
}

так хочется разобраться, но ничего не выходит..

Visible 19.10.2013 15:35

Цитата:

Сообщение от lovepsone (Сообщение 32185)
в нутри функции у тебя нету объявления массива $row. А судя по коду он должен быть глобальным либо передавать как параметр.
Код:

function add_line()
{
        global $row;
        if (isset($_POST['name']))
        {
        $name=$_POST['name'];
        }
        if (!empty($name))
        $zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')");
        if ($zapro == 'true')
        {
        echo "dobavleno";
        }
        else
        {
        echo "ne dob";
        }

А на счет проверочек, то их много куда пихать надо

уже проблему решил вот так:

Код:

echo "<center><form method='post'>
      <select name='action'>
      <option value=''>-- Выберите отделение --</option>";
         
$result =  mysql_query ("SELECT * FROM area")
                or die ("<b>Query failed:</b> " . mysql_error());
 
while ($row = mysql_fetch_array($result)){
 
echo "<option value=' ".$row['entry']." '>".$row['name']."</option>";
}
 
echo '</select>';

echo '<tr><br>';
echo '<td>поле</td>';
echo '<td><input type="text" name="name"></td>';
echo '</tr>';
echo '<tr>';
echo '<td><input type="submit" name="submit" value="save"></td>';
echo '</tr>';
echo '</form></center>';

осталось разобраться с проверочками, да и с отображением на IE... в функцию передается action, выделил жирным. и чуть дописал функцию, теперь она выглядит так:
Код:

function add_line()
{
        if (isset($_POST['name']))
        {
                $name=$_POST['name'];
                $action=$_POST['action'];
        }
        if (empty($name) || empty($action))
        {
                echo "балалайка, пустые значения.";
        }
        else
        {
                $zapro = mysql_query ("insert into line (id_area, name) values ('$action','$name')");
                if ($zapro == 'true')
                {
                echo "Успешно добавлено.";
                }
                else
                {
                echo "не добавлено";
                }
        }
}


Visible 19.10.2013 16:16

пытался сделать вторичный вывод, на основе первичного, неполучилось(
Код:

echo "<center><form method='POST'>
      <select name='area'>
      <option value=''>-- Выберите отделение --</option>";
         
$result =  mysql_query ("SELECT * FROM area")
                or die ("<b>Query failed:</b> " . mysql_error());
 
while ($row = mysql_fetch_array($result)){
 
echo "<option value=' ".$row['entry']." '>".$row['name']."</option>";
}
 
echo '</select>';

echo "<select name='line'>
      <option value=''>-- Выберите линию --</option>";
         
$resultr =  mysql_query ("SELECT * FROM line where id_area=' ".$_POST['area']." ' ")
                or die ("<b>Query failed:</b> " . mysql_error());
 
while ($roww = mysql_fetch_array($resultr)){
 
echo "<option value=' ".$roww['entry']." '>".$roww['name']."</option>";
}
 
echo '</select>';

По всей видимости с этим тоже дня два буду мучаться.

lovepsone 19.10.2013 18:21

Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!

Visible 19.10.2013 19:06

Цитата:

Сообщение от lovepsone (Сообщение 32189)
Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!

Большое спасибо, я уже немного разобрался, после выбора первого выпадающего списка, чтобы подгрузился второй, нужен ajax запрос. фактически без него после выбора первого меню, перезагружаем страницу и только потом подгружается второй список, на основе выбранного первого списка. В действительности подгрузка сейчас происходит по этому методу, но нужно ajax подгрузку. С ним я вообще никак не знаком. пытаюсь вникнуть хоть в что то.

SergiK_KilleR 30.10.2013 13:29

что передает поле $row['entry'] ? автоинкрементное значение?
переписанный вариант того что вы пытались сделать. Проверку введенных данных (GET/POST) желательно делать до передачи в какие-либо функции, это упростит понимание того что делает сама функция и отпадет надобность дополнительных проверок в самих функциях.

Код:

<?
function add_line($name){
        global $row;

        $query = sprintf(
                "INSERT INTO `line` (`id_area`, `name`) VALUES ('%d','%s')",
                $row['entry'],
                mysql_real_escape_string($name)
        );
        $res = mysql_query($query);

        if(!$res){
                exit("<b>Query failed:</b> " . mysql_error());
        }

        return true;
}

if(isset($_POST['add_line'])){
        $name = isset($_POST['name']) ? trim($_POST['name']) : null;
        if($name){
                add_line($name);
        }
}
?>
<html><head><title>Сортировка по категориям</title>
</head>
<body>
<center>
<form method="post">
        <select name="categories">
                <option value=''>-- Выберите категорию --</option>
<?       
$result =  mysql_query ("SELECT * FROM area")
                or die ("<b>Query failed:</b> " . mysql_error());
while ($row = mysql_fetch_array($result)){
        $selected = (isset($_POST['categories']) && $row['entry'] == intval($_POST['categories'])) ? " selected" : "";
        echo "<option value='".$row['entry']."'".$selected.">".$row['name']."</option>";
}
?>
        </select>
</form>
</center>

<form method="POST" name="add_line">
        <table>
        <tr>
                <td>поле</td>
                <td><input type="text" name="name"></td>
        </tr>
        <tr>
                <td><input type="submit" name="submit" value="save"></td>
        </tr>
</table>
</form>
</body></html>

в приведенном мной примере переменная $row должна быть объявлена до вызова функции add_line($name).

Visible 05.11.2013 14:42

Цитата:

Сообщение от SergiK_KilleR (Сообщение 32209)
что передает поле $row['entry'] ? автоинкрементное значение?
переписанный вариант того что вы пытались сделать. Проверку введенных данных (GET/POST) желательно делать до передачи в какие-либо функции, это упростит понимание того что делает сама функция и отпадет надобность дополнительных проверок в самих функциях.

Код:

<?
function add_line($name){
        global $row;

        $query = sprintf(
                "INSERT INTO `line` (`id_area`, `name`) VALUES ('%d','%s')",
                $row['entry'],
                mysql_real_escape_string($name)
        );
        $res = mysql_query($query);

        if(!$res){
                exit("<b>Query failed:</b> " . mysql_error());
        }

        return true;
}

if(isset($_POST['add_line'])){
        $name = isset($_POST['name']) ? trim($_POST['name']) : null;
        if($name){
                add_line($name);
        }
}
?>
<html><head><title>Сортировка по категориям</title>
</head>
<body>
<center>
<form method="post">
        <select name="categories">
                <option value=''>-- Выберите категорию --</option>
<?       
$result =  mysql_query ("SELECT * FROM area")
                or die ("<b>Query failed:</b> " . mysql_error());
while ($row = mysql_fetch_array($result)){
        $selected = (isset($_POST['categories']) && $row['entry'] == intval($_POST['categories'])) ? " selected" : "";
        echo "<option value='".$row['entry']."'".$selected.">".$row['name']."</option>";
}
?>
        </select>
</form>
</center>

<form method="POST" name="add_line">
        <table>
        <tr>
                <td>поле</td>
                <td><input type="text" name="name"></td>
        </tr>
        <tr>
                <td><input type="submit" name="submit" value="save"></td>
        </tr>
</table>
</form>
</body></html>

в приведенном мной примере переменная $row должна быть объявлена до вызова функции add_line($name).

спасибо, я уже подумал, лучше не подгружать через функции инсерт в базу, что то мне разонравилось реализация через функции. а с сохранением селекта, очень интересно, попробую разобраться. сейчас все пытаюсь jquery в селект подгружать научиться, динамически создавать запрос и выводить в тег селект.

Кот ДаWINчи 06.11.2013 09:50

Цитата:

Сообщение от Visible (Сообщение 32229)
спасибо, я уже подумал, лучше не подгружать через функции инсерт в базу, что то мне разонравилось реализация через функции. а с сохранением селекта, очень интересно, попробую разобраться.

сейчас все пытаюсь jquery в селект подгружать научиться, динамически создавать запрос и выводить в тег селект.

не стоит сравнивать мягкое с соленым! php и "селект" работают на стороне сервера. jquery - отрабатывает на стороне пользователя в браузере. Так что все эти навороты требуют полноценного движка. В котором немалую роль будет занимать согласование между частями самого движка и защита от взлма (или просто неправильных запросов от пользователя рушащих данные).

а вот отказ от функций это шаг назад.

Я бы посоветовал не отказываться от них, а научиться их строить и использовать правильно. Потом же перейти к созданию собственных классов. так как методы в классах - это по своей сути и есть те же самые функции.

Visible 06.11.2013 11:52

Я не то чтобы от них отказался, я подумал что использовать функцию в данном случае не рентабельно. Таких функций требуется очень много и все не похожи друг на друга, и тем более кода там по пять десять строчек. Думаю лучше это выводить сразу на страницу. По мере расширения функционала, возможно по требуется их исполтзование. Зато попробывал, получил результат, и научился их исполтзовать. Я понимаю что нужна какая то защита он инекций и т.п. сейчас пробую , верней свой функционал уже перевел под pdo, а авторизацию еще пока не получается перевести. Но вроде уже кое какие мысли пришли как сделать. Хочется полностью перевести на пдо и научиться аяксу или jquery.

Visible 21.11.2013 18:16

Подскажите пожалуйста, есть функция
Код:

<script>
function showLine(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","file.php?q="+str,true);
xmlhttp.send();
}
</script>

есть форма с селектом, после выбора в форме вызывается функция,
в нее передается параметр и в файле .php создается новый селект на основе результата выбора, как в функцию передавать несколько параметров, например после выбора первого селекта создается/заполняется второй, после выбора второго третий и т.д. результат заполнения каждого последующего зависит от выбора предыдущих.


Текущее время: 22:09. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS