Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дублирование записи в таблице, Почему происходит? 
V
    Опции темы
Hopeless
Дата 26.12.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Как избежать дублирование записи в таблице?

Код

<?php
    require $_SERVER["DOCUMENT_ROOT"]."/adminzone/auth.php";
    include($_SERVER["DOCUMENT_ROOT"]."/tex/phplib/db_mysql.inc");
    include $_SERVER["DOCUMENT_ROOT"]."/adminzone/login.php";

    #PREPARE DATABASE QUERY
    $db = new DB_Sql;
    $db->Database   = 'mmm';
    $db->Host       = 'localhost';
    $db->User     = user_db;
    $db->Password = password_db;
    $db->query("set character set cp1251_koi8");
    $label=0;

    if (isset($_GET['id']))
    {
        $oid = $_GET['id'];
        $sql = "select * from offence where off_id=$oid";
        $db->query($sql);
        $db->next_record();

        $number = $db->f(number);
        $name = $db->f(name);
        $ter_id = $db->f(ter_id);
        $m_data = $db->f(off_p_date);
        $data = $db->f(data);
        $emi_edrpou = $db->f(emi_edrpou);
        $emi_name = $db->f(emi_name);
        $text1 = $db->f(text1);
        $text2 = $db->f(text2);
        $text3 = $db->f(text3);
        $city = $db->f(city);
        $kod_obl = $db->f(kod_obl);

        $label=0;
    }
    else if (isset($_REQUEST['flag']))
    {
        if($_REQUEST['flag']==1){
            $oid = $_REQUEST['oid'];
            $number = $_REQUEST['number'];
            $name = strtr($_REQUEST['name'], "'", "`");
    //        $city = strtr($_REQUEST['city'], "'", "`");
    //        $kod_obl = $_REQUEST['kod_obl'];
            $ter_id = $_REQUEST['ter_id'];
            $m_data = $_REQUEST['m_data'];
            $data = $_REQUEST['data'];
            $emi_edrpou = $_REQUEST['emi_edrpou'];
            $emi_name = strtr($_REQUEST['emi_name'], "'", "`");
            $text1 = strtr($_REQUEST['text1'], "'", "`");
            $text2 = strtr($_REQUEST['text2'], "'", "`");
            $text3 = strtr($_REQUEST['text3'], "'", "`");
            $label=1;
            $array_id=$_REQUEST['array_id'];
        }else if($_REQUEST['flag']==2){
            session_start();
            $oid = '';
            $number = $_SESSION['number'];
            $name = $_SESSION['name'];
            $ter_id = $_SESSION['ter_id'];
            $m_data = $_SESSION['m_data'];
            $data = $_SESSION['data'];
            $emi_edrpou = $_SESSION['emi_edrpou'];
            $text1 = $_SESSION['text1'];
            $text2 = $_SESSION['text2'];
            $text3 = $_SESSION['text3'];

            $label=2;
        }


        //print "emi_edrpou=".$emi_edrpou;
        if ($emi_edrpou != "")
            {
                    $array_emi_name=array();
                    $array_id=array();

                    if ($_REQUEST['fz']!=""){
                        //print "fz=".$_REQUEST['fz'];
                        $array_emi_name[0]=$_REQUEST['fz'];
                        $array_id[$i]=0;
                    }else{
                        $sql = "select id,ufr_name from sm_ufr_name where ufr_edrpou='$emi_edrpou'";
                        $db->query($sql);

                        for($i=0;$i<$db->num_rows();$i++){
                            $db->next_record();
                            $array_emi_name[$i]=$db->f(ufr_name);
                            $array_id[$i]=$db->f(id);
                        }

                        if ($db->num_rows()==0&&$label!=2){
                            session_start();
                             //$_SESSION['oid'] = $oid;
                             $_SESSION['number'] = $number;
                             $_SESSION['name'] = $name;
                             $_SESSION['m_data'] = $m_data;
                             $_SESSION['data'] = $data;
                             $_SESSION['emi_edrpou'] = $emi_edrpou;
                             $_SESSION['text1'] = $text1;
                             $_SESSION['text2'] = $text2;
                             $_SESSION['text3'] = $text3;
                             header("Location:/adminzone/newline.php?ufr_edrpou=$emi_edrpou&first_run=true");
                        }
                    }
        }

        $valid = 1;
        if ($m_data == "" || $number == "" || $name == "" || $ter_id == "" || $data == "" || $emi_edrpou == "" || $emi_name == "" ||
            $text1 == "" || $text2 == "" || $text3 == "")
        {
            print ("<p style=\"color:red\">Форма заповнена не повністю!</p><br>");
            $valid = 0;
        }

        if ($valid == 1)
        {
            if($m_data > date('Y.m.d') or $data>date('Y.m.d')){
                echo "Посмотри на даты!!!";
                echo date('Y-m-d');
                exit;
            }

            $sql = "select ter_city, ter_rgn_id from sm_rb_ssmsc where ter_id=$ter_id";
            $db->query($sql);
            $db->next_record();
            $city = $db->f(ter_city);
            $kod_obl = $db->f(ter_rgn_id);

            $query = "select off_id from offence where number like '$number' and off_p_date='$m_data'";
            $db->query($query);
            //print "<br>".$oid;
            //print "<br>".$query;
            //print "<br>".$db->num_rows();
            if($db->num_rows()!=0)
            {
                $db->next_record();
                $sql = "update offence set ";

                $sql .= 'number = \''.$number.'\', ';
                $sql .= 'name = \''.$name.'\', ';
                $sql .= 'city = \''.$city.'\', ';
                $sql .= 'data = \''.$data.'\', ';
                $sql .= 'off_p_date = \''.$m_data.'\', ';
                $sql .= 'emi_edrpou = \''.$emi_edrpou.'\', ';
                $sql .= 'id_sm_ufr_name=\''.$array_id[$emi_name].'\', ';
                $sql .= 'emi_name = \''.$array_emi_name[$emi_name].'\', ';
                $sql .= 'text1 = \''.$text1.'\', ';
                $sql .= 'text2 = \''.$text2.'\', ';
                $sql .= 'text3 = \''.$text3.'\', ';
                $sql .= 'ter_id = '.$ter_id.', ';
                $sql .= 'kod_obl = '.$kod_obl;
                $sql .= ' where off_id='.$db->f(off_id);

                //print $sql;
                $db->query($sql);

                $db->query("select max(off_id) as off_id from offence");
                $db->next_record();
                $oid = $db->f(off_id);
            }
            else
            {
                $sql = "insert offence (id_sm_ufr_name,number, name, city, data, emi_edrpou, emi_name, text1, text2, text3, ter_id, kod_obl, off_p_date) values (";
                $sql .= '\''.$array_id[$emi_name].'\', ';
                $sql .= '\''.$number.'\', ';
                $sql .= '\''.$name.'\', ';
                $sql .= '\''.$city.'\', ';
                $sql .= '\''.$data.'\', ';
                $sql .= '\''.$emi_edrpou.'\', ';
                $sql .= '\''.strtr($array_emi_name[$emi_name], "'", "`").'\', ';
                $sql .= '\''.$text1.'\', ';
                $sql .= '\''.$text2.'\', ';
                $sql .= '\''.$text3.'\', ';
                $sql .= $ter_id.', ';
                $sql .= $kod_obl.', ';
                $sql .= '\''.$m_data.'\')';
                //print $sql;

                session_start();
                $inserted=$_SESSION['inserted'];
                //print "inserted=".$inserted;
                $db->query("select off_id from offence where number like '$number' and off_p_date='$m_data'");
                if($db->num_rows()==0 && $inserted!=1){
                        $_SESSION['inserted'] = 1;
                        $db->query($sql);
                        $_SESSION['inserted'] = '';
                    }

                $db->query("select max(off_id) as off_id from offence");
                $db->next_record();
                $oid = $db->f(off_id);
                $db->query("select * from reestr where kod='".$emi_edrpou."' and info='offence'");
                if ($db->num_rows() == 0)
                {
                    $sql = "insert reestr (kod, nazva, info, obl) values (";
                    $sql .= '\''.$emi_edrpou.'\', ';
                    $sql .= '\''.$emi_name.'\', ';
                    $sql .= '\'offence\', ';
                    $sql .= $kod_obl.')';

                    $db->query($sql);
                }
            }
        }
    }
