Witam. Piszę system głosowania z wykorzystaniem AJAX, MySQL i PHP. Chcę aby każde kliknięcie na daną gwiazdkę spowodowało wykrycie ID danego postu na którym odbyło się głosowanie. Po pierwsze problem z grubsza polega na tym, że pojawiają mi się rekordy w bazie natomiast są one NOWE a miały być dodawane (modyfikowane) do obecnych rekordów. Już pokazuję: http://imageshack.com/a/img537/2821/SRMZg4.png
Jak widzicie - tworzą się nowe rekordy o czym wspomniałem wcześniej. Teraz pokażę kod:
Ten kod poniżej ma za zadanie wyciągać ID dla każdego postu na stronie, stąd baza miałaby wiedzieć gdzie (w którym poście) należy zaktualizować pola w rekordach. Dalej w kodzie jest po prostu front, tego nie chciałem już wklejać bo jest go za dużo.
while($query2=mysqli_fetch_array($query))
{
$post_id = $query2['id'];
Ten kod poniżej to mechanizm wysyłający postem informacje po kliknięciu na jakąś gwiazdkę:
$('.rate-btn').click(function(){
var therate = $(this).attr('id');
var dataRate = 'act=rate&post_id=<?php echo $post_id; ?>&rate='+therate; //
$('.rate-btn').removeClass('rate-btn-active');
for (var i = therate; i >= 0; i--) {
$('.rate-btn-'+i).addClass('rate-btn-active');
};
$.ajax({
type : "POST",
url : "http://localhost/rating/ajax.php",
data: dataRate,
success:function(){}
});
});
});
Zaś poniżej jest plik ajax.php
<?php
require_once 'connect.php';
if(isset($_POST['act'])){
//search if the user(ip) has already gave a note
$ip = $_SERVER["REMOTE_ADDR"];
$therate = $_POST['rate'];
$thepost = $_POST['post_id'];
$query = mysqli_query($link, "SELECT * FROM mieszkania where ip= '$ip' ");
while($data = mysql_fetch_assoc($query)){
$rate_db[] = $data;
}
if(count($rate_db) == 0 ){
mysqli_query($link,"INSERT INTO mieszkania (id_post, ip, rate)VALUES('$thepost', '$ip', '$therate')");
}else{
mysqli_query($link,"UPDATE mieszkania SET rate= '$therate' WHERE ip = '$ip'");
}
}
?>
Chciałem skorzystać z polecenia INSERT INTO z jakimś warunkiem ale w międzyczasie doczytałem, że nie można skonstruować tego polecania z klauzulą WHERE. Czy jakiś magik forumowy jest w stanie przynajmniej nakierować mnie na rozwiązanie ? Dziękuje z góry i pozdrawiam.