Timen van output PHP array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco Hendriks

Marco Hendriks

21/09/2012 14:37:24
Quote Anchor link
Ik ben bezig met mijn interactieve scriptie vormgeving, dit wil ik doen doormiddel van twitter en een eigen geschreven applicatie. Nu is bijna alles gelukt op dit laatste kleine ding na. Ik gebruik een script om tweets automatisch te sturen van uit een array. Nu lukt het me om de hele array in een keer naar mijn account te sturen. Maar wat ik wil is dat er een timer op staat zo dat bijv om de 30 min een deel gestuurd word. Bijv tweet1[0] en dan 30 min tweet2[1]. Maar ik kom er maar niet achter hoe ik dit kan doen.

Dit is mijn script:

$tweettext = array('test1 autotwitter #IOT', 'test2 autotwitter #IOT', 'test3 autotwitter #IOT', 'test4 autotwitter #IOT', 'test5 autotwitter #IOT');

foreach ($tweettext as $autotweet) {
//echo $autotweet;
$tweet->post('statuses/update', array('status' => $autotweet ));
}

Al vast bedankt.
 
PHP hulp

PHP hulp

25/04/2024 03:02:27
 
Kris Peeters

Kris Peeters

21/09/2012 15:12:53
Quote Anchor link
Je kan Ajax gebruiken.

Om de 30 minuten neemt Ajax contact op met de server, met de juiste index. Index wordt telkens geïncrementeerd ...


Deze code kan je stand alone uittesten. Het doet al ongeveer wat je nodig hebt.
Kwestie dat je geen 2 uur moet wachten, heb ik het interval op 5 seconden gezet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
if (isset($_GET['ajax'], $_GET['index'])) {
  $tweets = array(
    'Tweet 1', 'Tweet 2', 'Tweet 3', 'Tweet 4', 'Tweet 5'
  );
  if ((int) $_GET['index'] < count($tweets)) {
    $tweet = $tweets[(int) $_GET['index']];
    // nu kan je doen wat je moet doen.  Zie je eigen script ...
    
    // stuur je nog een bericht naar javascript terug.  In dit geval toon in de tweet ('t is een demo ...), maar je kan ook bv. gewoon een '1' echo'en

    echo $tweet;
  }

  else {
    echo "";  // de tweets zijn op.  Door javascript te vertellen dat er niets meer te zeggen valt, valt te timer stil.
  }
  // De rest van de pagina mag niet uitgevoerd worden.
  exit;
}

?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset=utf-8>
    <title>Ajax gebruiken als timer</title>
  </head>
  <body>
    
    <div id="message"></div>
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script>
      $(document).ready(function($) { // wordt uitgevoerd als de pagina geladen is
        var index = 0;
        var interval = 5000;  // mijn interval staat op 5 seconden.  Pas zelf maar aan  (30 minuten = 1000 * 60 * 30 ms)
        sendTweet(); // de timer op gang trekken
        
        // functie de de tweet verzendt.
        function sendTweet() {
          $.ajax({
            url: 'index.php?ajax=1&index=' + index,
            success: function(message) {
              if (message == '') {
                return false;  // na de laatste tweet stoppen we de timer
              }
              // boodschap tonen in de div
              $('#message').html(message);
              
              // index incrementeren en de functie opnieuw uitvoeren.  zo lang php een boodschap blijft sturen.
              index++;
              setTimeout(
                sendTweet,
                interval
              );  // sendTweet() opnieuw uitvoeren over ... seconden/minuten
            }
          })
        }
      })
    </script>
  </body>
</html>
 
Marco Hendriks

Marco Hendriks

21/09/2012 15:42:03
Quote Anchor link
dank je wel voor het script. Ik krijg het alleen nog niet werkend maar dat lukt nog wel denk ik. Maar ik vroeg me af is er geen makkelijkere mannier bijv met Jqeury ofzo (ik kan het ook helemaal mis hebben hoor)?
Gewijzigd op 21/09/2012 15:42:29 door Marco Hendriks
 
Kris Peeters

