PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (3): « 1 2 [3]
Найдено сообщений: 38
Шмайсер
Отправлено: 19 Октября, 2011 - 08:21:28 • Тема: AJAX скрипт "Записать в блокнот" • Форум: Вопросы новичков
Ответов: 3 Просмотров: 245
Здравствуйте! Написал скрипт, который добавляет объекты каталога в блокнот. Вот код вывода каталога
PHP:
скопировать код в буфер обмена
<script type="text/javascript" src="js/JsHttpRequest.js"></script>
<script type="text/javascript" src="js/ot.js"></script>
<link href="images/css.css" rel="stylesheet" type="text/css">
<a href='zap.php' class='top_link'><span>Блокнот</span></a>
<?
//далее идут запросы в базу, обработка и вывод результатов
//ниже код добавления в блокнот
echo "<div style=\" margin:0px;\" id=\" InListCatAddToNote" . $row_Recordset1 [ 'id' ] . "\" ><a style=\" cursor:pointer\" href=\" javascript:InListCatAddToNote('" . $row_Recordset1 [ 'id' ] . "');\"
title=\" Добавить в блокнот\" ><img src=\" images/note.gif\" ></a>" ;
echo "</div> " ;
echo '</table>' ;
echo '</table><p>' ;
}
?>
<div id="query"> </div>
<div id="img_query"><img src="images/loading.gif"><br><br><strong>Добавляем объект в блокнот</strong></div>
<div id="smalldiv"></div>
вот javascript, который реализует ajax запрос к файлу обработчику
CODE (
javascript ):
скопировать код в буфер обмена
function InListCatAddToNote( value)
{
var namediv = value;
var req= new JsHttpRequest( ) ;
req.onreadystatechange = function ( ) {
if ( req.readyState == 4 )
{
document.getElementById ( 'query' ) .style .display = 'none' ;
document.getElementById ( 'img_query' ) .style .display = 'none' ;
document.getElementById ( 'InListCatAddToNote' + namediv) .innerHTML = req.responseText ;
}
else
{
document.getElementById ( 'query' ) .style .display = 'block' ;
document.getElementById ( 'img_query' ) .style .display = 'block' ;
return false ;
}
}
req.open ( null , "../core/addtonote.php" , true ) ;
req.send ( { InListCatAddToNote: value} ) ;
//alert('InListCatAddToNote' + namediv);
}
вот код обработчика
PHP:
скопировать код в буфер обмена
<?
require ( "JsHttpRequest.php" ) ;
$JsHttpRequest = new JsHttpRequest( "windows-1251" ) ;
if ( is_numeric ( $_REQUEST [ 'InListCatAddToNote' ] ) ) {
$_SESSION [ 'test' ] [ ] = $_REQUEST [ 'InListCatAddToNote' ] ;
//ниже код, который делает ссылку на добавление в блокнот неактивной
if ( $_SESSION [ 'test' ] ) echo "<img src=\" images/nonote.gif\" title=\" Объект записан в блокноте\" >" ;
}
?>
Вопрос в следующем - если пользователь из 30 объектов каталога добавил в блокнот 5 объектов, а потом обновил страничку, то добавленные уже объекты можно опять добавлять в блокнот. Как сделать так, чтобы пока жива сессия, выбранные в блокнот объекты всегда имели неактивную ссылку на добавление?
Заранее спасибо!
(Добавление)
Подозреваю, что в первом коде который я привел, вот тут
PHP:
скопировать код в буфер обмена
//ниже код добавления в блокнот
echo "<div style=\" margin:0px;\" id=\" InListCatAddToNote" . $row_Recordset1 [ 'id' ] . "\" ><a style=\" cursor:pointer\" href=\" javascript:InListCatAddToNote('" . $row_Recordset1 [ 'id' ] . "');\"
title=\" Добавить в блокнот\" ><img src=\" images/note.gif\" ></a>" ;
echo "</div> " ;
надо сделать проверку на "если в массиве сессии $_SESSION['test'][] есть значение, равное $row_Recordset1['id'] - то выводим неактивную ссылку, иначе - активную "
а вот как реализовать - пока не знаю))
Шмайсер
Отправлено: 13 Октября, 2011 - 11:43:01 • Тема: Проверка загружаемых изображений на размер(вес) и тип файла • Форум: Вопросы новичков
Ответов: 3 Просмотров: 226
Viper пишет: Вам нужно пройтись циклом по загруженным файлам, сделать проверку и если не прошло то сделать удаление того элемента который не попал под разрешенный размер. Далее снова циклом по $_FILES и уже тогда делаем перемещение.
Viper , да в том то и дело что я все это пробовал, но по каким то причинам это либо не работает, либо работает но некорректно). Вы не могли бы листинг этих циклов привести?
(Добавление)
illy пишет: в яндекс-почте когда прикрепляешь файл-сразу показывается его вес
посмотри. может найдёшь как это делается
Так это проверка на клиенте, у меня она и так есть. А мне нужно сделать проверку на сервере
Шмайсер
Отправлено: 13 Октября, 2011 - 11:11:21 • Тема: Проверка загружаемых изображений на размер(вес) и тип файла • Форум: Вопросы новичков
Ответов: 3 Просмотров: 226
Здравствуйте! есть такая проблема - написал скрипт загрузки нескольких файлов на сервер, вроде все работает, но никак не получается правильно проверить вес и тип файла. Привожу скрипт, в котором пока есть только проверка на вес ( если более 64 Кб то изображение не загружается). Работает корректно, если загрузить один, превышающий по весу файл - ничего не грузится, выдается сообщение об ошибке ( Файл не загружен, так как вес превышает бла-бла-бла)
Но, если, например, загрузить несколько файлов, из которых только один превышает разрешенный размер, то не грузятся ВСЕ ФАЙЛЫ.
Вот код обработчика
PHP:
скопировать код в буфер обмена
<?PHP
$db_host = 'localhost' ;
$db_user = 'loader' ;
$db_pass = '12345' ;
$db_name = 'loader' ;
if ( isset ( $_FILES [ 'fileToUpload' ] ) ) { $max_image_size = 64 * 1024 ;
$files_count = count ( $_FILES [ 'fileToUpload' ] [ "name" ] ) ; for ( $i = 0 ; $i < $files_count ; $i ++ ) {
$img_params =@ getimagesize ( $_FILES [ 'fileToUpload' ] [ 'tmp_name' ] [ $i ] ) ;
switch ( $img_params [ 2] )
{
case '1' :
$rash = 'gif' ;
break ;
case '3' :
$rash = 'png' ;
break ;
case '2' :
$rash = 'jpg' ;
break ;
}
$loc = 'uploads/' ;
$upl_path = 'uploads/prod/' ;
$thumb_path = 'uploads/prod/thumb/' ;
$source = $_FILES [ 'fileToUpload' ] [ 'tmp_name' ] [ $i ] ;
$type = $_FILES [ 'fileToUpload' ] [ 'type' ] [ $i ] ;
$target = $upl_path . $_FILES [ 'fileToUpload' ] [ 'name' ] [ $i ] ;
if ( filesize ( $source ) > $max_image_size ) { echo 'Ошибка загрузки файла ' . $_FILES [ 'fileToUpload' ] [ 'name' ] [ $i ] . ' его размер больше, чем 64K.<br />' ;
}
///resize big
$rb_name_new [ ] = uniqid ( ) . '.' . $rash ; $res_src = $upl_path . $rb_name_new [ $i ] ;
//получаем параметры загруженного файла
switch ( $rb_params [ 2] ) {
}
//если ширина меньше 640 и высота меньше 480
//оставляем оригинальные размеры
if ( ( $rb_params [ 0] <= 640) && ( $rb_params [ 1] <= 480) ) {
$rb_newwidth = $rb_params [ 0] ;
$rb_newheight = $rb_params [ 1] ;
}
//иначе - начинаем урезать пропорционально
else {
//если высота равна ширине
//вычисляем новую ширину
if ( $rb_params [ 1] == $rb_params [ 0] ) {
$rb_newheight = 640 ;
$rb_newwidth = floor ( $rb_newheight * $rb_params [ 0
] / $rb_params [ 1
] ) ; }
//если ширина равна высоте
//вычисляем новую высоту
if ( $rb_params [ 1] == $rb_params [ 0] ) {
$rb_newwidth = 640 ;
$rb_newheight = floor ( $rb_newwidth * $rb_params [ 1
] / $rb_params [ 0
] ) ; }
//если высота больше ширины
//вычисляем новую ширину
if ( $rb_params [ 1] > $rb_params [ 0] ) {
$rb_newheight = 480 ;
$rb_newwidth = floor ( $rb_newheight * $rb_params [ 0
] / $rb_params [ 1
] ) ; }
//если ширина больше высоты
//вычисляем новую высоту
if ( $rb_params [ 1] < $rb_params [ 0] ) {
$rb_newwidth = 640 ;
$rb_newheight = floor ( $rb_newwidth * $rb_params [ 1
] / $rb_params [ 0
] ) ; }
}
//создаем урезку загруженного изображения
imagecopyresampled ( $rb_resource , $rb_source , 0
, 0
, 0
, 0
, $rb_newwidth , $rb_newheight , $rb_params [ 0
] , $rb_params [ 1
] ) ; imagettftext ( $rb_resource , 16
, 0
, 5
, 30
, $white , $loc . "MTCORSVA.TTF" , "WWW.LUCKY-REALTY.RU" ) ;
switch ( $rb_params [ 2] ) {
case 1
: imagegif ( $rb_resource , $res_src , 70
) ; break
; case 2
: imagejpeg ( $rb_resource , $res_src , 70
) ; break
; case 3
: imagepng ( $rb_resource , $res_src ) ; break
; }
///end resize big
$new_name = 't' . $rb_name_new [ $i ] ;
$resource_src = $thumb_path . $new_name ;
//получаем параметры загруженного файла
switch ( $params [ 2] ) {
}
//если высота равна ширине
//вычисляем новую ширину
if ( $params [ 1] == $params [ 0] ) {
$newheight = 70 ;
$newwidth = floor ( $newheight * $params [ 0
] / $params [ 1
] ) ; }
//если ширина равна высоте
//вычисляем новую высоту
if ( $params [ 1] == $params [ 0] ) {
$newwidth = 70 ;
$newheight = floor ( $newwidth * $params [ 1
] / $params [ 0
] ) ; }
//если высота больше ширины
//вычисляем новую ширину
if ( $params [ 1] > $params [ 0] ) {
$newheight = 70 ;
$newwidth = floor ( $newheight * $params [ 0
] / $params [ 1
] ) ; }
//если ширина больше высоты
//вычисляем новую высоту
if ( $params [ 1] < $params [ 0] ) {
$newwidth = 70 ;
$newheight = floor ( $newwidth * $params [ 1
] / $params [ 0
] ) ; }
//создаем миниатюру загруженного изображения
$newwidth , $newheight , $params [ 0] , $params [ 1] ) ;
imagejpeg ( $resource , $resource_src , 80
) ; //80 качество изображения
//удаляем оригинал картинки
}
}
$r = mysql_query ( "INSERT INTO users SET file0='" . $rb_name_new [ 0 ] . "', file1='" . $rb_name_new [ 1 ] . "', file2='" . $rb_name_new [ 2 ] . "', file3='" . $rb_name_new [ 3 ] . "', file4='" . $rb_name_new [ 4 ] . "'" ) ;
}
?>
Если не трудно, подскажите как правильно сделать проверку на вес и тип файла. Желательно листинг, потому как я вроде уже все перепробовал, все функции, а корректно не получается.
Заранее спасибо!
Шмайсер
Отправлено: 29 Июня, 2011 - 09:52:08 • Тема: Установить правильно счетчик для загрузки нескольких изображений • Форум: Напишите за меня, пожалуйста
Ответов: 0 Просмотров: 38
Всем добрый день. Есть такая проблема. Загружаю изображения на сервер, вот код обработчика
PHP:
скопировать код в буфер обмена
//add photo
$errors = "" ;
$msg = "" ;
$fileElementName = 'imgprodkv' ;
$i = 0 ;
$files_count = sizeof ( @ $_FILES [ $fileElementName ] [ "name" ] ) ; for ( $i = 0 ; $i < $files_count - 1 ; $i ++ ) {
if ( ! empty ( $_FILES [ $fileElementName ] [ 'error' ] [ $i ] ) ) {
switch ( $_FILES [ $fileElementName ] [ 'error' ] [ $i ] )
{
case '1' :
$error = 'размер загруженного файла превышает размер установленный параметром upload_max_filesize в php.ini ' ;
break ;
case '2' :
$error = 'размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме. ' ;
break ;
case '3' :
$error = 'загружена только часть файла ' ;
break ;
case '4' :
$error = 'файл не был загружен (Пользователь в форме указал неверный путь к файлу). ' ;
break ;
case '6' :
$error = 'неверная временная дирректория' ;
break ;
case '7' :
$error = 'ошибка записи файла на диск' ;
break ;
case '8' :
$error = 'загрузка файла прервана' ;
break ;
case '999' :
default :
$error = 'No error code avaiable' ;
}
}
elseif ( empty ( $_FILES [ $fileElementName ] [ 'tmp_name' ] [ $i ] ) || $_FILES [ $fileElementName ] [ 'tmp_name' ] [ $i ] == 'none' ) {
$error = 'No file was uploaded..' ;
}
else
{
if ( file_exists ( "uploads/prod/" . $_FILES [ $fileElementName ] [ 'name' ] [ $i ] ) ) { $error = $_FILES [ $fileElementName ] [ 'name' ] [ $i ] . " уже существует. " ;
}
else {
$msg .= " File Name: " . $_FILES [ $fileElementName ] [ 'name' ] [ $i ] . "<br/>" ;
$msg .= " File Type: " . $_FILES [ $fileElementName ] [ 'type' ] [ $i ] . "<br/>" ;
$msg .= " File Size: " . ( @ filesize ( $_FILES [ $fileElementName ] [ 'tmp_name' ] [ $i ] ) / 1024 ) . "Kb" ;
$upl_path = 'uploads/prod/' ;
$thumb_path = 'uploads/prod/thumb/' ;
$source = $_FILES [ $fileElementName ] [ 'tmp_name' ] [ $i ] ;
$target = $upl_path . $_FILES [ $fileElementName ] [ 'name' ] [ $i ] ;
$new_name = 'thumb_' . $_FILES [ $fileElementName ] [ 'name' ] [ $i ] ;
$resource_src = $thumb_path . $new_name ;
//получаем параметры загруженного файла
switch ( $params [ 2] ) {
}
//если высота больше ширины
//вычисляем новую ширину
if ( $params [ 1] > $params [ 0] ) {
$newheight = 70 ;
$newwidth = floor ( $newheight * $params [ 0
] / $params [ 1
] ) ; }
//если ширина больше высоты
//вычисляем новую высоту
if ( $params [ 1] < $params [ 0] ) {
$newwidth = 70 ;
$newheight = floor ( $newwidth * $params [ 1
] / $params [ 0
] ) ; }
//создаем миниатюру загруженного изображения
$newwidth , $newheight , $params [ 0] , $params [ 1] ) ;
imagejpeg ( $resource , $resource_src , 100
) ; //80 качество изображения
вот код формы
CODE (
html ):
скопировать код в буфер обмена
<script type = "text/javascript" >
$(document).ready(function(){
$('.MultiFile').MultiFile({
accept:'jpg|gif|bmp|png|rar', max:10, STRING: {
remove:'удалить',
file:'$file',
selected:'Выбраны: $file',
denied:'Неверный тип файла: $ext!',
duplicate:'Этот файл уже выбран:\n$file!'
}
});
$("#loading").ajaxStart(function(){
$(this).show();
})
.ajaxComplete(function(){
$(this).hide();
});
$('#uploadForm').ajaxForm({
beforeSubmit: function(a,f,o) {
o.dataType = "html";
$('#uploadOutput').html('Submitting...');
},
success: function(data) {
var $out = $('#uploadOutput');
$out.html('Form success handler received: <strong > ' + typeof data + '</ strong > ');
if (typeof data == 'object' && data.nodeType)
data = elementToString(data.documentElement, true);
else if (typeof data == 'object')
data = objToString(data);
$out.append('<div ><pre > '+ data +'</ pre ></ div > ');
}
});
});
</ script >
<form id = "uploadForm" name = "send_vacancy" action = "add_prod_kv.php" method = "POST" enctype = "multipart/form-data" >
<input name = "MAX_FILE_SIZE" value = "1000000" type = "hidden" / >
Загрузка изображения 1<br >
<input id = "fileToUpload" class = "MultiFile" type = "file" name = "imgprodkv[]" size = "63" ><br >
<img id = "loading" src = "template/img111/loading.gif" style = "display:none;" / >
<div id = "uploadOutput" ></ div ></ form >
Некоторое пояснение по JS. Скрипт работает таким образом. Есть всегда 1 поле type="file", при загрузке изображений имена файлов выводятся в браузере аяксом, после загрузки 10-го изображения кнопка ЗАГРУЗИТЬ становится неактивной.
Проблема в следующем : при загрузке 1 или 9 изображений все нормально, но если пользователь загружает 10 картинок ( в джаваскрипте установлен ограничитель на 10 картинок) то на сервер грузятся 9.Соответственно, автоматически созадется и 9 превью.
Самое интересное, что в базу записываются имена 10 файлов!.
Как ни пробовал - либо вообще не работает, либо работает как я описал.
Думаю, надо вот тут как то грамотно поправить
Подскажите, если не трудно!
Спасибо.
Шмайсер
Отправлено: 20 Июня, 2011 - 09:33:03 • Тема: Поиск из нескольких значений по одному полю в БД • Форум: Работа с СУБД
Ответов: 3 Просмотров: 1642
EuGen , спасибо но к сожалению так и не смог ваше решение прикрутить к своему коду. В нотисах пишет "неустановлено $rgStations". Пробовал дать ей значения из $_GET['metro'] - тоже самое.
К тому же мне еще нужно чтобы результаты поиска были в пагинации страниц, тоесть вот тут
PHP:
скопировать код в буфер обмена
// формирование страниц
$path = 'searchr.php?id_razdel=' . $id_razdel . '&id_profecy=' . $id_profecy .
'&id_oblast=' . $id_oblast . '&id_city=' . $id_city .
'&metro=' . $metro_s . '&zp_resume_ot=' . $zp_resume_ot . '&zp_resume_do=' . $zp_resume_do . '&name_currency=' . $currency_resume . '&grafic_resume=' . $grafic_resume .
'&gender_resume=' . $gender_res . '&expire_resume=' . $expire_resume . '&edu_resume=' . $edu_resume .
'&image=' . $image_files . '&order_by=' . $order_by . '&' ; //текущий обработанный URL
$strPages = strings:: generatePage ( $num_rows [ 0] , $offset , $perPageSearch , $path ) ; // формируем странциы
print $strPages ;
за значение станций отвечает
Не могли бы вы прямо в моем коде написать как нужно сделать? Просто может я чето не так делаю?
Заранее спасибо!
Шмайсер
Отправлено: 20 Июня, 2011 - 08:40:04 • Тема: Поиск из нескольких значений по одному полю в БД • Форум: Работа с СУБД
Ответов: 3 Просмотров: 1642
Здравствуйте. Такой вопрос - в форме поиска есть
CODE (
html ):
скопировать код в буфер обмена
<select name = "metro" class = "select" multiple = "multiple" >
<option value = "0" selected><?php print TEMPLATE_SEARCH_NE_VAGNO ?></ option >
<option value = "Молодежная" > Молодежная</ option >
<option value = "Кутузовская" > Кутузовская</ option >
<option value = "Студенческая" > Студенческая</ option >
</ select >
Обработчик формы имеет такой вид
PHP:
скопировать код в буфер обмена
$metro_s = isset ( $_GET [ 'metro' ] ) ? ClearDataFromForm
( $_GET [ 'metro' ] ) : '' ;
// выборка необходимых объявлений
$query = "SELECT SQL_CACHE SQL_CALC_FOUND_ROWS * FROM $resume_t WHERE active_resume='1' AND id_razdel$razdel "
. " AND id_profecy$prof AND id_oblast$oblast AND id_city$city AND zp_resume>='$zp_resume_ot ' AND zp_resume<='$zp_resume_do ' AND metro='$metro_s '"
. " AND currency_resume$currency AND $grafic AND gender_resume$gender AND $expire AND $edu AND $image "
. " $order LIMIT $offset , $perPageSearch " ;
// формирование страниц
$path = 'searchr.php?id_razdel=' . $id_razdel . '&id_profecy=' . $id_profecy .
'&id_oblast=' . $id_oblast . '&id_city=' . $id_city .
'&metro=' . $metro_s . '&zp_resume_ot=' . $zp_resume_ot . '&zp_resume_do=' . $zp_resume_do . '&name_currency=' . $currency_resume . '&grafic_resume=' . $grafic_resume .
'&gender_resume=' . $gender_res . '&expire_resume=' . $expire_resume . '&edu_resume=' . $edu_resume .
'&image=' . $image_files . '&order_by=' . $order_by . '&' ; //текущий обработанный URL
$strPages = strings:: generatePage ( $num_rows [ 0] , $offset , $perPageSearch , $path ) ; // формируем странциы
print $strPages ;
Как правильно сделать так, чтобы если выбраны несколько станций метро, поиск искал по этим станциям?
В моем случае он ищет только по последней введенной в селект.
Подозреваю, что надо как то запихнуть в массив, но как?
Подскажите решение!
Заранее спасибо
Шмайсер
Отправлено: 23 Октября, 2010 - 12:02:54 • Тема: Подкорректировать функцию • Форум: Программирование на PHP
Ответов: 3 Просмотров: 331
Цитата: сначала вы обрабатываете клиентский поисковый запрос и производите его фильтрация по регулярному выражению
а вот как это реализовать, подскажите если не трудно?
Шмайсер
Отправлено: 15 Октября, 2010 - 12:38:38 • Тема: Подкорректировать функцию • Форум: Программирование на PHP
Ответов: 3 Просмотров: 331
Всем здравствуйте! Вот есть такая функция
PHP:
скопировать код в буфер обмена
function vmGetCleanArrayFromKeyword( $keyword ) {
global $database ;
if ( empty ( $keyword ) ) return $keywordArr ;
$keywords = explode ( " " , $keyword , 10
) ;
foreach ( $keywords as $searchstring ) {
$strlen = strlen ( $searchstring ) ; if ( $strlen > 2 ) {
/*if( $searchstring[0] == "\"" || $searchstring[0]=="'" ) {
$searchstring[0] = " ";
}
if( $searchstring[strlen($searchstring)-1] == "\"" || $searchstring[strlen($searchstring)-1]=="'" ) {
$searchstring[strlen($searchstring)-1] = " ";
}*/
$searchstring = $database -> getEscaped ( $searchstring ) ;
$searchstring = str_replace ( '\"' , '"' , $searchstring ) ;
$keywordArr [ ] = $searchstring ;
}
}
return $keywordArr ;
подскажите, что нужно указать вот тут
чтобы в поисковой форме игнорировались все символы, кроме цифр и латинских букв? А так же наоборот, если в объекте поиска присутствуют какие либо сиволы, и пользователь их не ввел в форму поиска, то объект все равно был найден. Сам поиск работает, но если объект поиска вот такой
a1123-bbn-1455
а пользователь ввел вот так
a1123bbn1455
то искомого результата он не получит. В общем, нужно чтобы поиск искал только верное совпадение латинских букв и цифр, остальное ( включая и пробелы) полностью игнорировал
Заранее спасибо!!
Страниц (3): « 1 2 [3]
Powered by ExBB FM 1.0 RC1. InvisionExBB