Помогите написать простенький скрипт

ndvkerch

Гуру форума
Регистрация
26 Июн 2008
Сообщения
278
Реакции
74
Помогите написать простенький скриптик весь механизм понимаю но с пхп не дружу сам неосилю
Необходим скриптик для правки базы данных
суть скрипта такова
в базе данных есть 2 таблицы:
jb_user
`id_user` int(11) NOT NULL auto_increment,
`pass` varchar(32) NOT NULL,
`email` varchar(64) NOT NULL,
`activ` enum('no','yes') NOT NULL default 'no',
PRIMARY KEY (`id_user`),
UNIQUE KEY `email` (`email`)
и
jb_board
`id` int(11) NOT NULL auto_increment,
`id_category` smallint(6) NOT NULL,
`user_id` int(11) NOT NULL default '0',
`type` enum('s','p','u','o','a','v','r') NOT NULL default 'p',
`autor` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`city_id` smallint(6) NOT NULL default '1',
`url` varchar(255) NOT NULL,
`click` smallint(6) NOT NULL default '0',
`contacts` text NOT NULL,
`text` text NOT NULL,
`price` int(11) NOT NULL,
`video` varchar(128) NOT NULL,
`hits` int(11) NOT NULL default '0',
`old_mess` enum('new','old') NOT NULL default 'new',
`checked` enum('yes','no','edit') NOT NULL default 'no',
`checkbox_top` smallint(1) NOT NULL default '0',
`top_time` datetime NOT NULL default '0000-00-00 00:00:00',
`send_notice_vip_sms` smallint(1) NOT NULL default '0',
`checkbox_select` smallint(1) NOT NULL default '0',
`select_time` datetime NOT NULL default '0000-00-00 00:00:00',
`send_notice_select_sms` smallint(1) NOT NULL default '0',
`tags` varchar(255) NOT NULL,
`send_notice_day` smallint(1) NOT NULL default '0',
`time_delete` smallint(6) NOT NULL default '30',
`date_add` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `id_category` (`id_category`),
KEY `city_id` (`city_id`),
KEY `user_id` (`user_id`),
KEY `email` (`email`)

необходио в цикле пройтись по всем записям jb_user
с условием если поле `activ`='yes' тогда запомнить поля `id_user` и `email`
и сделать запрос с этими переменными (UPDATE `base`.`jb_board` SET `user_id` = '$id_user' WHERE `jb_board`.`email` = '$email' LIMIT 100 ;) к таблице jb_board
цикл закончить когда закончятся все записи в таблице jb_user
 
Объясните, для чего в таблице jb_board присутствует поле email. Достаточно этого поля в jb_user. А в SQL запросах использовать JOIN. Тогда и задачи такой не возникнет.
 
Объясните, для чего в таблице jb_board присутствует поле email. Достаточно этого поля в jb_user. А в SQL запросах использовать JOIN. Тогда и задачи такой не возникнет.
ну базу не я писал так задумал разработчик.
В первой базе это список пользователей в ней email поле уникальное (т.е. они не могут повторяться)
Вторая база это база объявлений в ней может быть несколько объявлений с одним мылом, я только недавно включил опцию добавлять объявления только зарегистрированным и по этому у большинства старх объвлений поле user_id равно 0 по умолчанию. Я просто хочу с помощью скрипта или может можно обойтись просто запросом к базе данных отредактировать базу и присвоить верный user_id для всех объявлений на мыло которых зарегистрировались пользователи. Мне просто не хватает знаний как грамотно это сделать в цикле чтобы пробежалось по всей базе и присвоило нужный user_id
 
Попробуй так, не проверял, но вроде должно пойти
PHP:
<?php
$query =	"SELECT * FROM jb_user WHERE activ='yes'";
$ctg = mysql_query($query);	


for($i=0; $dupa = mysql_fetch_array($ctg); $i++)
    {
$query1 =	"SELECT * FROM jb_board  WHERE email LIKE '%$dupa[email]%'";
	
$ctg1 = mysql_query($query1);
	for($s=0; $dupas = mysql_fetch_array($ctg1); $s++)
    {
	 $query2 = "UPDATE jb_board SET user_id=".$dupa['user_id']."
                WHERE email=".$dupas['email']; 
  mysql_query($query2);
	}
	}
?>
 
Спасибо за помощь
код конечно же с наскоку не запустился но дал повод для размышления и помог разобраться. Второй цикл оказался лишним вот что в конечном итоге у меня заработало;
PHP:
<?php
define('SITE',true);
include("../admin/conf.php");
$query = "SELECT * FROM jb_user WHERE activ='yes'";
$ctg = mysql_query($query);    
for($i=0; $dupa = mysql_fetch_array($ctg); $i++)
    {
     $query2 = "UPDATE jb_board SET user_id='".$dupa['id_user']."' WHERE email='".$dupa['email']."'";
     mysql_query($query2);
    }
?>
 
Назад
Сверху