Kris Peeters

21/09/2012 15:45:21
Quote Anchor link
Dit is Ajax met jQuery.
Veel eenvoudiger dan dit wordt het niet ...
 
Marco Hendriks

Marco Hendriks

21/09/2012 15:46:21
Quote Anchor link
oke dank je :)
 
Marco Hendriks

Marco Hendriks

04/10/2012 15:27:11
Quote Anchor link
Ik heb er nog even in gedoken en heb het uit eindelijk werkend gekregen. Alleen zo gauw ik het aan mijn twitter php koppel krijg ik een fout melding.

Fatal error: Call to a member function post() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/Scriptie/twitter/test.php on line 19

Ik weet wat het betekend alleen hoe los ik het op?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
    $consumerKey
    = '--';
    $consumerSecret = '--';
    $oAuthToken     = '--';
    $oAuthSecret    = '--';
    
    require_once('twitteroauth.php');
    
    $tweet2 = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret);

    if (isset($_GET['ajax'], $_GET['index'])) {
    
      $tweets = array('Tweet 1', 'Tweet 2', 'Tweet 3', 'Tweet 4', 'Tweet 5');
    
      if ((int) $_GET['index'] < count($tweets)) {
        $tweet = $tweets[(int) $_GET['index']];
        
        // nu kan je doen wat je moet doen.  Zie je eigen script ...
        $tweet2->post('statuses/update', array('status' => $tweets ));
    
        // stuur je nog een bericht naar javascript terug.  In dit geval toon in de tweet ('t is een demo ...), maar je kan ook bv. gewoon een '1' echo'en
        echo $tweet;
      }

      else {
        echo "";  // de tweets zijn op.  Door javascript te vertellen dat er niets meer te zeggen valt, valt te timer stil.
      }
      // De rest van de pagina mag niet uitgevoerd worden.
      exit;
    }

?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
<!DOCTYPE html>
<
html lang="en">
  <
head>
    <
meta charset=utf-8>
    <
title>Ajax gebruiken als timer</title>
  <
/head>
  <
body>
        
    <
div id="message">
    
    <
/div>
    
    <
script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

    <script>
      $(document).ready(function($) { // wordt uitgevoerd als de pagina geladen is
        var index = 0;
        var interval = 5000;  // mijn interval staat op 5 seconden.  Pas zelf maar aan  (30 minuten = 1000 * 60 * 30 ms)
        sendTweet(); // de timer op gang trekken
        
        // functie de de tweet verzendt.
        function sendTweet() {
          $.ajax({
            url: 'test.php?ajax=1&index=' + index,
            success: function(message) {
              if (message == '') {
                return false;  // na de laatste tweet stoppen we de timer
              }
              // boodschap tonen in de div
              $('#message').html(message);
              
              // index incrementeren en de functie opnieuw uitvoeren.  zo lang php een boodschap blijft sturen.
              index++;
              setTimeout(
                sendTweet,
                interval
              );  // sendTweet() opnieuw uitvoeren over ... seconden/minuten
            }
          })
        }
      })
    </script>
  </body>
</html>
?>
Gewijzigd op 04/10/2012 15:27:41 door Marco Hendriks
 
Kris Peeters

Kris Peeters

04/10/2012 16:51:06
Quote Anchor link
De foutmelding vertelt je dat $tweet2 op lijn 19 geen object is.

Dat zou dus willen zeggen dat lijn 9:
( $tweet2 = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret); )

niet gelukt is en geen object terug geeft.

Test dit eens door op lijn 10 dit te zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>' . print_r($tweet2, 1) . '</pre>';
?>

Ik zou dus verwachten dat dat geen object is.
 
Marco Hendriks

Marco Hendriks

04/10/2012 16:54:37
Quote Anchor link
dan krijg ik de zelfde foutmelding...
En het klopt wat je zegt omdat het geen objecten zijn geeft hij deze fout melding. Ik dacht dat je het kon oplossen door middel van ( $tweet2 = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret); ) aan tepassen maar hoe....
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.