?>

<html><head>
<title>Зона адміністрування сайту</title>
<link href="/tex/style.css" rel="stylesheet" type="text/css">
</head>

<a href="/adminzone/search.php">Повернутися до переліку</a>

<table align="left" class="formTable" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#bbbbbb" id="AutoNumber1" >
    <colgroup>
        <col width="250px"/><col width="750px"/>
    </colgroup>

<form action='/adminzone/offence.php' METHOD='POST'>
<tr><td colspan="2"><h3 style="text-align:left;">Введення/редагування постанови про правопорушення:</h3></td></tr>

<input type='hidden' name='oid' value='<?php echo $oid; ?>'>
<input type='hidden' name='flag' value='1'>

<tr><td colspan="2">&nbsp;</td></tr>

<tr>
<td><ul><li>Дата отримання:&nbsp;</ul></td>
<td style="text-align:left"> <input class="srch" type="text" name="m_data" size=50 style="width:100px" value='<?php echo $m_data; ?>'></td>
</tr>

<tr>
<td><ul><li>Номер постанови:&nbsp;</ul></td>
<td style="text-align:left"> <input class="srch" type="text" name="number" size=50 style="width:100px" value='<?php echo $number; ?>'></td>
</tr>

<tr>
<td><ul><li>Назва постанови:&nbsp;</ul></td>
<td style="text-align:left"> <input class="srch" type="text" name="name" size=50 style="width:400px" value='<?php echo $name; ?>'></td>
</tr>

