Различные вопросы по PHP и MySQL

253K
.

<?php
define('_IN_JOHNCMS', 1);
$textl = 'Установщик';
$rootpath = '';
require_once ('incfiles/core.php');
require_once ('incfiles/head.php');
if (isset($_POST['submit'])){
foreach ($_POST['mod'] as $act){
header ('location:?act=' . $act);
}
switch ($act) {
case '1':
if (mysql_query('Запрос для установки первого модуля')){
$out .= 'Первый модуль успешно установлен';
}
break;
case '2':
if (mysql_query('Запрос для установки второго модуля')){
$out .= '<br />Второй модуль успешно установлен';
}
break;
case '3':
if (mysql_query('Запрос для установки третьего модуля')){
$out .= '<br />Третий модуль успешно установлен';
}
break;
}
}
echo $out;
echo '<form action="file.php" method="POST">Выберете модуль для установки<br /><input name="mod" type="checkbox" value="1"/>Первый модуль<br /><input name="mod" type="checkbox" value="2"/>Второй модуль<br /><input name="mod" type="checkbox" value="3"/>Третий модуль<br /><input name="submit" type="submit" value="Установить"/><br /></form>';
require_once ('incfiles/end.php');

.

Почемуто условие в JOIN не работает, независимо от него отдает только тех юзеров у которых `user`.`id` = `mail_messages`.`receiver`

"SELECT SUBSTRING(`mail_messages`.`text`, 1, 100) AS `text`, "
				           . "`mail_messages`.`time`, "
				           . "`mail_messages`.`read`,"
				           . "`mail_messages`.`id` AS `mid`, "
				           . "`users`.`id` AS `uid`, "
				           . "`users`.`nickname` as `nick` "
				           . "FROM `mail_messages` "
				           . "LEFT JOIN `users` ON "
				           . "IF (`mail_messages`.`receiver` = '" . $this->user->id . "', "
				           . "`mail_messages`.`sender` = `users`.`id`, "
				           . "`mail_messages`.`receiver` = `users`.`id`) "
				           . "WHERE "
				           . "(`mail_messages`.`sender` = '" . $this->user->id . "' AND `mail_messages`.`archive` = '1')"
				           . " OR (`mail_messages`.`receiver` ='" . $this->user->id . "' AND `mail_messages`.`archive` = '2')";
.
(\/)____o_O____(\/)

Screamer, структуры и что получить хочешь

.

Koenig, В зависимости от того получено сообщение или отправлено вывести никнейм и ссылку на профиль отправителя или получателя

CREATE TABLE `mail_messages` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`sender` INT(11) UNSIGNED NOT NULL,
	`receiver` INT(11) UNSIGNED NOT NULL,
	`text` TEXT NOT NULL,
	`read` ENUM('y','n') NOT NULL DEFAULT 'n',
	`archive` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`time` INT(11) UNSIGNED NOT NULL DEFAULT '0',
	PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
AUTO_INCREMENT=3;

--
CREATE TABLE `users` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`nickname` VARCHAR(32) NOT NULL DEFAULT '',
	`status` VARCHAR(50) NOT NULL DEFAULT '',
	`last_visit` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`password` CHAR(60) NOT NULL DEFAULT '',
	`token` CHAR(32) NOT NULL DEFAULT '',
	`login_try` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`email` VARCHAR(50) NOT NULL DEFAULT '',
	`mailvis` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`rest_code` VARCHAR(32) NOT NULL DEFAULT '',
	`rest_time` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`group` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`moderation` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`ban` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`sex` ENUM('m','w') NOT NULL DEFAULT 'm',
	`imname` VARCHAR(50) NOT NULL DEFAULT '',
	`birth` DATE NOT NULL DEFAULT '0000-00-00',
	`about` TEXT NOT NULL,
	`join_date` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`lastpost` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`comm_count` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`ip` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`ip_via_proxy` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`user_agent` VARCHAR(200) NOT NULL DEFAULT '',
	`notifications` TEXT NOT NULL,
	PRIMARY KEY (`id`),
	INDEX `last_visit` (`last_visit`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=8;
.
(\/)____o_O____(\/)

Screamer, чуть позже проверю и напишу, сильно ты замудрил
там на много проще все

.
Screamer

вроде пашет, только нужно еще флаг какой нибудь сделать что бы определять кто есть юзер.
из `archive` брать нельзя т.к. там теперь еще добавлено значение 3 т.е. у обоих в архиве.
---
я тупица, uid нам нахрена мляяяяяяяяяяяяяяяяяяяяяя

.
(\/)____o_O____(\/)

Screamer,

SELECT users.id, users.nickname
FROM `mail_messages` 
JOIN `users` ON ((
mail_messages.sender = users.id
AND mail_messages.archive =1
)
OR (
mail_messages.receiver = users.id
AND mail_messages.archive =2
)
)
AND mail_messages.id =3
.

Koenig, я уже сделал, но все равно спасибо, взял на заметку, возможно потом, запрос все равно оптимизировать придется, а то там он что то большой сильно получился.

.

Кастую в тему умельцев регулярных выражений

Тег на входе: [img_2_picture.png]какой-то текст[/img]
На выходе должен быть таким: <img src="/uploads/2/picture.png" alt="какой-то текст">

.
Screamer

L!MP,

$str = preg_replace("#\[img\_([0-9]+)\_([A-z\.]+)](.+?)\[/img]#is", "<img src=\"$1/$2\" alt=\"$3\" />", $str);

Шаблон для alt сам какой нужно задашь
Всего: 7969