Вопрос по PHP / MySQL [связанный с facebook] - PullRequest
0 голосов
/ 05 января 2010

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

Другими словами, это в основном проблема 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>"; 

1 Ответ

0 голосов
/ 05 января 2010

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

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

Обновление

Удалить вызов на users_setStatus из цикла while. Измените свою форму следующим образом:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...