Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как избежать дублирование записей
 
 автор: 1uacomua   (02.12.2007 в 00:20)   письмо автору
 
 

Доброй ночи!

Кто-то, наверное сталкивался при использовании запроса INSERT INTO $table_name
с проблемой двукратного сохранения одной и той же записи.

Пожже заметил, что такое случается ели содержимое переменной, что сохраняется имеет знак " (в моем случае - это смайлик).

Скажите, пожалуйста, как избежать подобного дефекта?

   
 
 автор: Faraon   (02.12.2007 в 00:47)   письмо автору
 
   для: 1uacomua   (02.12.2007 в 00:20)
 

знак двойные кавычки, это смайлик? Простите какой?

   
 
 автор: 1uacomua   (02.12.2007 в 12:04)   письмо автору
 
   для: Faraon   (02.12.2007 в 00:47)
 

<IMG src="http://1ua.com.ua/sml/25.gif">

   
 
 автор: cheops   (02.12.2007 в 12:04)   письмо автору
 
   для: 1uacomua   (02.12.2007 в 00:20)
 

Двукратно запись может сохранится, если два раза выполняется оператор INSERT INTO - так бывает, если вместо одного щелчка по кнопке произвести двойной щелчёк.

   
 
 автор: 1uacomua   (02.12.2007 в 14:48)   письмо автору
 
   для: cheops   (02.12.2007 в 12:04)
 

Да, дело в refresh или в двойном щелчке так как я обнаружил что не только переменная, содержащая " двукратно сохраняется.

Но Header("Location: страница_откуда_был_послан_запрос") - для меня не выход так как я хочу после удачного сохрания давать посетителю ссылку для просмотра сохраненной инфы и для автомат. переброса на следующую страницу.
(так как в форуме)

Скажите, пожалуйста, как это сделать, чтобы после добавления записи refresh не делался, а давалась ссылка и автоматом через 5 сек. переброс на следующую страницу.

   
 
 автор: Перекоти-поле   (13.12.2007 в 10:50)   письмо автору
 
   для: 1uacomua   (02.12.2007 в 14:48)
 

А если следующий код вставляет несколько записей редирект ведь не поможет?


<?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   'smida';
       
$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()==&& $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>Зона адміністрування сайту www.smida.gov.ua - постанови про правопорушення</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>

   
 
 автор: Trianon   (13.12.2007 в 12:21)   письмо автору
 
   для: Перекоти-поле   (13.12.2007 в 10:50)
 

    $db->query("set character set cp1251_koi8"); 


сюрр....

   
 
 автор: sim5   (13.12.2007 в 12:33)   письмо автору
 
   для: 1uacomua   (02.12.2007 в 14:48)
 

А что разве через хидер нельзя перенаправить пользователя на нужную вам страницу, а только на "страница_откуда_был_послан_запрос"? Ну добавили запись, header("куда надо"), а уж выводить просмотр добавленного или иного - разве это трудно устроить, зачем 5 сек.?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования