2017-01-05 4 views
1

, поэтому я работаю над школьным проектом по созданию веб-сайта с портфолио, одна из основных необходимых функций - создать понравившуюся кнопку для изображений , Я использую xampp для размещения файлов и базы данных. Я пытаюсь сделать так, чтобы каждый раз, когда пользователь нажимает кнопку, он добавляет +1 в столбец «любит» в таблице, но он, похоже, не работает. Я по-прежнему новичок в этом, поэтому было бы очень полезно объяснение. это блок кода, который, какпытается создать подобный счетчик кнопок в таблице mysql, но UPDATE SET не работает

<h1><?php echo $_SESSION['name'] ?>'s work </h1> 
<?php 



$username ="root"; 
$password =""; 
$hostname ="localhost"; 

//connection to database 

$conn = mysqli_connect($hostname,$username,$password) 
or die("unable to connect to my SQL"); 

$lastid = $_SESSION['user']; 

$image3 = "SELECT * FROM staff.image WHERE `user`='$lastid' "; 
$r=mysqli_query($conn, $image3); 

while ($row = mysqli_fetch_array($r)) 
{ 
?> 


<ul id="rig"> 
    <li> 
     <a class="rig-cell"> 
      <?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row['img']) . '" align="middle" height=50% " />'; ?> 

      <span class="rig-overlay"></span> 
      <span class="rig-text"> <?php echo $row['img_name']."<br>"; ?></span> 




     </a> 
      <form method="POST" action="" class="radiowrapper" > 
      <input class="like" type="submit" name="problem" value="<?php echo $row['img_id']; ?>" id="name_<?php echo $row['img_name']; ?>"> 
      </form> 
    </li> 
</ul> 

<?php 
    if (isset ($_POST['problem'])) 
    { 
     echo $sql = "UPDATE staff.image SET likes='".$row['likes']."'+1 WHERE img_id='".$row['img_id']."'"; 

    } 
} 
?> 

У меня есть еще один файл, который позволяет пользователю загрузить изображение по своему выбору, и пишет для него имя, и сохраняет его в staff.image. здесь некоторые скриншоты

enter image description here

enter image description here

Я не очень понимаю эту проблему, и я пытался различными способами, чтобы написать функцию UPDATE, но безрезультатно. если я не понимаю что-то, вам потребуется больше деталей. Я отправлю его сразу. Спасибо заранее!

+1

'echo $ sql' снова посмотрите на это, а затем спросите себя. Плюс, вы никогда не задавали вопрос о том, что –

+0

Наверняка это то, что учебники для – RiggsFolly

+1

Я добавил эхо с целью проверить правильность переменной $ _POST, также если вы посмотрите на идентификатор таблицы, вы увидите, что я действительно пробовал 80 + раз, чтобы сделать эту работу, и просмотрел много видеороликов, объясняющих это, из моего понимания код должен быть правильным, я просто студент, который все еще учится, помогая и объясняя, что моя проблема, чтобы я мог учиться у него, было бы оценено – user3158009

ответ

2

Вам интересно, почему это повторяет запрос?

Просто, вы сказали ей:

if (isset ($_POST['problem'])) 
{ 
    echo $sql = "UPDATE staff.image SET likes='".$row['likes']."'+1 WHERE img_id='".$row['img_id']."'"; 
    ^^^^ 

} 

Кроме того, вы никогда не выполняется запрос.

Так,

//added this part after the while loop 

if (isset ($_POST['problem'])) 
    { 
     $sql = mysqli_query($conn, "UPDATE staff.image SET likes=likes+1 WHERE img_id='".$_POST['problem']."'"); 


    if($sql){ 
    echo "Success"; 
    } 
    else { 
     echo "<i>Houston, we have a problem:</i> " . mysqli_error($conn); 
     } 
} 
+0

Я бы отправился на 'SET likes = likes + 1' лично. Тогда вам нужен только ключ Row для запроса для работы – RiggsFolly

+0

@RiggsFolly True, но трудно сказать, что они действительно хотят сделать и как выглядит схема. –

+0

Хорошая точка, хорошо сделано. – RiggsFolly