Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Porównanie wyników dwóch pętli
reyne
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował reyne 21.10.2012, 18:25:02
Go to the top of the page
+Quote Post
Greg0
post
Post #2





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
reyne
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 1
Dołączył: 19.12.2007

Ostrzeżenie: (0%)
-----


A jak sprawdzić czy dane linki nie zostały już wcześniej dodane do bazy? Bo w ten sposób mi się dane dublują
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 01:36