Обновяване на полета

Dizasterr

Registered
Здравейте! Как мога да направя, така че с един скрипт да обновявам полетата в базата данни на всички потребители на сайта, а с колко ще се обновява зависи от поле в таблицата, което е различно за всеки потребител ? Мислих, но не можах да се сетя. Благодаря предварително.
 
На мен ми е ясно, че е с UPDATE, но дали има значение, че ще обновявам на всеки потребител спрямо различно число ?
 
Аз мисля да го направя така:
Код:
<?php
$select=mysql_query("SELECT * FROM `table`") or die(mysql_error());
while($row=mysql_fetch_array($select) {
$r=$row['name'];

}
$rr=$r + 200;
$update=mysql_query("UPDATE `table` SET `name`='$rr'") or die(mysql_error()); 
?>
Така ще стане ли ?
 
ok, значи това е, пробвай. Извън цикъла това няма смисъл, но смятам съм разбрал какво искаш да направиш:

$rr=$r + 200;
$update=mysql_query("UPDATE `table` SET `name`='$rr'") or die(mysql_error());
 
Направих го така, но и двете се обновяват с едно и също. Не с различно.
Код:
<?php
		require_once("../connection.php");
		mysql_query("SET NAMES cp1251");
		
		$select=mysql_query("SELECT * FROM `resources`") or die(mysql_error());
		while($row=mysql_fetch_array($select)) {
		$goldp=$row['goldp'];
		$gasp=$row['gasp'];
		$metalp=$row['metalp'];
		$gold=$row['gold'];
		$gas=$row['gas'];
		$metal=$row['metal'];
		
		$plusgold=$goldp + $gold;
		$plusgas=$gasp + $gas;
		$plusmetal=$metalp + $metal;
		
		echo $goldp;
		echo "<br/><br/>";
		
		echo $plusgold;
		echo "<br/><br/>";
		
		
		$update=mysql_query("UPDATE `resources` SET `gold`='$plusgold', `gas`='$plusgas', `metal`='$plusmetal'") or die(mysql_error());
		
		}
?>
 
koko5 каза:
Код:
$update=mysql_query('UPDATE `resources` SET `gold`=gold+goldp,`gas`=gas+gasp,`metal`=metal+metalp') or die(mysql_error());
:?:
Пак ги обновява с едно и също число. И в първия случей го умножава по две.
 
Dizasterr каза:
а с колко ще се обновява зависи от поле в таблицата, което е различно за всеки потребител
Дай таблицата/таблиците (create table scripts) и обясни каква е зависимостта
 
Имам две таблици. В едната са потребителите и тя се свърза с друга, в която има поле user_id, което отговаря на id-то на потребителя. В тази втора таблица има поле, което си променя стойноста. Искам да обновява да всеки потребител спрямо негово поле.
 
Dizasterr каза:
Искам да обновява да всеки потребител спрямо негово поле.
Kak? Да е == на това поле,да е 3xПолето

Ako беше дал таблиците, досега да си забравил... ама ти си знаеш

Eто пример, че ще излизам
Код:
UPDATE FirstTable SET name=(SELECT POLE FROM SecondTable WHERE SecondTable.user='Sulio' and pole_id=FirstTable.id  LIMIT 1)*3 WHERE FirstTable.user='Sulio';
Cамо трябва да се нагласи според имената на таблиците и колоните и е 6
При добър ДБ дизайн лимит не е нужен!
3a oбщия случай where clauses също ca нeнужнu.
 
Ето ти таблиците:
Таблица users.
Код:
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(255) COLLATE cp1251_bulgarian_ci NOT NULL,
  `password` varchar(255) COLLATE cp1251_bulgarian_ci NOT NULL,
  `email` varchar(255) COLLATE cp1251_bulgarian_ci NOT NULL,
  `defence` int(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 COLLATE=cp1251_bulgarian_ci AUTO_INCREMENT=3 ;
Това е таблица resources.
Код:
CREATE TABLE IF NOT EXISTS `resources` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `gold` int(11) NOT NULL,
  `gas` int(11) NOT NULL,
  `metal` int(11) NOT NULL,
  `goldp` int(11) NOT NULL,
  `gasp` int(11) NOT NULL,
  `metalp` int(11) NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 COLLATE=cp1251_bulgarian_ci AUTO_INCREMENT=3 ;
 
renegat96 каза:
Код:
UPDATE resources SET gold = gold + goldp, gas = gas + gasp, metal = metal + metalp

Тествах го такъв код и върви перфектно :)
Не е вярно. Имам записите. На единия трябва да е + 100, а на другия + 200. На този, на когото е 200 го обновява с + 400, а на другия с + 200.
 
Код:
<?php
$conn = mysql_connect("localhost", "root", "*******") or die(mysql_error());
mysql_select_db("test", $conn);
$update = mysql_query("UPDATE res SET a = a + a_bonus, b = b + b_bonus") or die(mysql_error());
echo "тест";
?>
И таблица
Код:
CREATE TABLE `res` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `a` int(8) NOT NULL DEFAULT '0',
  `a_bonus` int(8) NOT NULL DEFAULT '0',
  `b` int(8) NOT NULL DEFAULT '0',
  `b_bonus` int(8) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
);
Това работи перфектно.
Защо при мен работи, а при теб - не ?


Някъде ти бъркаш.
Прегледай си кода пак или го дай целия.
 
Извинявам се много. Рабрах как става. Ето кода:
Код:
<?php
      require_once("../connection.php");
      mysql_query("SET NAMES cp1251");
      
	  $sel=mysql_query("SELECT * FROM `resources`") or die(mysql_error());
	  $all=mysql_num_rows($sel);
	  
      $select=mysql_query("SELECT * FROM `resources`") or die(mysql_error());
	
	while($row=mysql_fetch_array($select)) { 
      $goldp=$row['goldp'];
      $gasp=$row['gasp'];
      $metalp=$row['metalp'];
      $gold=$row['gold'];
      $gas=$row['gas'];
      $metal=$row['metal'];
      
      $plusgold=$goldp + $gold;
      $plusgas=$gasp + $gas;
      $plusmetal=$metalp + $metal;
      
      echo $goldp;
      echo "<br/><br/>";
      
      echo $plusgold;
      echo "<br/><br/>";
}
		$update=mysql_query("UPDATE `resources` SET `gold` = `gold` + `goldp`, `gas` = `gas` + `gasp`, `metal` = `metal` + `metalp`") or die(mysql_error());	
	
	
      
?>
Благодаря много и на двамата, но +1 за @koko5.
 

Back
Горе