Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][MySQL][PHP]Automatyczne komentarze WP
Forum PHP.pl > Forum > Przedszkole
Patrykk_
witam, zrobiłem skrypt komentarzy. Działanie jakie chciałem osiągnąć, to takie, że skrypt miał automatycznie dodawać komenatarze do wpisów w których liczba komentarzy wynosi jakas liczbę bądź zero. no i tutaj zaczyna się problem, błędów zadnych nie wywala oprócz takiego ze jak wejdę w skrypt czyli adres_strony.com/script.php pokazuje się strona z napisem

"404 - Page Not Found !
The page you are looking for is not here. Perhaps search helps you. "

Skrypt także nie działa, może mi ktoś pomóc to naprawić? Chciałbym aby lista nicków była pobierana z tablicy tak samo jak komentarze.

Tutaj mój skrypt:

  1. <?php
  2. require_once( 'wp-blog-header.php' );
  3. // pobieranie komentarzy z pliku z tablicy
  4. require( 'komentarze.php' );
  5. // pobieranie uzytkownikow z pliku z tablicy
  6. require( 'uzytkownicy.php' );
  7.  
  8. // losowe nicki i komentarze
  9. shuffle($kom);
  10. shuffle($uzy);
  11.  
  12. // aktualna data i godzina
  13. $time = current_time('mysql');
  14. // ile koemntarzy musi miec post aby do niego dodac komentarz
  15. $ikom = '0';
  16. //ustanoweienie polaczenia z bazza SQL
  17. global $wpdb;
  18. // pobranie postów z liczbą komentarzy 0
  19. $posty = $wpdb->get_results("SELECT id, comment_count FROM {$wpdb->prefix}posts WHERE post_type='post' AND post_status='publish' AND comment_count= $ikom");
  20. $postyid = mysqli_fetch_array($posty);
  21. $id_posta = $postyid['ID'];
  22.  
  23. // ustawienia komentarza - wartości
  24. if ( $posty > 0 ){
  25. $data = array(
  26. 'comment_post_ID' => $id_posta,
  27. 'comment_author' => $uzy,
  28. 'comment_author_email' => 'admin@admin.com',
  29. 'comment_author_url' => 'http://',
  30. 'comment_content' => $kom,
  31. 'comment_type' => '',
  32. 'comment_parent' => 0,
  33. 'user_id' => rand(1,300),
  34. 'comment_author_IP' => '127.0.0.1',
  35. 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
  36. 'comment_date' => $time,
  37. 'comment_approved' => 1,
  38. );
  39.  
  40. wp_insert_comment($data);
  41. } else {
  42. echo "Brak postow do ktorych mozna dodac koemnatarze";
  43. }
  44. ?>


Tutaj plik uzytkownicy.php

  1. <?php
  2. $uzy[] = 'nuick jeden fajny';
  3. $uzy[] = 'alvara';
  4. ?>


A tutaj komentarze.php

  1. <?php
  2. $kom[] = 'kom pierwsyz';
  3. $kom[] = 'kom fajny drugi';
  4. ?>


W czym jest błąd, że nei wykonuje mi zapytania do SQL?? Hmm?
com
Cytat
404 - Page Not Found
strona nie istniej, widocznie inaczej się nazywa twój plik albo masz go w innym miejscu wink.gif
pedro84
Cytat(com @ 10.10.2013, 21:57:44 ) *
strona nie istniej, widocznie inaczej się nazywa twój plik albo masz go w innym miejscu wink.gif

Nie do końca.

Skoro to WP, to zapewne wszystkie żądania lecą do index.php. Na początek podaj dwie rzeczy:
1. zawartość .htaccess
2. lokalizację tego pliku
Patrykk_
okey, już wszystko wiem. komentarze dodały się, ale bez wszystkich wartości, istnieja ale nie mają autora, id tak jakby ten kod się nie wykonał do bazy

  1. $data = array(
  2. 'comment_post_ID' => $id_posta,
  3. 'comment_author' => $uzy,
  4. 'comment_author_email' => 'admin@admin.com',
  5. 'comment_author_url' => 'http://',
  6. 'comment_content' => $kom,
  7. 'comment_type' => '',
  8. 'comment_parent' => 0,
  9. 'user_id' => rand(1,300),
  10. 'comment_author_IP' => '127.0.0.1',
  11. 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
  12. 'comment_date' => $time,
  13. 'comment_approved' => 1,
  14. );
  15.  
  16. wp_insert_comment($data);


