2013-04-11 5 views
0

Я искал всюду для помощи в этом, но не могу найти ответ. У меня есть форма, где люди могут ввести поисковый запрос. После нажатия кнопки «Отправить» он ссылается на страницу PHP, которая ищет термин, введенный против 3 полей в моей БД. Все это прекрасно работает. Я хочу добавить кнопку для каждого отображаемого результата, который позволяет мне щелкнуть, чтобы добавить к увеличивающемуся числу.обновить текущую строку

Это работает, если я определяю, какую строку я хочу обновить в своей инструкции запроса, поскольку она перенаправляется на себя после нажатия кнопки; но я хочу, чтобы кнопка обновляла запись, показанную в результатах, а не определенную запись.

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

Вот текущий код:

if($_POST['like']){ 

$add =("UPDATE Players SET played=played+1 WHERE SquadNo=11"); 
$result = mysql_query($add) or die(mysql_error()); 

} 

Как вы можете видеть, что я определил squad number 11 в данный момент, но хотите обновить текущую строку.

Вторая проблема, второстепенная на данном этапе, заключается в том, что, когда я нажимаю кнопку, чтобы увеличить значение, кажется, что он обновляет поиск и предоставляет другой набор результатов после того, как приращение произошло. Как я могу предотвратить это?

Спасибо, и я надеюсь, что это имеет смысл.

Вот мой полный код:

<?php 
mysql_connect ("localhost", "USER","PASSWORD") or die (mysql_error()); 
mysql_select_db ("TABLE"); 

if($_POST['like']){ 


    $add =("UPDATE Players SET played=played+1 WHERE SquadNo=11"); 
    $result = mysql_query($add) or die(mysql_error()); 

    } 

$term = $_POST['term']; 

$sql = mysql_query("select * from Players where POS like '%$term%' or POS2 like '%$term%' or POS3 like '%$term%' "); 

while ($row = mysql_fetch_array($sql)){ 
    echo 'Name: '.$row['Name']; 
    echo '<br/> Surname: '.$row['Surname']; 
    echo '<br/> Position 1: '.$row['POS']; 
    echo '<br/> Position 2: '.$row['POS2']; 
    echo '<br/> Position 3: '.$row['POS3']; 
    echo '<br/> Squad Number: '.$row['SquadNo']; 
    echo '<br/> Played: '.$row['played']; 
    echo '<br/><br/>'; 
    echo'<form method="post" action="' . $_SERVER[PHP_SELF]. '"> 
    <input type="submit" name="like" value="like"><br> 
</form>'; 
     echo '<br/><br/>'; 

    } 

?> 

ответ

2

Вы должны отслеживать, какие строки на кнопки, например,

<form ...> 
    <input type="hidden" name="rowID" value="$row['record_id']" /> 
    <input type="submit"> 
</form> 

Затем сделать эквивалент

UDPATE yourtable SET ... WHERE row_id = $row_id_from_form 
+0

Скрытых полей являются очень полезными в этих случаях, таким образом каждая запись связана с определенным 'rowId' для каждой строки, отображаемых – kabuto178

+0

Спасибо за возвращение к меня на этом @MarcB и всех остальных, очень ценю. Я вижу, как это работает, и теория, стоящая за ней, но я думаю, что мой плохой идентификатор выполнения не позволяет ему работать. Число не увеличивается, но обновляет страницу, я сделал что-то неправильно? \t echo '


'; – user2271378

+0

код инкрементирования находится в том же месте, что и выше, и является , если ($ _ POST [ 'играет']) { \t $ ROWID = $ _POST [ 'RowId']; $ add = ("UPDATE Players SET играл = играл + 1 WHERE SquadNo = '. $ Rowid.'"); $ result = mysql_query ($ add) или die (mysql_error()); \t \t} – user2271378

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