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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Умножение/деление/вычитание/сложение данных из таблиц

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: Trianon   (14.06.2007 в 13:57)   письмо автору
 
   для: ronalex   (14.06.2007 в 13:45)
 

из двух таблиц, несвязанных друг с другом (а Вы вторые сутки не можете показать, как они связываются - мы по-моему уже на четвертый круг пошли) данные достают двумя независимыми запросами.
Заведите чтоли новую тему...


Блин горелый...
Вы извините меня ради бога... но я в шоке.
Судя по данным, которыми Вы оперируете, Вы играете с деньгами.
И как я понимаю, довольно большими.
При этом достаточно простых вещей, вроде того, что числа нужно хранить в числовых полях БД, а пароли крайне желательно не выбалтывать в форумах, Вы не просекаете.
может быть стоит подрядить кого-нибудь на эту задачу?
Так ведь и попасть недолго....

   
 
 автор: ronalex   (14.06.2007 в 13:45)   письмо автору
 
   для: Trianon   (14.06.2007 в 10:54)
 

Подскажите, как мне вытащить данные из 2х предыдущих таблиц одним запросом
и каким оператором воспользоваться

$e=mysql_query("SELECT * FROM `percent`, `time` WHERE name='".$_SESSION['user']."'");
while($y=mysql_fetch_array($e))
{
echo $y[percent]*2;
}

   
 
 автор: Trianon   (14.06.2007 в 10:54)   письмо автору
 
   для: ronalex   (14.06.2007 в 10:26)
 

Это плохой скрипт. Он допускает SQL-инъекции и порождает лишние запросы к БД.


Лучше применяйте такой:
<?
function build_insert$table_name$array 

    
$sep '('$q1 "INSERT INTO `$table_name` "$q2 " ) VALUES "
    
foreach($array as $key =>$val)
    {  
        if(
is_string($val)) 
            
$val "'".mysql_escape_string($val)."'";
        
$q1 .= "$sep`$key`";
        
$q2 .= "$sep$val";
        
$sep ',';
    }
    return 
$q1 $q2 ')';
}


вызов
<?
$sql 
build_insert("percent", array('name' => 'user1''percent' => 0.8'sum' => 0));
mysql_query("$sql") or die("Error in $sql"mysql_error());

   
 
 автор: ronalex   (14.06.2007 в 10:26)   письмо автору
 
   для: Trianon   (13.06.2007 в 22:39)
 

Подскажите пожалуйста, что делает этот скрипт, и куда нужно вводить данные в него чтобы он заработал

function build_insert( $dbname, $table_name, $array )
{
   $res = mysql_query("DESCRIBE ".$dbname.".".$table_name);

   $q = "INSERT INTO ".$dbname.".".$table_name." (";
   $q2 = "(";

   while( $row = mysql_fetch_array($res) )
   {
      $q .= $row['Field'] . ",";
      $q2 .= "'" . $array["{$row['Field']}"] . "'" . ",";
   }

   $q = substr($q, 0, -1);
   $q .= ")";
   $q .= " VALUES ";

   $q2 = substr($q2, 0, -1);
   $q2 .= ")";

   $q .= $q2;

   return $q;
}

   
 
 автор: Trianon   (13.06.2007 в 22:39)   письмо автору
 
   для: ronalex   (13.06.2007 в 22:26)
 

В Ваших данных столбец name не содержит уникальные значения.
Отличить по нему строки одну от другой невозможно.

   
 
 автор: ronalex   (13.06.2007 в 22:26)   письмо автору
 
   для: Trianon   (13.06.2007 в 22:08)
 

по name

   
 
 автор: Trianon   (13.06.2007 в 22:08)   письмо автору
 
   для: ronalex   (13.06.2007 в 21:21)
 

по каким правилам строки первой таблицы соответствуют строкам второй таблицы?

   
 
 автор: ronalex   (13.06.2007 в 21:21)   письмо автору
 
   для: ronalex   (13.06.2007 в 19:58)
 

Вывожу конкретные данные и формирую вопрос:


$qwerty=mysql_query("UPDATE `percent` JOIN `time` USING(`name`) SET `percent`.`sum`=`percent`.`percent` +`time`.`time`");



# Table structure for table 'percent'

CREATE TABLE /*!32312 IF NOT EXISTS*/ `percent` (
  `name` varchar(255) default NULL,
  `percent` varchar(255) default NULL,
  `sum` varchar(255) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

# Dumping data for table 'percent'

/*!40000 ALTER TABLE `percent` DISABLE KEYS*/;
LOCK TABLES `percent` WRITE;
REPLACE INTO `percent` (`name`, `percent`, `sum`) VALUES ('ronalex','0.35','35.35'),
    ('ronalex','0.8','35.8'),
    ('ronalex','10','45');
UNLOCK TABLES;
/*!40000 ALTER TABLE `percent` ENABLE KEYS*/;



# Table structure for table 'time'

CREATE TABLE /*!32312 IF NOT EXISTS*/ `time` (
  `name` varchar(255) default NULL,
  `time` varchar(255) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

# Dumping data for table 'time'

/*!40000 ALTER TABLE `time` DISABLE KEYS*/;
LOCK TABLES `time` WRITE;
REPLACE INTO `time` (`name`, `time`) VALUES ('ronalex','35'),
    ('ronalex','2319'),
    ('ronalex','159');
UNLOCK TABLES;
/*!40000 ALTER TABLE `time` ENABLE KEYS*/;


В результате получается:

Таблица time
name,time
ronalex,35
ronalex,2319
ronalex,159

Таблица percent
name,percent,sum
ronalex,0.35,35.35
ronalex,0.8,35.8
ronalex,10,45

дак вот в таблице percent к последнему столбику прибавляется постоянно одно и тоже число это число 35, а надо 0.35+35, потом 0.8+2319, потом 10+159
а у меня постоянно происходит:
0.35+35, потом 0.8+35, потом 10+35

надеюсь, что объяснил более - менее понятнее, помогите пожалуйста

   
 
 автор: ronalex   (13.06.2007 в 19:58)   письмо автору
 
   для: Trianon   (13.06.2007 в 19:42)
 

это я просто для примера написал про две таблицы, мне главно суть уловить, можно ли как -нибудь передать данные из бд массиву, чтобы ими потом было легко управлять

   
 
 автор: Trianon   (13.06.2007 в 19:42)   письмо автору
 
   для: ronalex   (13.06.2007 в 19:38)
 

В том же самом, как Вы выражаетесь, дампе, в строках не различаются имена пользователей.
и они всяко не равны тому, что Вы написали в примере

   

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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