2015-01-05 2 views
0

Здравствуйте, меня зовут Патрик, и это мой первый вопрос, извините, но я не очень хорош в PHP. вероятно, есть больше улучшений, но этот пост для вопросов. (Но улучшения также приветствуются)PHP, если опция выбрана, выбранная опция не может быть выбрана повторно в других вариантах

Вопрос:

Вы можете выбрать команду из 2-х монстров // Чудовище подбирается форма базы данных

Вопрос заключается в том: если вы выбираете 1 монстр, как я могу исправить что вы не можете выбрать того же монстра на опции 2?

PHP КОД:

Действие 2 заполните кнопки

<?php 
session_start(); 
include("header.php"); 

if(!isset($_SESSION['uid'])){ 
    echo "You must be logged in to view this page!"; 
}else{ 
    if (isset($_POST['save'])) { 
    if ($_POST['save'] == 'keuze4') { 

     $fuelQuery4 = sprintf("UPDATE user_team SET `m_keuze4` = '%s' WHERE `id`='".$_SESSION['uid']."' ", 
         mysql_real_escape_string($_POST['option4'])); 
     $Result = mysql_query($fuelQuery4); 
      if($Result){ 
      echo 'Team is aangepast!'; 
      } 


    } elseif ($_POST['save'] == 'keuze5'){ 

     $fuelQuery5 = sprintf("UPDATE user_team SET `m_keuze5` = '%s' WHERE `id`='".$_SESSION['uid']."' ", 
         mysql_real_escape_string($_POST['option5'])); 
     $Result = mysql_query($fuelQuery5); 
      if($Result){ 
      echo 'Team is aangepast!'; 
      } 
    } 

    echo '';} 

?> 

Получить базу данных монстров формы и положить его в списке выбора

<?php 
$get=mysql_query("SELECT * FROM user_monsters WHERE `id`='".$_SESSION['uid']."' ORDER BY usid ASC"); 
$option4 = ''; 
while($row = mysql_fetch_assoc($get)) 
{ 
    $option4 .= '<option value = "'.$row['usid'].'">'.$row['usid'].' - '.$row['monster'].' - '.$row['type'].'</option>'; 
} 
?> 

Покажите выбранный пункт

<?php 

$k4 = mysql_query(" 


SELECT user_team.m_keuze4, user_monsters.usid, user_monsters.monster, user_monsters.type, user_monsters.attack, user_monsters.defense 
FROM user_team 
INNER JOIN user_monsters 
ON user_team.m_keuze4=user_monsters.usid 
ORDER BY user_monsters.type; 

"); 
while($row4 = mysql_fetch_assoc($k4)) 
{ 
$k4_1 = ''.$row4['m_keuze4'].' - '.$row4['monster'].' - '.$row4['type'].' - '.$row4['attack'].' - '.$row4['defense'].''; 
} 

?> 

Вариант 5 тот же код, как 4:

<?php 
$get=mysql_query("SELECT * FROM user_monsters WHERE `id`='".$_SESSION['uid']."' ORDER BY usid ASC"); 
$option5 = ''; 
while($row = mysql_fetch_assoc($get)) 
{ 
    $option5 .= '<option value = "'.$row['usid'].'">'.$row['usid'].' - '.$row['monster'].' - '.$row['type'].'</option>'; 
} 
?> 

<?php 

$k5 = mysql_query(" 


SELECT user_team.m_keuze5, user_monsters.usid, user_monsters.monster, user_monsters.type, user_monsters.attack, user_monsters.defense 
FROM user_team 
INNER JOIN user_monsters 
ON user_team.m_keuze5=user_monsters.usid 
ORDER BY user_monsters.type; 

"); 
while($row5 = mysql_fetch_assoc($k5)) 
{ 
$k5_1 = ''.$row5['m_keuze5'].' - '.$row5['monster'].' - '.$row5['type'].' - '.$row5['attack'].' - '.$row5['defense'].''; 
} 

?> 

Форма

<form action="team.php" method="post"> 

<select name="option4"> 
<?php echo $option4; ?> 
</select><br><br>Keuze 4 
<?php 
echo $k4_1; 
    ?><br><br> 
<input type="submit" name="save" value="keuze4"/> 
</form> 

<form action="team.php" method="post"> 
<select name="option5"> 
<?php echo $option5; ?> 
</select><br><br>Keuze 5 
<?php 
echo $k5_1; 
    ?><br><br> 
<input type="submit" name="save" value="keuze5"/> 
</form> 
+0

mysql_ * функции устарели, используйте mysqli или PDO. –

+1

Вы можете использовать javascript, и когда монстр выбран в одном окне, удалите его из другого; или в PHP, когда выбрана форма, добавьте проверку, чтобы убедиться, что параметр4 не совпадает с параметром5. Я думаю. Ваш код очень запутан, и я не совсем уверен, что правильно понял логику. – andrewsi

+0

Это мой первый проект, если вы видите, что некоторые думают, что это можно сделать проще, пожалуйста, разместите его ниже –

ответ

2

В PHP лучшее, что вы можете сделать флажок один раз его отправил:

if (isset($_POST['save'])) { 
    if (filter_input(INPUT_POST,'option4') == filter_input(INPUT_POST,'option5')){ 
    echo "Sorry. You can't select the same monster twice"; 
    }else{ 
    //your db insert logic goes here 
    } 
} 

Это wo uld будет хорошей идеей также включить некоторый javascript, чтобы предупредить пользователя перед тем, как отправить форму. Этот пример использует JQuery

$('[name="option4"],[name="option5"]').change(function(){ 
    if ($('[name="option4"]').val() == $('[name="option5"]').val()){ 
     alert('you already chose that monster, please choose another'); 
    } 
}); 

форме

<form action="team.php" method="post"> 

    <select name="option4"> 
     <?php echo $option4; ?> 
    </select><br><br>Keuze 4 
    <?php 
    echo $k4_1; 
    ?><br><br> 
    <input type="submit" name="save" value="keuze4"/> 
</form>         <!-- remove this line--> 

<form action="team.php" method="post"> <!-- and this line--> 
    <select name="option5"> 
     <?php echo $option5; ?> 
    </select><br><br>Keuze 5 
    <?php 
    echo $k5_1; 
    ?><br><br> 
    <input type="submit" name="save" value="keuze5"/> 
</form> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 

<script> 
    $(function() { 
     $('[name="option4"],[name="option5"]').change(function() { 
      if ($('[name="option4"]').val() == $('[name="option5"]').val()) { 
       alert('you already chose that monster, please choose another'); 
      } 
     }); 
    }); 
</script> 

Действие из 2 кнопок нажмите кнопку

if (isset($_POST['save'])) { 
     if (filter_input(INPUT_POST, 'option4') == filter_input(INPUT_POST, 'option5')) { 
      echo "Sorry. You can't select the same monster twice"; 
     } else { 
      if ($_POST['save'] == 'keuze4') { 

       $fuelQuery4 = sprintf("UPDATE user_team SET `m_keuze4` = '%s' WHERE `id`='" . $_SESSION['uid'] . "' ", mysql_real_escape_string($_POST['option4'])); 
       $Result = mysql_query($fuelQuery4); 
       if ($Result) { 
        echo 'Team is aangepast!'; 
       } 
      } elseif ($_POST['save'] == 'keuze5') { 

       $fuelQuery5 = sprintf("UPDATE user_team SET `m_keuze5` = '%s' WHERE `id`='" . $_SESSION['uid'] . "' ", mysql_real_escape_string($_POST['option5'])); 
       $Result = mysql_query($fuelQuery5); 
       if ($Result) { 
        echo 'Team is aangepast!'; 
       } 
      } 
     } 
    } 

Редактировать снова,

Demo Fiddle от js

+0

Можете ли вы, пожалуйста, помочь мне, где мне нужно вставить код? я пробовал много способов, но это не будет работать хорошо. –

+0

Теперь, когда ваш ответ правильный, но я не работаю. Первый код ниже Действие кнопок 2 sumbit То же, что и мой код, Я вижу только изменения ниже формы с помощью javascript, но это не работает. –

+0

Я не лучший соблазн в том, что с JS PHP //! Я вижу, что это работает (JAVASCRIPT), но вы все равно можете сохранить, если вы нажмете ошибку –

Смежные вопросы