Ако го има да не го копира

DirectX

Registered
Идеята е ако имота го има с новата година, да не го копира и да се получава дублиране на данните;
Ето това съм измислил аз, не знам дали проверката ми е правилна, а и също ако го има имота да не го копира

PHP:
if(isset($_POST['submit_st_g'])){
	$g = $_POST['st_g'];
	$a = $_POST['st_kopy'];
	

	
	$sqlRes = mysql_query("select * from zemq where `st_g`='$g' and `s_id`='$sid'") or die(mysql_error());
	while($sqlData = mysql_fetch_array($sqlRes)){
	$proverka = mysql_query("SELECT * FROM `zemq` WHERE `nomer_imot`='$sqlData[nomer_imot]' AND `st_g`='$st_kopy'")or(mysql_error()); //проверка да ли съществува
if ((mysql_num_rows($proverka)) > 0) 
{
// tuk trqbva da e koda ako go ima da go preskochi
} else {
     $sql = mysql_query("INSERT INTO zemq 
	 					(`id`, `s_id`, `nomer_imot`, `zemlishte`, `plosht`, `mestnost`, `renta_kg`, `kultura`, `zaqvka`, `renta`, `obraboteno`, `belejka`, `total`, `st_g`) 
	 					VALUES
	 					 (NULL, '$sqlData[s_id]', '$sqlData[nomer_imot]', '$sqlData[zemlishte]', '$sqlData[plosht]', '$sqlData[mestnost]', '$sqlData[renta_kg]', '$sqlData[kultura]', '$sqlData[zaqvka]', '$sqlData[renta]', '$sqlData[obraboteno]', '$sqlData[belejka]', '$sqlData[total]', '$a')") or die(mysql_error());
						 }
						 if($sql == true){
			echo '<meta http-equiv="refresh" content="1;url=informaciq.php?id='.$id.'">';
			echo "Моля почакайте страницата да презареди...";
}
else {
			echo "възникна грешка..";
}}}
?>
 
Малко повече иноформаця, защо са в цикъл - очакваш повече от 1 имот (проверяваш само за 1 имот или проверката се състой за повече имоти, който е възможно да имат еднакви стойности, на полетата, който проверяваш със тези променливи)?

А тези променливи каква информация държат?

$sid - От къде идва?

$g, $a - По точно какво представляват.

И изобщо какво трябва да представлява това приложение?
Крайният резултат какъв трябва да бъде?
 
В цикъл е защото е възможно да са повече от 1 имот;
$sid - това си е ид-то на собствениците но в таблицата zemq
$g И $а вземат съответно годината от която трябва да се копират съществуващите имот във годината в която трябва да станат

примерно ако имаш имот 1,2,3,4 за година 2011-2012 (от падащото меню си избираш 2011-2012 (не съм сложил кода за менюто ама то не е необходимо)) и тези имоти 1,2,3,4 трябва да се копират същите с година 2012-2013 примерно
Но ако по-някаква причина имот 1,2 ги има за новата година (2012-2013) да се копират само 3,4 а не всичките, за да не се получава дубликация :)
 
PHP:
<?php
if(isset($_POST['submit_st_g'])){
        $g = $_POST['st_g'];
        $a = $_POST['st_kopy'];
        

        
            
        
        $sqlRes = mysql_query("select * from zemq where (`st_g`!='$a' AND `st_g`='$g') and `s_id`='$sid'") 
                    or die(mysql_error());
                    if(mysql_num_rows($sqlRes) > 0) {
        while($sqlData = mysql_fetch_array($sqlRes)){
   
     $sql = mysql_query("INSERT INTO zemq (`id`, `s_id`, `nomer_imot`, `zemlishte`, `plosht`, `mestnost`, `renta_kg`, `kultura`, `zaqvka`, `renta`, `obraboteno`, `belejka`, `total`, `st_g`) 
                                                VALUES
                                                 (NULL, '$sqlData[s_id]', '$sqlData[nomer_imot]', '$sqlData[zemlishte]', '$sqlData[plosht]', '$sqlData[mestnost]', '$sqlData[renta_kg]', '$sqlData[kultura]', '$sqlData[zaqvka]', '$sqlData[renta]', '$sqlData[obraboteno]', '$sqlData[belejka]', '$sqlData[total]', '$a')") or die(mysql_error());
                                                 
                                                 if($sql == true){
                        echo '<meta http-equiv="refresh" content="1;url=informaciq.php?id='.$id.'">';
                        echo "Моля почакайте страницата да презареди...";
                            }
                        
                            else {echo "възникна грешка..";}
                        
                        }
                        
                        
                 }
}
?>
 
Ами нормално да ти ги копира на ред, след изпълнението на заявката, старите записи със старата дата си остават и при изпълнение отново на заявката той отново засича старите записи и ги умножава.

---------------------

1 вариант:

Вместо INSERT позлвай UPDATE така ще презаписва старите стойности.

---------------------

2 вариант:

След изпълнение на INSERT пускай една DELETE заявки за да изчисти старите.

---------------------

3 вариант:

Направи още едно поле, което да посочва дали вече е обработено това поле, и следователно ако има стойност да кажем "1", то тогава първата SELECT заявка да не селектва този запис.

---------------------


Също така ще е хубаво полето с датата да е (int), записвай unixtime, ако ти си решиш разбира се.
 

Back
Горе