<tr>
    <td><ul><li>Автор:</li></ul></td>
    <td style="text-align:left"><select class="srch" style="width:300px" name="ter_id">
    <?php

                   $sql = "select ter_id, ter_name from sm_rb_ssmsc order by ter_id asc";
                 $db->query($sql);

                while($db->next_record())
                {
                    if ($ter_id == $db->f(ter_id))
                        print '<option selected=true value='.$db->f(ter_id).'>'.$db->f(ter_name);
                    else
                        print '<option value='.$db->f(ter_id).'>'.$db->f(ter_name);
                }
    ?>
    </select></td>
</tr>

<tr>
    <td><ul><li style="color:gray">Територія:</li></ul></td>
    <td style="text-align:left;"><select class="srch" disabled="true" style="width:300px" name="kod_obl">
    <?php
           $sql = "select kod_obl, naim_obl from obl order by kod_obl asc";
         $db->query($sql);

        while($db->next_record())
        {
            if ($kod_obl == $db->f(kod_obl))
                print '<option selected=true value='.$db->f(kod_obl).'>'.$db->f(naim_obl);
            else
                print '<option value='.$db->f(kod_obl).'>'.$db->f(naim_obl);
        }
    ?>
    </select></td>
</tr>

<tr>
<td><ul><li style="color:gray">Місто:&nbsp;</ul></td>
<td style="text-align:left"> <input class="srch" disabled="true" type="text" name="city" size=50 style="width:200px" value='<?php echo $city; ?>'></td>
</tr>

<tr>
<td><ul><li>Дата:&nbsp;</ul></td>
<td style="text-align:left"> <input class="srch" type="text" name="data" size=50 style="width:100px" value='<?php echo $data; ?>'></td>
</tr>


<tr>
<td><ul><li>Назва емітента:&nbsp;</ul></td>
<td style="text-align:left">
<?php if($emi_edrpou!="fz" ){
    print"<select class=\"srch\" style=\"width:300px\" name=\"emi_name\">";
        for($i=0;$i<count($array_emi_name);$i++){
            if ($i==0)
                print "<option selected=true value=".$i.">".$array_emi_name[$i];

            else{
                print "<option value=".$i.">".$array_emi_name[$i];
            }
        }
    }else{
        print "<input class=\"srch\" type=\"text\" name=\"fz\" size=50 style=\"width:100px\" value=''>";
        print "<input class=\"srch\" type=\"hidden\" name=\"emi_name\" size=50 style=\"width:100px\" value='0'>";
        print "<input class=\"srch\" type=\"hidden\" name=\"emi_edrpou\" size=50 style=\"width:100px\" value='$emi_edrpou'>";
    }
    print "</select>";
    print "<input type=\"button\" style=\"width:120px\" name=\"\" value=\"Редагувати\" size=35 onclick=\"window.open('/adminzone/ufr_name/edit_form.php?kod=$emi_edrpou')\">" ?>
    </td>
</tr>



<tr>
<td><ul><li>Код ЄДРПОУ емітента:&nbsp;</ul></td>
<td style="text-align:left"> <input class="srch" type="text" name="emi_edrpou" size=50 style="width:100px" value='<?php echo $emi_edrpou; ?>'>
<input type="submit" style="width:120px" name="seach_emi_edrpou" value=Знайти size=35></td>
</tr>

<tr>
<td><ul><li>Вступ:&nbsp;</ul></td>
<td style="text-align:left"> <textarea class="srch" name="text1" size=50 style="width:750px;height:100px"><?php echo $text1; ?></textarea></td>
</tr>

<tr>
<td><ul><li>Встановив:&nbsp;</ul></td>
<td style="text-align:left"> <textarea class="srch" name="text2" size=50 style="width:750px;height:300px"><?php echo $text2; ?></textarea></td>
</tr>

<tr>
<td><ul><li>Постановив:&nbsp;</ul></td>
<td style="text-align:left"> <textarea class="srch" name="text3" size=50 style="width:750px;height:200px"><?php echo $text3; ?></textarea></td>
</tr>



<tr><td colspan="3">&nbsp;</td></tr>
<tr><td colspan="3">&nbsp;</td></tr>

<tr height="25"><td colspan="3" style="text-align:center">
<input type="button" style="width:120px" name="" value="Нова постанова" size=35 onclick="document.location.href('/adminzone/offence.php')">
<input type="submit" style="width:120px" name="" OnDblClick="alert('Не клацайте двічі на кнопці')" value=<?php echo $oid=="" ? "Внести до бази даних" : "Зберегти"; ?> size=35>
<?php echo $oid!="" ? "<input type=\"button\" style=\"width:120px\" name=\"\" value=\"Переглянути\" size=35 onclick=\"window.open('/emitents/offence_zvit.php?id=$oid')\">" : ""; ?>

<tr><td colspan="3">&nbsp;</td></tr>
</td>
</tr>

</form>
</table>

</html>

PM MAIL   Вверх
Hopeless
Дата 26.12.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Кажется отчасти понял в чем дело. Если number равно например так '10 ' и если после добавление строки в таблицу еще раз нажать на кнопку добавления записи с теми же полями то запрос 

"select off_id from offence where number like '$number' and off_p_date='$m_data'"

вернет 0 строчек. Поєтому происходит добавление новой записи

Это сообщение отредактировал(а) Hopeless - 26.12.2007, 18:04
PM MAIL   Вверх
FractalizeR
Дата 27.12.2007, 20:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Исходник, простите, ужасен. Код чрезвычайно тяжело читать. Советую почитать Макконнелла "Совершенный Код".


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.