Проблем с промяна на числа

Dizasterr

Registered
Здравейте! Имам проблем с един скрипт за онлайн програмка. Така трябва да проверя дали в една таблица над числото х има съответствие, ако няма такова, а е изведено 0 да заместя 0 с числото х - това си го направих, но ако има съответствие и има и на двете места х да изтрия х само на тези места, от които вече е преместен заради несъответствие. Не знам дали сте ме разбрали, но питайте ако не ви е ясно. Ето кода до някаква степен:
Код:
for($i=1;$i<=35;$i++) {
						
							if($row[$i] > 0) {
							
								$s = mysql_query("SELECT * FROM `main`") or die(mysql_error());
								$r = mysql_query("SELECT * FROM `main` WHERE `row` = '".$row['row']."'") or die(mysql_error());
								$n = mysql_query("SELECT * FROM `main` WHERE `row` = '".$row['row']."' AND `".$i."` = '0'") or die(mysql_error());
								
								$ro = mysql_fetch_assoc($n);
								
								if($row['row'] != mysql_num_rows($r)) {

									echo "<td><u><i>";
										echo "x";
									echo "</i></u></td>";
											
									$change = mysql_query("UPDATE `main` SET `".$row[$i]."` = '".$i."'") or die(mysql_error());		
									
										if($change) {
	
												$up = mysql_query("UPDATE `main` SET `".$row[$i]."` = '0' WHERE `row` = '".$row['row']."' AND `".$i."` != '0' AND ") or die(mysql_error());						
											
												if($up) {
												
													echo "Ready!";
												
												}
												
										}else{
											
											echo "Error!";
												
										}
								}
								
								if($row['row'] == mysql_num_rows($r)) {

									echo "<td><u><i>";
										echo "x";
									echo "</i></u></td>";
										
								}
								
								
								
								
							}else{
							
								echo "<td>";
								echo "<b>0</b>";
								echo "</td>";
									
							}

						}
По принцип ми трябва за утре, но съм благодарен на всяка помощ. Благодаря предварително.
 
Ако искаш да презапишеш всички нули
chislo.jpg

с друго число добре лесно но ако искаш да резапишеш точно определена нула на определен ред требе да има поне едно id което да е
AUTO_INCREMENT PRIMARY KEY :
chislo2.jpg
 
Не е така. По подобен начин е таблицата:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 0 3 0 0 0 7 0 9 10 00 00 00 14 15 00 00 00 00 20
1 2 0 4 5 6 7 0 0 10 00 12 00 14 15 00 00 00 00 20

Опитвам се от втория ред да нулирам всички числа, които не са и горе. Всъщност числата 2, 4, 5, 6, 12 да се качат горе, а долу да останат нули. Числата 1, 14, 15, 20 да си останат така без да се нулират, защото се повтарят. Това е идеята ми.
 
Ако съм те разбрал правилно:

id 1: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
id_1: 1 0 3 0 0 0 7 0 9 10 00 00 00 14 15 00 00 00 00 20
id_2: 1 2 0 4 5 6 7 0 0 10 00 12 00 14 15 00 00 00 00 20

Искаш числата от id_2 които ги няма в id_1 да се заменят с 0!

Ако е така би трябвало да стане:

$sql="SELECT * FROM table";

$res=mysql_query($sql);

while($row=mysql_fetch_assoc($res))

{

if($row['id_2']==$row['id_1'])

{



}

else

{

$sql1="UPDATE table SET id_1='$row[id_2]', id_2='0' WHERE id='$row[id]'";

$res1=mysql_query($sql1);

}



}
 
Товa id_1 не ми е ред, а е структурата на таблицата. Има поле с име row и след това следващите са от 1 до 35. Тези числа от 1 до 35 са имената на клетките в таблицата, а не ред.
 
Код:
--
-- Table structure for table `main`
--

CREATE TABLE IF NOT EXISTS `main` (
  `row` int(11) NOT NULL,
  `1` int(11) NOT NULL,
  `2` int(11) NOT NULL,
  `3` int(11) NOT NULL,
  `4` int(11) NOT NULL,
  `5` int(11) NOT NULL,
  `6` int(11) NOT NULL,
  `7` int(11) NOT NULL,
  `8` int(11) NOT NULL,
  `9` int(11) NOT NULL,
  `10` int(11) NOT NULL,
  `11` int(11) NOT NULL,
  `12` int(11) NOT NULL,
  `13` int(11) NOT NULL,
  `14` int(11) NOT NULL,
  `15` int(11) NOT NULL,
  `16` int(11) NOT NULL,
  `17` int(11) NOT NULL,
  `18` int(11) NOT NULL,
  `19` int(11) NOT NULL,
  `20` int(11) NOT NULL,
  `21` int(11) NOT NULL,
  `22` int(11) NOT NULL,
  `23` int(11) NOT NULL,
  `24` int(11) NOT NULL,
  `25` int(11) NOT NULL,
  `26` int(11) NOT NULL,
  `27` int(11) NOT NULL,
  `28` int(11) NOT NULL,
  `29` int(11) NOT NULL,
  `30` int(11) NOT NULL,
  `31` int(11) NOT NULL,
  `32` int(11) NOT NULL,
  `33` int(11) NOT NULL,
  `34` int(11) NOT NULL,
  `35` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Dumping data for table `main`
--

INSERT INTO `main` (`row`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`) VALUES
(1, 1, 2, 3, 0, 5, 0, 7, 0, 0, 10, 0, 12, 0, 14, 0, 16, 17, 0, 19, 20, 0, 22, 23, 0, 25, 26, 0, 28, 0, 30, 31, 0, 33, 34, 0),
(2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Не мога да разбера какво точно искаш... Искаш ако ги няма числата на 1-ви и 3-ти ред, втори ред да е 0 ли?
 
Искам ако числото от втори ред се повтаря с това от първи нищо да не се променя, а ако число, което е във втори ред го няма в първи да се премества в първия, а във втория да остава 0. Така ще, но няма да са само 2 реда. Така по - ясно ли е?
 
Ако числата съвпадат не се променя, но ако число, което го няма в първи ред, а го има във втори да се премести в първи - тоест първи ред ще се промени - само това число и други подобни.
 
тоест ако има

1-ви ред: 1 2 3 4 6 7 52 9 11
2-ри ред: 1 2 3 4 5 6 52 7 11

Трябва да стане:
1-ви ред: 1 2 3 4 5 6 52 7 11
2-ри ред: 1 2 3 4 0 0 0 0 11

?
 
Не, ако на първи ред имаме:
1 ред - 1 2 0 4 0 6 7 8 9
2 ред - 1 0 3 0 0 6 7 8 0

Трябва да стане:

1 ред - 1 2 3 4 0 6 7 8 9
2 ред - 1 0 0 0 0 6 7 8 0
 

Back
Горе