Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Porównanie wyników dwóch pętli
Forum PHP.pl > Forum > PHP
reyne
Witam,

OPIS Skryptu: Skrypt czyta przy swoim uruchomieniu linki pod danym kanałem RSS i dodaje je do bazy MySQL. Głównie chodzi mi o to, żeby skrypt potrafił sprawdzić czy pobierane wyniki z RSS już istnieją w bazie, jeżeli tak to żeby ich nie dublował, jeżeli nie to link powinien być dodany do bazy.

Posiadam tabelę LINKI (chodzi o hiperłącza) w MySQL,
tabela przechowuje tytuł linka i jego adres do danej strony

  1. CREATE TABLE IF NOT EXISTS `linki` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(150) NOT NULL,
  4. `link` text NOT NULL,
  5. PRIMARY KEY (`entry_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;
  7.  


Do odczytywania linków z RSS mam niekompletną funkcję:

  1.  
  2. function getFeed($feed_url) {
  3. $content = file_get_contents($feed_url);
  4. $x = new SimpleXmlElement($content);
  5. foreach($x->channel->item as $entry) {
  6.  
  7. }
  8.  
  9. }
  10.  


Do odczytywania linków z MySQL mam niekompletną funkcję

  1.  
  2. function getEntries() {
  3. $result = mysql_query("SELECT * FROM `linki`");
  4. while($data = mysql_fetch_array($result)) {
  5. print_r($data);
  6. }
  7. }
  8.  


Do dodawania nowego linku do MySQL mam funkcję

  1.  
  2. function createEntry($name, $link) {
  3. $result = mysql_query("INSERT INTO `linki` ( `id` , `name` , `link` ) VALUES ( NULL , '".$name."', '".$link."');");
  4. if($result) {
  5. echo "utworzono";
  6. }
  7. }
  8.  


1. Jak zrobić żeby funkcje getEntries() i getFeed() zwracały tablicę w wyniku.
2. Jak zrobić aby linki z tablicy funkcji getFeed($adres_kanalu) były dodawane automatycznie do bazy za pomocą funkcji createEntry() pod warunkiem że nie istnieją już w bazie?
Greg0
1.
  1. function foo() {
  2. foreach(..) { //lub jakakolwiek inna pętla
  3. $tablica[] = $wartosc;
  4. }
  5. return $tablica;
  6. }


2. getFeed zwraca tablicę i wywołuje createEntry, do której tablicę można podać i zostanie ona dodana do bazy, dzięki pętli. Lub wywołać createEntry w pętli i podawać wartości osobno.
reyne
A jak sprawdzić czy dane linki nie zostały już wcześniej dodane do bazy? Bo w ten sposób mi się dane dublują
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.