1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Косяк в коде на пхп

Тема в разделе "Web Coding", создана пользователем penguen, 11 июл 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. penguen

    penguen

    Регистр.:
    7 янв 2007
    Сообщения:
    820
    Симпатии:
    93
    Дали задание сделать форму на нтмл+пхп принимающую заявки на поломку.
    Скодил код, все ок, но в базу не пишится перемен. введенная в форму, но ид_индентифик. создается.
    Т.е. в базу пишится пустая переменная

    Вот сам код таблицы:
    CREATE TABLE `add_zayavka` (
    `id_cor` bigint(255) unsigned NOT NULL auto_increment,
    `address` varchar(50) NOT NULL default '',
    `telephone` varchar(10) NOT NULL default '',
    `time` varchar(10) NOT NULL default '',
    `date` varchar(10) NOT NULL default '',
    `time2` varchar(10) NOT NULL default '',
    `date2` varchar(10) NOT NULL default '',
    `ip_add` varchar(20) NOT NULL default '',
    `comments` varchar(255) NOT NULL default '',
    PRIMARY KEY (`id_cor`)
    ) ENGINE=MyISAM;

    И сам код:

    <?php

    define('DATE', 'Дата');
    define('DATE2', 'Планируемая дата');
    define('TIME', 'Время');
    define('TIME2', 'Время исполнения');
    define('NAST2', 'Исполнитель заявки');
    #include ('connect.php');

    $dbhost="localhost";
    $dbname="noc";
    $dbuser="root";
    $dbpass="";
    # Connect MySQL

    $db=mysql_connect($dbhost, $dbuser, $dbpass) or die ("Not connect:" .mysql_error());


    $db_table=mysql_select_db($dbname) or die ("Not connect:" .mysql_error());
    #$ip_add=$_SERVER[REMOTE_ADDR];

    ?>

    <style>
    input
    {
    border:solid 1px #00;
    text-align:center;
    }
    textarea
    {
    border:solid 1px #00;
    text-align:center;
    }
    </style>
    <body bgcolor=f6f6f6>
    <table width=80% height="20%" border="0" align=center bgcolor=#c6c6c6>
    <form method="post" action="<?php add_zav1();?>">
    <tr><td colspan=3><input type="hidden" name="ip_add"></td></tr>
    <tr>
    <td align=center valign=middle width=35%><b>Адресс заявителя</b></td>
    <td align=center valign=middle><input type="text" name="address" size=45 maxlenght=200></td>
    <td rowspan=9 height=100% valign=middle>
    <select multiple name="nastroishiki" size=15>
    <?php
    $query="select first_name from sotrudniky";
    $result=mysql_query($query);
    $count321=mysql_num_rows($result);


    for ($i=0; $i<$count321; $i++)
    {
    $row=mysql_fetch_row($result);

    echo "<option value=$row[0]><b>$row[0]</b>";
    }
    //mysql_close($dbbase);
    ?>
    </select>

    </td>
    </tr>
    <tr><td align=center valign=middle width=35%><b>Телефон заявителя</b>
    <td align=center valign=middle><input type="text" name="telephone" size=45 maxlenght=200></td></tr>
    <tr><td align=center valign=middle width=35%><b>Время заявки</b><td align=center>


    <b><?php echo TIME?></b>&nbsp;&nbsp;&nbsp;<select name="time">
    <?php

    $xsw=date('i');
    $time=22;
    for ($i=9; $i<$time; $i++)
    {
    echo "<option value=\"$i\">$i _00&nbsp;ч";
    }

    ?></td></tr>
    <tr><td align=center width=35%><b>Дата заявки</b><td align=center>
    <b><?php echo DATE?></b>&nbsp;&nbsp;&nbsp;<select name="date">
    <?php
    $date=date('d'.'-'. 'm'.'-'.Y.'||'.H.'_'.i.'_'.s);
    echo "<option value=$date><b>$date</b>";
    ?>
    </select>
    </td></tr>
    <!-- -->
    <tr><td align=center valign=middle width=35%>
    <b>Кто настраивает</b><td align=center valign=middle width=35%>
    <b><?php echo NAST2?></b>&nbsp;&nbsp;&nbsp; ======= >>>>>
    </td></tr>
    <tr><td align=center width=35%><b>Планируемая дата</b><td align=center>
    <b><?php echo DATE2?></b>&nbsp;&nbsp;&nbsp;<select name="date2">
    <?php


    $date12=01;
    $xsw=date('m.y');


    for ($i=1; $i<32; $i++)
    {

    echo "<option value=\'$date12.$xsw\'><b>$date12.$xsw</b>";
    $date12+=1;
    }

    ?>
    </select>

    </td></tr>
    <tr><td align=center width=35%><b>Планируемое время</b><td align=center>
    <b><?php echo TIME2?></b>&nbsp;&nbsp;&nbsp;<select name="time2">
    <?php


    $time1=9;



    for ($i=9; $i<22; $i++)
    {

    echo "<option value=\'$time1\'><b>$time1&nbsp;_00&nbsp;ч.</b>";
    $time1+=1;
    }

    ?>
    </select>

    </td></tr>

    <!-- Comment-->

    <tr><td colspan=2 align=center><textarea name="comments" rows="5" cols="50">&nbsp;&nbsp;&nbsp;</textarea></td></tr>
    <tr><td colspan=2 align=center valign=middle>
    <input type="submit" value="Добавить">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="Сбросить">

    </td></tr>

    </select>
    </form>
    </table>

    <?php

    $ip_add=addslashes($HTTP_POST_VARS["ip_add"]);
    $comments=addslashes($HTTP_POST_VARS["comments"]);
    $address=addslashes($HTTP_POST_VARS["address"]);
    $telephone=addslashes($HTTP_POST_VARS["telephone"]);
    $time=addslashes($HTTP_POST_VARS["time"]);
    $date=addslashes($HTTP_POST_VARS["date"]);
    $nastroishiki=addslashes($HTTP_POST_VARS["nastroishiki"]);
    $date2=addslashes($HTTP_POST_VARS["date2"]);
    $time2=addslashes($HTTP_POST_VARS["time2"]);




    function add_zav1 ()
    {
    $query="insert into add_zayavka values ($address)";



    $result= mysql_query($query) or die ("<b>Not query</b>");
    if ($result)
    echo mysql_affected_rows(). " cool add";
    exit;
    }

    ?>

    В конце генерируется вот эта срань <form method="post" action="1 cool add

    Вопрос №1: Как сделать так чтоб был вызов функции заново add_zav1 и данные формы где адресс писалось в базу

    Не пойму что и как я не так сделал ((((
    Спасибо заранее за помощь.
     
  2. difour

    difour Прохожие

    Код:
    $query="insert into add_zayavka values ($address)";
    место $адресс, ты должен перечислить все ячейки таблицы, в том порядке, в котором они созданы;
    Код:
    $query="insert into add_zayavka values (null, '$address', '$telephone'.........)";
    ну это единственное что я понял из твоего кода :)
     
  3. penguen

    penguen

    Регистр.:
    7 янв 2007
    Сообщения:
    820
    Симпатии:
    93
    Я данные ньюансы знаю. ТЕст делал по одному полю.
     
  4. difour

    difour Прохожие

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

    penguen

    Регистр.:
    7 янв 2007
    Сообщения:
    820
    Симпатии:
    93
    Окей понял.
    Вопрос, вынес код из функции в отдельный скрипт который делает вставку в мускул, создается Ид-индентиф. но данные не пишутся, что не так делаю? ХЗ
     
  6. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    Бредовый код от начала и до конца. И это хакеры? :D

    Ну и почему что-то должно куда-то добавляться, если объявленая функция add_zav1() ни разу не вызывается?..
     
    wazawaza нравится это.
  7. maksar

    maksar Писатель

    Регистр.:
    18 июн 2007
    Сообщения:
    9
    Симпатии:
    0
    вызывается
    <form method="post" action="<?php add_zav1();?>">

    Ну во первых уже сказали global
    function add_zav1 ()
    {
    global $address;
    $query="insert into add_zayavka values ($address)";

    $result= mysql_query($query) or die ("<b>Not query</b>");
    if ($result)
    //для проверки выведем и значение переменной адрес
    echo mysql_affected_rows(). " cool add - ".$address;
    exit;
    }
    ну и вообще сам проверь через phpmyadmin свой запрос
    примерно так
    insert into add_zayavka values (1, 23, 33, " и т.д.")
    А так все в принципе работоспособно на первый взгляд.

    И вообще если функция mysql_affected_rows() возвращает 1 - то всетаки какие-то действия с твоей таблицей были произведены.
     
  8. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    А ты вообще вкурсе что должно быть в атрибуте action тега form

    Это мега LOL :D

    Ну ну. Загляни в мануал для начала по поводу синтаксиса INSERT :D
     
  9. penguen

    penguen

    Регистр.:
    7 янв 2007
    Сообщения:
    820
    Симпатии:
    93
    ВСе откликнувшимся спасибо, но ошибка еще есть
     
  10. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    penguen, не позорься лучше.
    Это ты мне совет даёшь? Лучше синтаксис bbCode выучи :D
    Какие ваши доказательства? (с) Красная жара... :D

    А теперь по твоему говнокоду...
    В атрибуте action тега form должен указываться URL (имя скрипта), которому передаётся запрос формы. Прописать тудда имя функции, выполняющей добавление в БД - это не эксперемент, а совершенное незнание php. Если бы ты включил отображение ошибок, то выяснил кучу всякого интересного о своём говнокоде.

    Да, мне нужно было более точно указать, что функция не выполняется после получения данных add_zav1(). А выполнение в том месте, где ты её прописал бесполезно.

    О синтаксие SQL ввообще молчи... :D

    И лучше слушай, что тебе говорят боле знающие люди и учись.

    P.S. Кстати, нахрена скрытое поле <input type="hidden" name="ip_add"> не имеющее значение? И нахрена пустое значение из него засовывать в БД? :p

    P.S.S. Вот лучши покури простой скрипт работы с формой и постарайся понять, почему в нём такой порядок действий и прочее...
    PHP:
    <?php
    /*
    Структура таблицы:
    -----------------
    CREATE TABLE names (
      id int(11) unsigned NOT NULL auto_increment,
      name varchar(255) default NULL,
      PRIMARY KEY  (id),
      UNIQUE KEY id (id)
    ) TYPE=MyISAM;
    */
    // ---------------------------------------------------------------------------
    define("DEBUG"true); // Изменить значение на false или закомментировать
                           // при рабочем режиме!!!
    // ---------------------------------------------------------------------------
    // Включаем обработку ошибок
    // ---------------------------------------------------------------------------
    ini_set("log_errors"true);
    error_reporting(E_ALL^E_NOTICE);
    ini_set("display_errors"false);
    if (
    defined("DEBUG") && DEBUG) {
        
    error_reporting(E_ALL);
        
    ini_set("display_errors"true);
    }
    // ---------------------------------------------------------------------------
    // Настройки подключения к БД
    // ---------------------------------------------------------------------------
    $db_host     "localhost";
    $db_user     "user";
    $db_password "password";
    $db_name     "test";
    // ---------------------------------------------------------------------------
    // Обрабатываем запрос формы
    // ---------------------------------------------------------------------------
    $form_error "";
    if (isset(
    $_POST["action"]) && "add_name" == $_POST["action"]) {
        if (!isset(
    $_POST["name"]) || "" == trim($_POST["name"])) {
            
    $form_error "Вы не указали имя";
        }
        if (empty(
    $form_error)) {
            
    $connection mysql_connect($db_host$db_user$db_password);
            if(!
    $connection){
                
    trigger_error(mysql_error(), E_USER_ERROR);
            }
            
    $db_select mysql_select_db($db_name$connection);
            if(!
    $db_select) {
                
    trigger_error(mysql_error(), E_USER_ERROR);
            }
            
    $name mysql_real_escape_string(trim($_POST["name"]));
            
    $sql_string "INSERT INTO names (name) VALUES ('{$name}')";
            if (!
    mysql_query($sql_string)) {
                
    trigger_error(mysql_error(), E_USER_ERROR);
            }
            
    header("Location: {$_SERVER['REQUEST_URI']}");
            exit();
        }
    }
    // ---------------------------------------------------------------------------
    // Получаем список добавленных имён
    // ---------------------------------------------------------------------------
    $connection mysql_connect($db_host$db_user$db_password);
    if(!
    $connection){
        
    trigger_error(mysql_error(), E_USER_ERROR);
    }
    $db_select mysql_select_db($db_name$connection);
    if(!
    $db_select) {
        
    trigger_error(mysql_error(), E_USER_ERROR);
    }
    $names_list = array();
    $sql_string "SELECT * FROM names ORDER BY name ASC";
    $result mysql_query($sql_string);
    if (!
    $result) {
        
    trigger_error(mysql_error(), E_USER_ERROR);
    } else {
        while (
    $row mysql_fetch_assoc($result)) {
            
    $names_list[] = $row;
        }
    }
    // ---------------------------------------------------------------------------
    // Выводим страницу
    // ---------------------------------------------------------------------------
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=windows-1251" />
    <title>Пример работы с формой</title>
    <meta name="author" content="jonjonson7@gmail.com" />
    </head>
    <body>
    <!-- Форма добавления имени =============================================== -->
    <form action="demo.php" method="post">
    <input type="hidden" name="action" value="add_name" />
    <?php if (!empty($form_error)): ?>
    <div style="color:red;"><?php echo $form_error;?></div>
    <?php endif; ?>
    <label for="Name">имя:</label><br />
    <input type="text" name="name" value="" id="Name" /><br />
    <input type="submit" value="добавить" />
    </form>
    <!-- Список добавленных имён ============================================== -->
    <?php if (!$names_list): ?>
    <!-- Таблица пуста ======================================================== -->
    <div>В базе данных нет ни одного имени</div>
    <?php else: ?>
    <!-- В таблице есть хотя бы одно имя ====================================== -->
    <table>
      <tr>
        <th>Имя</th>
      </tr>
    <?php foreach($names_list as $name) { ?>
      <tr>
        <td><?php echo $name["name"];?></td>
      </tr>
    <?php ?>
    </table>
    <?php endif; ?>
    </body>
    </html>
     
Статус темы:
Закрыта.