Pomoże mi ktoś bardziej obeznany? tutaj podam wam link do dodawanai komentarzy, http://codex.wordpress.org/Function_Refere..._insert_comment w wordpressie.
Oraz proszę o info, czy użyłem poprawnie tablicy smile.gif
pedro84
Wygląda ok, ale jesteś pewien, że poprawne dane siedzą w tych zmiennych?
_Borys_
mysqli_fetch_array() do wyrzucenia, i tak tutaj nie zadziała.
funkcja get_results() zwraca obiekt a więc trzeba operować na obiekcie aby wyciągnąć id posta.
wp_insert_comment() oczekuje tablicy jednowymiarowej, czyli klucz => string lub liczba, a w dwóch miejscach podajesz tablice, $uzy, $kom
Patrykk_
Borys, czyli jak chce wyciągnąć koemntarze, to muszę zamiast mysqli_fetch_array użyć get_results??

A co z tymi tablicami? Nie może być tak? Pytam bo nei rozumiem, a zaczynam z PHP..
_Borys_
Przecież używasz get_results() i w $posty masz gotowy obiekt z wynikami z bazy i nic więcej nie potrzeba żadnego mysql_fetch_array() ani podobnych.
Trzeba tylko wyciągnąć id posta z tego obiektu.
Jeśli jest więcej wyników to trzeba by jakąś pętlę zastosować.
Również $data przerobić aby nie podawać tablicy jako wartości klucza.
Patrykk_
coś w tym stylu?

  1. <?php
  2. require_once( 'wp-blog-header.php' );
  3. // pobieranie komentarzy z pliku z tablicy
  4. require( 'komentarze.php' );
  5. // pobieranie uzytkownikow z pliku z tablicy
  6. require( 'uzytkownicy.php' );
  7.  
  8. // losowe nicki i komentarze
  9. shuffle($kom);
  10. shuffle($uzy);
  11.  
  12. // aktualna data i godzina
  13. $time = current_time('mysql');
  14. $ikom = '0';
  15. //ustanoweienie polaczenia z bazza SQL
  16. global $wpdb;
  17. // pobranie postów z liczbą komentarzy 0
  18. $posty = $wpdb->get_results("SELECT id, comment_count FROM {$wpdb->prefix}posts WHERE post_type='post' AND post_status='publish' AND comment_count= $ikom");
  19.  
  20. while($posty < 10){
  21. $ip = mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255);
  22. $add = $wpdb->mysql_query("INSERT INTO `{$wpdb->prefix}comments`
  23. (`comment_ID`, `comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, `comment_author_IP`, `comment_date`,
  24. `comment_date_gmt`, `comment_content`, `comment_karma`, `comment_approved`, `comment_agent`, `comment_type`, `comment_parent`, `user_id`) VALUES('', '".$id."', '".$uzy."',
  25. '".$linie_pliku[$ktora_linia]."@gmail.com',
  26. '',
  27. '".$ip."',
  28. '".date("Y-m-d H:i:s")."',
  29. '".gmdate("Y-m-d H:i:s")."',
  30. '".$kom."',
  31. '0',
  32. '1',
  33. 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0',
  34. '',
  35. '0',
  36. '0')");
  37. if($add){
  38. echo 'OK | ';
  39. }
  40. }
  41. $commenters = $wpdb->queryNumrows("SELECT * FROM `{$wpdb->prefix}comments` WHERE `comment_post_ID`='$id'");
  42. $update = $wpdb->mysql_query("UPDATE `{$wpdb->prefix}posts` SET `comment_count`='$commenters' WHERE `post_status`='publish' AND `ID`='$id'");
  43. $posty++;
  44. }
  45.  
  46.  
  47. ?>


tylko, że nie działą mi to :/

Mam też inny kod to wyświetla 1...
  1. <?php
  2. require_once( '../wp-blog-header.php' );
  3. global $wpdb;
  4.  
  5. $post = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE post_type='post' AND post_status='publish'");
  6. while($post_var = $post){
  7. $ile = rand(0,1);
  8. $id = $post_var['ID'];
  9. echo $ile.' ';
  10. for($i=0;$i<$ile;$i++){
  11. $ip = mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255).".".mt_rand(0,255);
  12. $linie_pliku_koment=file("/komss/comments_list.txt");
  13. $ile_linii_koment=count($linie_pliku_koment);
  14. $ktora_linia_koment=rand(0,$ile_linii_koment);
  15. $linie_pliku=file("/komss/nick_list.txt");
  16. $ile_linii=count($linie_pliku);
  17. $ktora_linia=rand(0,$ile_linii);
  18. $add = $wpdb->get_results("INSERT INTO `gh00x0x_comments`
  19. (`comment_ID`, `comment_post_ID`, `{$wpdb->prefix}author`, `comment_author_email`, `comment_author_url`, `comment_author_IP`, `comment_date`,
  20. `comment_date_gmt`, `comment_content`, `comment_karma`, `comment_approved`, `comment_agent`, `comment_type`, `comment_parent`, `user_id`) VALUES('', '".$id."', '".$linie_pliku[$ktora_linia]."',
  21. '".$linie_pliku[$ktora_linia]."@gmail.com',
  22. '',
  23. '".$ip."',
  24. '".date("Y-m-d H:i:s")."',
  25. '".gmdate("Y-m-d H:i:s")."',
  26. '".$linie_pliku_koment[$ktora_linia_koment]."',
  27. '0',
  28. '1',
  29. 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0',
  30. '',
  31. '0',
  32. '0')");
  33. if($add){
  34. echo 'OK | ';
  35. }
  36. }
  37. $commenters = $wpdb->queryNumrows("SELECT * FROM `{$wpdb->prefix}comments` WHERE `comment_post_ID`='$id'");
  38. $update = $wpdb->mysql_query("UPDATE `{$wpdb->prefix}posts` SET `comment_count`='$commenters' WHERE `post_status`='publish' AND `ID`='$id'");
  39. }


1. skrypt: http://webbazar.eu/skrypt.php
2. skrypt: http://webbazar.eu/komss/komy.php
_Borys_
  1. <?php
  2.  
  3. require_once ('wp-blog-header.php');
  4. // pobieranie komentarzy z pliku z tablicy
  5. require ('komentarze.php');
  6. // pobieranie uzytkownikow z pliku z tablicy
  7. require ('uzytkownicy.php');
  8. // losowe nicki i komentarze
  9. shuffle($kom);
  10. shuffle($uzy);
  11. // ile koemntarzy musi miec post aby do niego dodac komentarz
  12. $ikom = 0; // w bazie BIGINT
  13. //ustanoweienie polaczenia z baza SQL
  14. global $wpdb;
  15. // pobranie postów z liczbą komentarzy 0
  16. $posty = $wpdb->get_results("SELECT id, comment_count FROM wp_posts WHERE post_type='post' AND post_status='publish' AND comment_count= $ikom");
  17. if ($posty)
  18. {
  19. foreach ($posty as $p)
  20. {
  21. for ($i = 0, $size = count($uzy); $i < $size; $i++)
  22. {
  23. // ustawienia komentarza - wartości
  24. $data = array(
  25. 'comment_post_ID' => $p->id,
  26. 'comment_author' => $uzy[$i],
  27. 'comment_author_email' => 'admin@admin.com',
  28. 'comment_author_url' => 'http://',
  29. 'comment_content' => $kom[$i],
  30. 'comment_type' => '',
  31. 'comment_parent' => 0,
  32. 'user_id' => rand(1, 300),
  33. 'comment_author_IP' => '127.0.0.1',
  34. 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
  35. 'comment_date' => current_time('mysql'),
  36. 'comment_approved' => 1,
  37. );
  38. wp_insert_comment($data);
  39. }
  40. }
  41. } else
  42. {
  43. echo "Brak postow do ktorych mozna dodac komenatarze";
  44. }
  45.  
  46. ?>

warunek count($uzy) == count($kom)
-_Borys_-
Przenieś shuffle() w pętlę foreach, zapomniałem o tym. Z komórki nie mogę edytować.
Patrykk_
Dzięki borys! Teraz działa smile.gif
Dodało mi jednorazowo: 5,057 Comments
biggrin.gif
Heh zmieniłem troszkę ten skrypt do włąsnych potrzeb na taki i jest ok:

  1. <?php
  2.  
  3. require_once ('wp-blog-header.php');
  4. // pobieranie komentarzy z pliku z tablicy
  5. require ('komentarze.php');
  6. // pobieranie uzytkownikow z pliku z tablicy
  7. require ('uzytkownicy.php');
  8. // ile koemntarzy musi miec post aby do niego dodac komentarz
  9. $ikom = 0; // w bazie BIGINT
  10. //ustanoweienie polaczenia z baza SQL
  11. global $wpdb;
  12. // pobranie postów z liczbą komentarzy 0
  13. $posty = $wpdb->get_results("SELECT id, comment_count FROM wp_posts WHERE post_type='post' AND post_status='publish' AND comment_count= $ikom");
  14. if ($posty)
  15. {
  16. foreach ($posty as $p)
  17. {
  18. // losowe nicki i komentarze
  19. shuffle($kom);
  20. shuffle($uzy);
  21. for ($i = 0, $size = count($uzy); $i < $size; $i++)
  22. {
  23. // ustawienia komentarza - wartości
  24. $data = array(
  25. 'comment_post_ID' => $p->id,
  26. 'comment_author' => $uzy[$i],
  27. 'comment_author_email' => 'admin@admin.com',
  28. 'comment_author_url' => 'http://',
  29. 'comment_content' => $kom[$i],
  30. 'comment_type' => '',
  31. 'comment_parent' => 0,
  32. 'user_id' => rand(1, 300),
  33. 'comment_author_IP' => '127.0.0.1',
  34. 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
  35. 'comment_date' => current_time('mysql'),
  36. 'comment_approved' => 1,
  37. );
  38. wp_insert_comment($data);
  39. }
  40. }
  41. } else
  42. {
  43. echo "Brak postow do ktorych mozna dodac komenatarze";
  44. }
  45.  
  46. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.