2016-02-02 6 views
4

У меня проблема с синтаксисом моего кода правильно, и мне нужна помощь. Я хотел бы использовать оператор if и если isset с несколькими переменными. Мой существующий код - это.PHP - if statement - with - if isset - using multiple variables issue

$album_name = $_POST['album_name']; 
$img = $_POST['image']; 
$artist = $_POST['artist']; 
$company = $_POST['company']; 
$genre = $_POST['genre']; 
$price = $_POST['price']; 
$buy_now = $_POST['buy_now']; 

if($album_name !='') && if (isset($artist, $company, $price, $buy_now)){ 
    $sql = mysql_query ("INSERT INTO top_albums_info (album_name, image, artist,company,genre,price,buy_now) VALUES ('$album_name','$img','$artist','$company','$genre','$price','".$buy_now."') "); 
    echo'<meta http-equiv="refresh" content="0;url=../index.php?page=top_section&action=list">'; 
}else{ 
    echo'<meta http-equiv="refresh" content="0;url=../index.php?page=top_section&action=add&msg=empty">'; 
} 

?> 

Как я могу объединить их?

Спасибо.

+0

Это слишком поздно, чтобы использовать IsSet там. Переменные HAVE BEEN установлены ранее. Где вы действительно хотите isset: '$ img = (isset ($ _ POST ['image']))? $ _POST ['image']: ''; ' –

ответ

2

Изменение этой линии

if($album_name !='') && if (isset($artist, $company, $price, $buy_now)){ 

в

if ($album_name!='' && isset($artist, $company, $price, $buy_now)) { 
+0

Нет. Слишком поздно проверить, установлены ли они. Эти переменные уже установлены .... –

+0

isset() также проверяет значение null. Но если отправляющая форма всегда отправляет эти поля, следует использовать '! Empty()'. – slbteam08

+0

Я хочу сказать, что код будет вызывать все виды уведомлений, если переменные $ _POST не установлены. –

2

Измените линия

if (isset($artist, $company, $price, $buy_now)){ 
if($album_name !=''){ 
} 
} 

Это будет работать наверняка

2

Try использовать как:

$album_name = $_POST['album_name']; 
$img = $_POST['image']; 
$artist = $_POST['artist']; 
$company = $_POST['company']; 
$genre = $_POST['genre']; 
$price = $_POST['price']; 
$buy_now = $_POST['buy_now']; 

if(!empty($album_name) && isset($album_name,$artist,$company,$price,$buy_now)){ 
    $sql = mysql_query ("INSERT INTO top_albums_info (album_name, image, artist,company,genre,price,buy_now) VALUES ('$album_name','$img','$artist','$company','$genre','$price','".$buy_now."') "); 
echo'<meta http-equiv="refresh" content="0;url=../index.php?page=top_section&action=list">'; 
}else{ 
    echo'<meta http-equiv="refresh" content="0;url=../index.php?page=top_section&action=add&msg=empty">'; 
} 

Более подробно о isset(): http://php.net/manual/en/function.isset.php

3

Лично я обрабатывать формы представления совершенно по-разному.

НО, учитывая структуру вы предоставили, я бы рекомендовал делать вещи немного по-другому для удобства:

// create a list of fields to check in an array 
$fields = array(
    'album_name', 
    'image', 
    'artist', 
    'company', 
    'price', 
    'buy_now' 
); 

// iterate over the fields defined in your array 
foreach ($fields AS $field) { 
    // assign the value to the variable ONLY IF the $_POST is set, otherwise empty string 
    ${$field} = (isset($_POST[$field])) ? $_POST[$field] : ''; 
} 

// Now you KNOW its set, so you just check if the field "is" 
if ($album_name && $image && $artist && $company && $price && $buy_now) { 
    // Do stuff. Form submitted and complete 
} else { 
    // Do other stuff. Form not submitted or incomplete 
} 

When you write `if ($album)`, it's essentially the same as `if ($album != '')`