запис на ип и дата в отделни колони

systems

Registered
Добър ден искам да попитам ако имам следното:

Код:
"uid int NOT NULL PRIMARY KEY","'0'"
"user varchar(32)","NULL"
"ip varchar(32)","NULL"
"date int","'0'"

в базата данни се записва следната информация user,ip,date.
но user и data се обновят при всеки вход на потребителя та идеята ми е може ли да се направи заявка с update set която да мести инфомацията по следния начин.

Код:
"uid int NOT NULL PRIMARY KEY","'0'"
"user varchar(32)","NULL"
"ip varchar(32)","NULL"
"date int","'0'"
"ip1 varchar(32)","NULL"
"date1 int","'0'"
"ip2 varchar(32)","NULL"
"date2 int","'0'"
"ip3 varchar(32)","NULL"
"date3 int","'0'"
"ip4 varchar(32)","NULL"
"date4 int","'0'"


тоест идеята ми е да стане по следния начин.
информацията от ip и date да се копира в ip1 и от date в date1
после информацията от ип1 дате1 да се копира в ип2 дате2
и така.


и после само да си я изведа по следния начин.


----------------------------------------
uid user ip date
-----------------------------------------
1 systems 192.168.1.1 2010-11-22 22:25:39
2 systems 192.168.1.8 2010-11-23 22:28:12
3 systems 192.168.1.3 2010-11-24 00:01:30
4 systems 192.168.1.5 2010-11-25 00:20:25


надявам се да сте ме разбрали точно какво искам да направя
та въпроса ми е следния възможно ли е това да стане със една или две заявки към базата с данни чрез update set.

идеята ми е да се направи един скрит които като го заредя в браузъра
да изпълни тези заявки и при всяко едно изпълнение на скрипта да се обновятват тези колони ip ip1 ip2 ip3 ip4 и date date1 date2 date3 date4.
 
[sql]UPDATE `table` SET column2 = CAST(column1 AS VARCHAR)[/sql]

Мисля че това е което търсиш, ако съм те разбрал правилно .
В твоя случай ще е
[sql]UPDATE `tablename` SET ip1= CAST(ip AS VARCHAR)[/sql]

По същия начин и за date , а може и да ги комбинираш.

А вече ако искаш да се задава автоматична номерация, а предполага искаш, може да направиш един 'брояч', който при всеки логин на потребителя да се инкрементира с 1 и да го добавиш в заявката

[sql]SET ip_ . $countervariable ... [/sql]

Надявам се да ти е помогнало :) [/sql]
 
Благодаря много аз опитах първо с ип адреса и направих следното,
но не ми се получи номера или несъм разбрал правилно нещо или греша някъде бихте ли ми помогнали моля ви.

PHP:
<?php
mysql_connect ("localhost", "potrebitel","pass") or die 
(mysql_error());
 mysql_select_db ("userss");
$nq = "UPDATE `users` SET 'ip'= CAST('ip1')'";
echo "<div class='success'>adedet</div>";
?>
 
systems каза:
Благодаря много аз опитах първо с ип адреса и направих следното,
но не ми се получи номера или несъм разбрал правилно нещо или греша някъде бихте ли ми помогнали моля ви.

PHP:
<?php
mysql_connect ("localhost", "potrebitel","pass") or die 
(mysql_error());
 mysql_select_db ("userss");
$nq = "UPDATE `users` SET 'ip'= CAST('ip1')'";
echo "<div class='success'>adedet</div>";
?>

Woops, извинявай ама малко съм блял одеве :D

Може да го направиш с ALTER TABLE ADD и да провериш дали е успешно и ако е успешно да направиш един ъпдейт на полето

т.е.

PHP:
<?php
mysql_connect ("localhost", "potrebitel","pass") or die 
(mysql_error());
 mysql_select_db ("userss");
$nq = mysql_query("ALTER TABLE `userss` ADD `ip1` int(50)") or die (mysql_error());
if($nq)
{
$qry = mysql_query("UPDATE `userss` set `ip1` = `ip`") or die (mysql_error());
if($qry){
echo "<div class='success'>adedet</div>";
}
}
else
{
 // code 
}
?>

Сега, това не е най-добрия начин просто някакъв пример за ориентир.

[Tip]

Mysql е deprecated , по-добре използвай mysqli
 
Нещо нередно има. Първо даваш за дата тип int, a в примерчето с данни - презентацията ти е от тип datetime. Второ - каква ти е въобще структурата на таблицата? Защото е много лоша идея да редиш колони ip1, ip2...

Ако искаш всичко да ти е наред, правиш си още една таблица, например user_logs, която примерно би имала следната структура:

[sql]CREATE TABLE `user_logs` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_user` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`ip` CHAR(15) NOT NULL DEFAULT '',
`log_time` DATETIME NOT NULL DEFAULT '0000-00-00',
PRIMARY KEY (`id`),
INDEX `id_user` (`id_user`)
)[/sql]

Така вместо да правиш глупости, при всяко влизане правиш нов запис (INSERT) в user_logs, а евентуално в users може да държиш данните за последния вход за да не се ровиш в другата да ги търсиш.
 

Back
Горе