#251 2011.09.26 22:44

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

WapStyle Заценил? гг

Неактивен

#252 2011.09.26 22:51

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Общие вопросы по PHP

Это был мой позор(((исправил все,теперь работает((правда говнокод остался((
Добавлено спустя   4 минуты  54 секунды:
смайлы личные работают,и обычные тоже,обычных смайлов выводит только по 2 смайла в одном посте,а вот личных,скок напишешь,сток и выведет,хоть 100 штук в одном посте,теперь не знаю как ограничитель личных смайлов сделать((чтоб их тоже выводило только по два в одном посте(( в какой строке или в какой части это можно сделать подскажите((

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
define('MAX_SMILES',2); // Максимальное количество смайлов
 
$cache_sml;
$cache_pat;
$n 0;
 
function sml_replace_callback($match)
{
global $cache_sml,$n
 
if($n == MAX_SMILES)
return '';
 
$n++;
 
return $cache_sml[$match[1]];
}
 
function smiles($msg)
{
global $cache_pat,$cache_sml,$user,$n;
 
if(empty($cache_sml) or empty($cache_pat))
{
$file file_get_contents(H.'smiles/smiles.txt');
preg_match_all('%(.+) (.+)%',$file,$arr);
 
$cache_pat array_map('sml_mk_pat',$arr[2]);
$arr[1] = array_map('sml_mk_img',$arr[1]);
$cache_sml array_combine($arr[2],$arr[1]);
}
$q=mysql_query("SELECT * FROM `user_smiles_spis`"); //Личные смайлы
 while($post mysql_fetch_array($q)){
$msg str_replace($post['sim'],'<a><img src= "/smiles/usersmiles/'.$post['name'].'.gif" alt="'.$post['name'].'"/></a>',$msg);
}
$msg preg_replace_callback($cache_pat,'sml_replace_callback',$msg);
$n 0;
 
return $msg;
}
 
function sml_mk_pat($sml)
{
return '%('.preg_quote($sml).')%';
}
 
function sml_mk_img($sml)
{
return '<img src="/smiles/'.$sml.'.gif"/>';
}
 
function links_preg1($arr)
{
return '<a href="'.$arr[1].'">'.$arr[2].'</a>';
}
function links_preg2($arr)
{
return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];
}
 
function links($msg)
{
$msg=preg_replace_callback('~\[url=([^ \r\n\t`\'"]+)\](.*?)\[/url\]~iu''links_preg1'$msg);
$msg=preg_replace_callback('~(^|\s)([a-z]+://([^ \r\n\t`\'"]+))(\s|$)~iu''links_preg2'$msg);
return $msg;
}
$versiya '4.0 Лицензионная';
function bbcodehightlight($arr)
{
$arr[0]=html_entity_decode($arr[0], ENT_QUOTES'UTF-8');
$arr[0]=preg_replace('#<img src="(.*?)" alt="(.*?)" />#sui''\\2'$arr[0]);
return '<div class="" style="overflow:scroll;clip:auto;max-width:480px;">'.preg_replace('#<code>(.*?)</code>#si''\\1' ,highlight_string($arr[0],1)).'</div>'."\n";
}

Неактивен

#253 2011.09.27 23:39

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Общие вопросы по PHP

Блин,создаю таблицу в базе вот такую

Код:

1
2
3
4
5
6
7
`id` INT( 11 ) NULL DEFAULT NULL AUTO_INCREMENT ,
`name` INT( 20 ) NULL DEFAULT NULL AUTO_INCREMENT ,
`id_dir` INT( 50 ) NULL DEFAULT NULL ,
`sim` VARCHAR( 50 ) NULL DEFAULT NULL ,
`user` INT( 11 ) NULL DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

и выдает ошибку "#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key "
это значить что в таблице может быть только одно поле с атрибутом AUTO_INCREMENT,а мне нужно два таких поля(( как это сделать? или лучше обойтись одним полем id ? в принципе значения в поле id и name ,будут одинаковые если поставить AUTO_INCREMENT  (

Неактивен

#254 2011.09.28 00:17

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по PHP

тебе не нужно 2 автоинкремента. тут, на сколько я понял, нужна связь многие ко многим.

Неактивен

#255 2011.09.28 00:31

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Общие вопросы по PHP

Gemorroj написал:

тебе не нужно 2 автоинкремента. тут, на сколько я понял, нужна связь многие ко многим.

наверное поле name нужно убрать,ведь значения в полях id и name будут одинаковые,и поле ид можно использовать в двух значениях сразу как имя(чтоб не повторялось имя файла при загрузке) и как ид ))

Отредактировано POFIGISST (2011.09.28 00:31)

Неактивен

#256 2011.09.28 00:34

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по PHP

POFIGISST
Ну оно за частую так и делается.

Неактивен

#257 2011.09.28 22:16

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Общие вопросы по PHP

как мне в этом

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
require'../../config.php';
$align='left';
$title='Личные смайлы';
aut();
head();
who_add(0,'enter');
 
 
 
echo '<div class="menu">';
 
if(!isset($user)){
  echo '<div class="err">Доступ закрыт</div>';
  }
 
if($_GET['act']=='dir'){
 
if(isset($_POST['name']) && isset($_POST['pos'])){
  $name esc(stripcslashes(htmlspecialchars($_POST['name'])));
  $pos intval($_POST['pos']);
  
 
if(strlen2($name)>32){
  $err='Слишком большое название директории';
  }else if(strlen2($name)<3){
    $err='Слишком короткое название директории';
    }else if($pos<0){
      $err='Неверный выбор положения директории';
      }else{
 
mysql_query("INSERT INTO `user_smiles_dir` (`name`, `pos`, `user`) values('$name', '$pos', '$user[id]')");
mysql_query("OPTIMIZE TABLE `user_smiles_dir` where `user` = $user[id]");
print'Директория <b>'.$name.'</b> добавлена';
}
}
 
 
 
echo '<form method="post" action="add.php?act=dir">';
echo 'Название:(3-32)<br/><input name="name" maxlength="32"/><br/>';
echo 'Позиция:(от 1)<br/><input name="pos"/><br/>';
echo '<input value="Добавить" type="submit"/></form>';
 
echo '&#187;&nbsp;<a href="index.php">Отмена</a><br/>';
 
 
}else if($_GET['act']=='smile'){
if(isset($_FILES['file']) && $_FILES['file']!=NULL && isset($_POST['name']) && isset($_POST['sim']) && isset($_POST['dir'])){
  $name esc(stripcslashes(htmlspecialchars($_POST['name'])));
  $dir_s intval($_POST['dir']);
  $sim htmlspecialchars($_POST['sim']);
 
if($imgc=@imagecreatefromstring(file_get_contents($_FILES['file']['tmp_name']))){
 
  $name rus_to_lat(tolower($name));
 
if($name==NULL){
  $err 'Название файла не заполнено';
  }else if(strlen2($name)>10){
    $err 'Название слишком большое. max 10';
    }else if(strlen2($name)<1){
      $err 'Название слишком маленькое. min 1';
      }else{
 
mysql_query("INSERT INTO `user_smiles_spis` (`name`, `id_dir`, `sim`, `user`) values ('".$name."', '$dir_s', '$sim', '$user[id]')");
copy($_FILES['file']['tmp_name'], '../../smiles/usersmiles/'.$name.'.gif');
chmod('../../smiles/usersmiles/'.$name.'.gif',0666);
 
 
print"<b>Смайл загружен</b><br>";
}
}else{
  print"Это не смайл";
  }
mysql_query("OPTIMIZE TABLE `smiles_spis`");
  }
 
 
 
echo 'Загружать только *.gif<br/>';
echo '<form method="post" enctype="multipart/form-data" action="add.php?act=smile">';
echo '<input type="file" name="file" accept="image/*,image/gif"/><br/>';
echo '<b>Короткое название смайла:</b><br/><input name="name"><br/>';
echo '<b>На что заменяем?:</b><br/><input name="sim"><br/>';
echo '<b>Директория</b>:<br/><select name="dir">';
 
$q mysql_query("SELECT * FROM `user_smiles_dir` where `user` = $user[id]");
while($dir mysql_fetch_array($q)){
  echo '<option value="'.$dir['id'].'">'.esc(stripcslashes(htmlspecialchars($dir['name']))).'</option>';
  }
echo '</select><br/>';
echo '<input value="Загрузить" type="submit"/></form>';
 
echo '&#187;&nbsp;<a href="index.php">Отмена</a><br/>';
 
 
}else{
  echo '<div class="err">Неверный ввод</div>';
  }
  
 
echo '</div>';
echo gb.'<a href="'.H.'my/index">Личный кабинет</a>'.div;
echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;
foot();
?>

сделать,чтоб название файла который закидывают было не то которое юзер пишет,а чтоб файл сохранялся с именем ид,то есть если ид равен 5 например,то чтоб и файл автоматически менял название на 5.gif как такое сделать?sad

Неактивен

#258 2011.09.28 23:28

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2279
Карма: 19
Профиль

Re: Общие вопросы по PHP

ID чего/кого? Юзера, смайла в дирректории по порядку?

Неактивен

#259 2011.09.28 23:38

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Общие вопросы по PHP

tipsun написал:

ID чего/кого? Юзера, смайла в дирректории по порядку?

в таблице user_smiles_spis первое поле идет id там автоинкремент стоит,вот хочу чтоб по умолчанию картинкам присваивалось имя их ИДа,чтоб юзер сам не мог давать имя файлу который он закидывает((

Неактивен

#260 2011.09.29 19:41

POFIGISST
Участник
Зарегистрирован: 2011.03.20
Сообщений: 1531
Карма: 6
Профиль

Re: Общие вопросы по PHP

а как можно сделать проверку данных которые юзер записывает в форму? то есть есть слова определенные в тхт файле,и над сделать проверку,чтоб если юзер в водит то слово которое в этом тхт файле , то чтоб писало ошибку((

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.031 s