2013-10-13 3 views
0

Я создал простую систему тегов для моих школьных сайтов для студентов. Теперь система тегов работает отлично, теперь я также должен сохранять теги в таблице уведомлений с соответствующим идентификатором статьи, чтобы позже уведомлять учащихся о том, в какой статье они были помечены даже в том, что мне удалось сделать. Но теперь, если случайно вы захотите удалить теги, которые когда-либо реализуются при вводе статьи, вам не нужно тегировать этого человека, тогда первый тег put также обновляется в db.запрос mysql выполняется, хотя поля пустые

// Ajax код (attach.php)

<?php 
include('config.php'); 
if(isset($_POST)) 
{ 
$u=$_POST['v']; 

mysql_query("INSERT INTO `notify` (`not_e`) VALUES ('$u')"); 
} 

?> 

// tagsystem код

расслоение плотной
<script type="text/javascript"> 
var id = '<?php echo $id ?>'; 
$(document).ready(function() 
{ 

var start=/%/ig; 
var word=/%(\w+)/ig; 

$("#story").live("keyup",function() 
{ 
var content=$(this).text(); 
var go= content.match(start); 
var name= content.match(word); 
var dataString = 'searchword='+ name; 

if(go.length>0) 
{ 
$("#msgbox").slideDown('show'); 
$("#display").slideUp('show'); 
$("#msgbox").html("Type the name of someone or something..."); 
if(name.length>0) 

{ 
$.ajax({ 
type: "POST", 
url: "boxsearch.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 
$("#msgbox").hide(); 
$("#display").html(html).show(); 
} 
}); 

} 
} 
return false(); 
}); 

$(".addname").live("click",function() 
{ 
var username=$(this).attr('title'); 
$.ajax({ 
type: "POST", 
url: "attach.php", 
data: {'v': username}, 
}); 
var old=$("#story").html(); 
var content=old.replace(word,""); 
$("#story").html(content); 
var E="<a class='blue' contenteditable='false' href='profile2.php?id="+username+"'>"+username+"</a>"; 
$("#story").append(E); 
$("#display").hide(); 
$("#msgbox").hide(); 
$("#story").focus(); 
}); 
}); 
</script> 
+0

гм, вопрос является 'MySQL запрос выполняется, даже если поля пусты' правильно? так что это потому, что 'attach.php' запускается каждый раз, когда вы нажимаете' .addname'; поэтому просто проверьте скрипт 'if ($ _ POST ['v'])' и в javascript: 'if (username)'; btw, если u r будет использовать 'mysql_query', используйте' mysql_real_escape_string' для вашей безопасности! 'mysql_query (" INSERT INTO notify (not_e) VALUES (.mysql_real_escape_string ($ u).) ");' – DaunnC

+0

Я проверил, что все та же проблема возникает – user2819237

+0

Можете ли вы отправить сообщение «var_dump ($ _ POST)» после отправки запроса? поэтому в теории код: 'if (isset ($ _ POST) && isset ($ _ POST ['v']) && $ _POST ['v'])' должен решить вашу проблему. – DaunnC

ответ

0

Похоже на появляется ваша проблема, если заявление в PHP код: даже если $ _POST ['v'] пуст, и sql все еще вызывается.

Существует цитата из другого потока:!.

" Используйте пустые вместо IsSet IsSet возвращает истину за $ _POST, потому что $ _POST массив суперглобальный и всегда существует (набор)

Или лучше. используйте $ _SERVER ['REQUEST_METHOD'] == 'POST' "

Или, на мой взгляд. Просто поместите

if ($_POST['v']){ 
    //sql query 
} 

Надеется, что это помогает;)

+0

извините, что ничего из этого не удалось :( – user2819237

0
<?php 
include('config.php'); 

$u = $_POST["v"]; 

//echo $a; 


    if($u != '') 
    { 

    mysql_query("your insert query"); 
    } 
    else 
     { 
     } 



?> 
+0

' if ($ _ POST ['v']) 'то же самое, потому что php-интерпретатор делает неявное преобразование типа в bool, но, у меня возникла идея, так что может случиться, что '$ _POST ['v']' не пуст, но имеет пробелы, так что возможный вариант мы можем сделать: '$ _POST ['v'] = preg_replace ('/ \ s + /', '', $ _POST ['v']) ' и после этого проверить' if ($ _ POST ['v']) 'условие. – DaunnC

+0

это не имело никакого значения, но одна вещь наверняка заключается в том, что запрос выполняется каждый раз, когда я выбираю тег, поэтому, если вы поможете мне разобраться, как я могу это предотвратить, это действительно поможет.Мне было интересно, не работает ли что-нибудь еще, я бы поставил запрос на удаление – user2819237

+0

Я изменил ваш код и проверил, что он работает отлично для меня, пожалуйста, проверьте сейчас. – rohitr

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