2010-09-20 3 views
5

Dies ist der PHP-Code im in Verbindung mit jQuery .ajax eine neue Tweets zu erstellen:eine Antwort Erstellen von PHP und die Twitter-API

/* Create a TwitterOauth object with consumer/user tokens. */ 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']); 

    $qtweet = $_POST['tweet']; 
    $connection->post('statuses/update', array('status' => $qtweet)); 

Daten von Form und ein bisschen jQuery .ajax geliefert :

<form id="tweethis" method='post' action=''> 
    <textarea style="width: 42em;" name="tweet" rows="5" id="tweet" ></textarea> 
    <br /> 
    <p class="confirm" style="padding-bottom: 4px;">Tweet Sent.</p> 
    <span id="charLeft">140</span> Characters left 
    <br /> 
    <input type='submit' value='Tweet This!' name='submit' id='submit' /> 
</form> 

$("#tweethis #submit").click(function() { 
    //The Tweet 
    var tweettxt = $("textarea#tweet").val(); 
    var ptweettxt = 'tweet=' + tweettxt; 
    $.ajax({ 
     type: "POST", 
     url: "tweet.php", 
     data: ptweettxt, 
     success: function() { 
     $('#tweethis .confirm').css('color','red').slideDown(500).delay(3000).slideUp(500); 
     $('textarea#tweet').val(""); 
     } 
    }); 
    return false; 
}); 

ich das Formular möchten anzupassen mit Antworten auch umgehen, so kann der Benutzer die ID eines tweet klicken, wird die ID in das Formular eingefügt. Die FORM benötigt ein weiteres verstecktes Feld, das anfänglich leer ist. Wenn der Benutzer also eine Antwort-ID sendet, sendet er einfach einen Tweet.

Allerdings brauche ich etwas Code in der PHP-Datei, um zu überprüfen, ob der _POST leer ist oder null, wenn null nur einen Tweet senden, aber wenn es eine ID hat, eine Antwort erstellen.

Wie kann ich überprüfen, ob das Feld leer oder mit einer ID gefüllt ist?

Ich brauche auch Hilfe beim Erstellen der Antwort.

Die Dokumentation ist hier: http://dev.twitter.com/doc/post/statuses/update

Das ist, was ich bisher für die PHP geschrieben haben:

$qtweet = $_POST['tweet']; 
$tweetid = $_POST['tweetid']; 
$connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id => $tweetid')); 

nicht sicher, ob ich das Array richtig bin contructing oder ist dies akzeptabel, die Twitter API.

Die .ajax wird im Vergleich zu all dem trivial sein, da ich den versteckten Formularwert einfach als einen anderen Wert in der _POST übergeben werde.

Jede Hilfe mit dieser sehr geschätzt, dies ist das letzte, was für mich mein erstes PHP-Projekt abgeschlossen, ich habe meine eigenen Twitter-Client speziell für den Einsatz auf Konferenzen, wo ein Hashtag verwendet wird, um den Rückkanal zu verfolgen .

Antwort

0

Sie empty() verwenden zu überprüfen, ob etwas leer =)

auch brauchen Sie diese Zeile zu korrigieren ...

$connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id' => $tweetid)); 

Legen Sie die Variable nicht in Anführungszeichen

Vielleicht wie etwas

if (empty($_POST['tweetid'])) { 
    $connection->post('statuses/update', array('status' => $qtweet)); 
} 
else { 
    $connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id' => $_POST['tweetid'])); 
} 

Sie müssen nur in Form der ID von tweet setzen

+0

Während der Code korrekt ist, scheint es keine Antwort zu generieren. Der in_reply_to ... -Teil wird nicht ausgefüllt, wenn der Tweet gesendet wird. – CLiown

+0

Ich habe einen Fehler im Code behoben. Sie müssen sicherstellen, dass $ _POST ['tweetid'] gesetzt ist – Galen

1

Sie könnten das versteckte Feld auf dem Formular die ganze Zeit mit einem Standardwert von 0 haben. Dann in Ihrer Klick-Schließung verwenden Sie den Wert des versteckten Feldes und senden Sie es in Ihrem Ajax-Post.

Der PHP-Controller kann dann auf den gebuchten Wert schauen, wenn es 0 ist, sollte er den Beitrag zu twitters api als Status-Update erstellen. Wenn es größer als 0 ist, erstellen Sie den Post, um die Eigenschaft 'in_reply_to_status' mit dem Wert aus dem Formularpost hinzuzufügen.

Dann wird Ihr "Antwort" -Link einige JS haben, um dieses versteckte Formularelement mit der richtigen ID zu aktualisieren.

Nicht sicher, wie man die Post zu twitters api selbst obwohl zu konstruieren. Hoffe das hilft einigen.

0

ich glaube, das Problem ist, In diesem Codeschnipsel

'in_reply_to_status_id => $tweetid' 

Es sollte

'in_reply_to_status_id' => $tweetid 

Anders als das sein, Galens answer ist eine Überlegung wert.

0

Hier ist ein paar PHP, das in_reply_to_status_id enthält, wenn $_POST['tweetid'] nicht leer ist.

Ein letztes Problem mit der Twitter-API ist, dass Antworten den Bildschirmnamen des Benutzers enthalten müssen, der beantwortet wird. Wenn also @bob auf @sarah antwortet, muss @sarah in $_POST['tweet'] enthalten sein. Dieser Bildschirmname sollte in dem Textfeld enthalten sein, in dem der Benutzer die Antwort eingibt.

Verwandte Themen