PHP и с чем его едят....

KoLoB

KoLoB.cz
Ответ: PHP и с чем его едят....

Проблемма в следущем:
Есть форма, скажем с 8 полями: a, b, c, d, e, f, g, h.
Поле a - id, генерится автоматом.

Из переданных переменных формируется запрос к БД:
$result=mysql_query("SELECT * FROM db WHERE b='$b' AND c='$c' AND d='$d' AND e='$e' AND f='$f' AND g='$g' AND h='$h';");

Когда поля не пустые - всё нормально. Но нужен работающий запрос когда >2 полей могут быть пустыми. Все поля могут заполнятся киррилицей. SET NAME перед запросом выполняется.
 
Останнє редагування:

Dre.hz

Active Member
Ответ: PHP и с чем его едят....

PHP:
$condb = empty($b)?'':" AND b='$b' ";
$condc = empty($c)?'':" AND c='$c' ";
$condd = empty($d)?'':" AND d='$d' ";
$conde = empty($e)?'':" AND e='$e' ";
$condf = empty($f)?'':" AND f='$f' ";
$condg = empty($g)?'':" AND g='$g' ";
$condh= empty($h)?'':" AND h='$h' ";

$result=my_sql_query("SELECT * FROM db WHERE 1 $condb $condc $condd $conde $condf $condg $condh;' );
Первый блок можно циклом. Не забудь только в самом начале пообрабатывать данные, а то поимеют тебя через SQL инъекцию.
 

KoLoB

KoLoB.cz
Ответ: PHP и с чем его едят....

PHP:
$condb = empty($b)?'':" AND b='$b' ";
$condc = empty($c)?'':" AND c='$c' ";
$condd = empty($d)?'':" AND d='$d' ";
$conde = empty($e)?'':" AND e='$e' ";
$condf = empty($f)?'':" AND f='$f' ";
$condg = empty($g)?'':" AND g='$g' ";
$condh= empty($h)?'':" AND h='$h' ";

$result=my_sql_query("SELECT * FROM db WHERE 1 $condb $condc $condd $conde $condf $condg $condh;' );
Первый блок можно циклом. Не забудь только в самом начале пообрабатывать данные, а то поимеют тебя через SQL инъекцию.
Спасибо. SQL - инжекция не грозит, поскольку скрипт будет использоватся только в локальной сети на компах (даже админка не нужна).

Если значение по умолчанию скажем не пустое, а 0, код
Код:
$condg ==0?'':" AND g='$g' ";
будет работать? Или его нужно изменить?
 

KoLoB

KoLoB.cz
Ответ: PHP и с чем его едят....

И последний (пока :) ) вопрос, как переделать выше запрос, если нужно, чтобы

$c<$z1 (какая то переменная) и $c>$z2
 
B

bllem

Guest
Ответ: PHP и с чем его едят....

PHP:
where 1
если не один из параметров не задан, без этой единички быдет отдавать ошибку синтаксиса. Практического значения она не имеет.
PHP:
$c<$z1 и $c>$z2
PHP:
"SELECT * FROM `table` WHERE `".$c."` < ".$z1." AND  `".$c."` > ".$z2."; ";
 

[mAd_cAt]

Забанен
Ответ: PHP и с чем его едят....

Файл грузится через форму.
Как узнать его расширение (не тип, а расширение).

Прововал так

Код:
	$path_parts = pathinfo($photo);
		echo $path_parts['extension'], "\n";
но выдает tmp, ведь это временный файл...
Держи братан написал для тебя сделашь как я сказал работать будит!!!

PHP:
<? 

# ВАЖНАЯ ИНФОРМАЦИЯ! 

# В вашем "php.ini" должны быть следующие три параметра: 
# 
# file_uploads = On 
# 
# ^ включаем поддержку загружаемых файлов. 
# 
# upload_tmp_dir = ПОЛНЫЙ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДУТ_ХРАНИТЬСЯ_ЗАГРУЖАЕМЫЕ(ВРЕМЕННЫЕ)_ФАЙЛЫ 
# 
# ^ Например: upload_tmp_dir = d:/server/php/uploads 
# 
# и 
# 
# upload_max_filesize = 2M 
# 
# ^ Максимальный размер загружаемых файлов (в нашем случаем 2 МБ). 

// Куда сохраним файл? 
// Давайте в папке с этим скриптом, 
// создадим папку "files", туда-то и будем 
// сохранять все загружаемые файлы. 

$path=GetCWD()."/files"; 

    // Проверяем на существование папку $path 

    if(!file_exists($path)) 
    die("<b>Пожалуйста, создайте папку <font color=red>".$path."</font> и <a href=?>повторите попытку загрузить файл</a>.</b>"); 

// Выводим форму для загрузки файла. 

if(empty($_FILES['UserFile']['tmp_name'])) 
echo 
"<form method=post enctype=multipart/form-data> 
Выберите файл: <input type=file name=UserFile> 
<input type=submit value=Отправить> 
</form>"; 

// Если файл не загружен по каким-то причинам, выводим ошибку. 

elseif(!is_uploaded_file($_FILES['UserFile']['tmp_name'])) 
die("<b><font color=red>Файл не был загружен! Попробуйте <a href=?>повторить попытку</a>!</font></b>"); 

// Если файл удачно загружён на сервер, делаем вот что... 

else 
{ 
    // Переносим загружённый файл в папку $path 

    if(@!copy($_FILES['UserFile']['tmp_name'],$path.chr(47).$_FILES['UserFile']['name'])) 

    // Если не удалось перенести файл, выводим ошибку: 

    die("<b><font color=red>Файл не был загружен! Попробуйте <a href=?>повторить попытку</a>!</font></b>"); 

    // Если всё Ok, то выводим инфо. о загружённом файле. 

    else 
    echo 
    "<center><b>Файл \"<font color=red>".$_FILES['UserFile']['name']."\"</font> успешно загружён на сервер!</font></b></center>". 
    "<hr>". 
    "Тип файла: <b>".$_FILES['UserFile']['type']."</b><br>". 
    "Размер файла: <b>".round($_FILES['UserFile']['size']/1024,2)." кб.</b>". 
    "<hr><center><a href=?>Загрузить ещё один файл!</a></center>"; 
} 
?>
 
A

AkeL.php

Guest
Ответ: PHP и с чем его едят....

Сам написал?
 

KoLoB

KoLoB.cz
Ответ: PHP и с чем его едят....

Спасибо. Проблемма уже решилась выше.
Но мне такой огромный и весь скрипт не к чему.

2Akel: Да какая разница, сам не сам. Главное что помог :)
2Все: Спасибо за помощь. Если ещё будут вопросы буду спрашивать.

З.Ы. А когда долго рнр не запимаешься - начинаешь его забывать :)
 
Зверху