2013-10-05 3 views
0

Это моя проблема в течение почти недели, и я не могу ее решить.Javascript: нажмите кнопку ОТМЕНА, сохраняя данные

Сценарий:

Перед тем, как сохранить данные сообщения об появится подтверждение о том, что ... Station is full. do you want to continue saving? ... потом, когда я попытался отменить это, его все еще сохраняя данные ..

Нажатие кнопка не будет экономить больше ....

Если предположить, что у меня есть Название здания ОТМЕНА: Star 1, и звезда 2 ...

"Star 1" и «Звезда 2» будет стоить $ bldg .. тогда общая продолжительность для STAR 1 составляет 08:00:00 [это уже заполнено], а затем для STAR 2 00:00:00 [еще не существует в базе данных]

Вот мой код:

if (isset($_GET['js_varOK'])) 
$cancel = $_GET['js_varOK']; 
else $cancel = "not"; 

    if($cancel != "yes") 
    { 
     for($i=0; $i<sizeof($bldg);$i++) 
     { 
     if($cancel != "yes") 
     { 
     $result = mysql_query("SELECT * FROM tbldata WHERE fldNetname = '".$network."' AND fldBldgName = '".$bldg[$i]."' AND fldWeek = '".$week."' AND fldMonth = '".$month."' AND fldYear ='".$year."' ORDER BY id desc"); 
     if(mysql_num_rows($result)==0) 
     { 
     $totalduration = ""; 
     $seconds = 0; 
     $minutes = 0; 

     $computeSecMin = $seconds * $minutes; 
     $subSecMin = $computeSecMin + $duration; 
     $getMin = floor($subSecMin/60); 
     $getSec = $subSecMin%60; 
     $totalduration = $getMin .":". $getSec; 
     $query2 = "INSERT INTO tbldata(fldNetname,fldBldgName,fldPlaylist,fldMonth,fldWeek,fldYear,fldDuration,fldFrom,fldTo,fldTotalDuration,fldTimestamp,fldStatus, fldUser) VALUES ('".$network."','".$bldg[$i]."','".$AdName."','".$month."','".$week."','".$year."','".$duration."','".$from."','".$to."', '".$totalduration."','".$date."','".$status."',(SELECT fldid from tblmembers where fldUsername= '".$_SESSION['user']."'))"; 
     mysql_query($query2) or die (mysql_error());  

     echo "<script type='text/javascript'>\n"; 
     echo "alert('Data have been saved first!');\n"; 
     echo "</script>";  
     } 
     else 
     { 
     while ($row = mysql_fetch_array($result)) 
     { 
     if($network == "Mass and Mobile" && $row[fldTotalDuration] == "08:00:00" && $duration >= "0 s") 
     {?><?php 
     if(sizeof($bldg) == 1) 
     { 
     echo "<script type='text/javascript'>\n"; 
     echo "alert('$bldg[$i] station is already full.');\n"; 
     echo "window.location='booking_content.php'"; 
     echo "</script>"; 
     } 
     else 
     { ?> 
     <script> 
     var myVar = "station is already full. Do you want to save the other networks?"; 
     var js_varOK; 
     var bldg; 
     var network; 
     if (confirm(myVar)) 
     { 
     js_varOK = "no"; 
     bldg = "<?php echo $bldg?>"; 
     network= "<?php echo $network?>"; 
     window.location = "?js_varOK=" + js_varOK + "&bldg="+bldg + "&network="+network; 
     } else 
     { 
     js_varOK = "yes"; 
     window.location = "?js_varOK=" + js_varOK; 

     } 
     </script> 
     <?php 
     } 

     } 
     } 

    } 
    else 
    { 
     //do noothing 
    } 

Так что, когда я ударил ОТМЕНА будет просто пойти else of do nothing ... но его до сих пор сохранение ..

основе мое понимание ... STAR 1 будет первый, чтобы прочитать программу для цикла for, и после этого он перейдет к "if($network == "Mass and Mobile" && $row[fldTotalDuration] == "08:00:00" && $duration >= "0 s")", тогда появится всплывающее сообщение, после чего я нажму кнопку отмены, тогда значение $cancel уже «да», тогда STAR 2 уже сохранен в моя база данных, это должно быть остановить программу, чтобы сохранить его, когда отменить щелкнул ....

спасибо ..

+0

Откуда берется значение $ cancel? В первой строке вы проверяете, является ли оно «да», но вы не показываете, как/где он устанавливается. – echosa

+0

@ echosa..sorry, я забыл включить это ... Я редактирую свой пост ... – user2826499

+1

Сделайте оценку $ _GET в своем первом, если стате. Обычно я делаю предупреждение(); Вы также не используете {}. Поэтому очистите if, и сделайте предупреждение о том, что возвращает isset(). Я бы соответствовал этому значению по сравнению с наличием ключа. –

ответ

0

Ваша переменная $_GET['js_varOK']устанавливается в обоих случаях. Это просто пусто, если вы не хотите экономить.

пытаются доказать, как это:

if (isset($_GET['js_varOK']) && $_GET['js_varOK'] != '') { // better way: .. && $_GET['js_varOK'] == 'yes' 
    echo 'save'; 
} else { 
    echo 'dont save'; 
} 

Я рекомендую, чтобы очистить ваш немного кода. Используйте

if ($a == $b) { 
    echo 'yes'; 
} else { 
    echo 'no'; 
} 

вместо

if ($a == $b) echo 'yes'; 
else echo 'no'; 

Это просто немного больше кода, но не то, что подвержено ошибкам.

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