2010-01-05 3 views
0

Хорошо. У меня возникла следующая проблема. В моем приложении facebook я позволял людям добавлять кавычки, отправляя их в мою БД с их user_id, post_id и date. Затем есть страница просмотра, где люди видят сообщения - пока что так хорошо. Но затем я добавляю кнопку, которая позволяет моим пользователям задавать указанный пост как свой статус. Все еще хорошо. Однако, когда я нажимаю кнопку, то, что она делает, устанавливает все записи в БД как мой статус, один за другим, пока все они не распечатываются как мои статусы. Я уверен, что это из-за функции «while», которую я использую, и потому, что я не уверен, как распечатывать все сообщения и быть в состоянии добавить к каждой указанной кнопке, удерживая только конкретный post_id из db ._. 'Вопрос PHP/MySQL [facebook-related]

Итак, другими словами, это/проблема PHP MySQL в основном, так что даже если вы не знакомы с FBML, вы можете помочь мне с кодом ...

Думай о нем в виде списка сообщений, и каждая из них должна иметь кнопку, которая делает что-то и как-то привязана только к определенному сообщению.

Код следующее:

.... some code here .... 

$query = 'SELECT * FROM tb_table ORDER BY `time` DESC'; 
$results = mysql_query($query); 

---some other code--- 

while($line = mysql_fetch_assoc($results)) { 
echo '<TABLE BORDER=0><TR VALIGN=TOP><TD>'; 
echo "<fb:profile-pic uid=".$line['userid']." size='square' facebook-logo='true'></fb:profile-pic></TD>"; 
echo "<TD>".$line['postid']."<br>"."<br>"."Posted by: ".$data['first_name'].$data['last_name']."<br>".date("F j, Y, g:i a", $line['fb_time'])."</TD>"; 
//Problems start from here 
echo $facebook->api_client->users_setStatus($line['postid']) ; 

echo '<div id="statusdiv" style="display:<?=$visibility;?>;"> 
    <form method="POST"> 
      <input type="submit" value="change status" /> 
    </form> 
</div> '; 
echo "</TR></TABLE><br>"; 

ответ

0

Дело вы делаете теперь каждый раз, когда вы цикл через тузд результирующем вы вызовите функцию users_setStatus которая затем устанавливает свой статус (для каждой итерации).

Вы хотите добавить скрытое поле ввода к форме, которая содержит $line['postid'], а затем позвонить по номеру users_setStatus после получения POST формы. Таким образом, вы меняете свой статус только один раз.

Update

Удалить вызов users_setStatus из цикла. Измените форму, как это:

echo '<div id="statusdiv" style="display:<?=$visibility;?>;"> 
    <form method="POST"> 
      <input type="submit" value="change status" /> 
      <input type="hidden" name="line" value="'.$line['postid]'.'" /> 
    </form> 
</div> '; 

Затем поймать переменную POST при подаче. С чем-то вроде:

if (isset($_POST['line'])) { 
echo $facebook->api_client->users_setStatus($_POST['line']) ; 
} 

См. http://www.w3schools.com/php/php_forms.asp для получения дополнительной информации.

+0

Спасибо! Теперь он работает:] – Izumi

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