Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sitemapa z MySQL
Forum PHP.pl > Forum > PHP
malin90
Witam
Chciałbym stworzyć "samo generującą" się mapę witryny dla google przez pobieranie i odpowiednie wyświetlanie wyników z bazy danych.
Z tabeli "oferty" chciałbym zaimportować dane z kolumn: "id", "nazwa_obiektu"
pod warunkiem, że kolumna o nazwie "aktywna" ma w wierszu wartość "1" tzn. że tam gdzie
jej wartość wynosi "0" dane z kolumn "id" i "nazwa_obiektu" nie są pobierane.

Zaimportowane dane powinny wyświetlać się w postaci:
Kod
</span>www.nazwa-domeny.com/"id"/"nazwa_obiektu"/<span class="postbody">


jeden pod drugim

Robię to metodą "prób i błędów" z dużym naciskiem na "błędów" smile.gif
Nie za bardzo znam się na PHP i MySQL, bazuję na tym co znajdę w internecie próbując dostosować to pod siebie.

Moje ostatnie próby:
  1. <?php
  2.  
  3. if(!$sql = @mysql_connect("host","login","hasło"))
  4.    die("Błąd połączenia do bazy danych MySQL.");
  5. mysql_query("SET CHARSET latin2;");
  6.  
  7.  
  8. echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  9.  
  10. echo "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
  11.  
  12. $zapytanie = "SELECT id, nazwa_obiektu FROM oferty WHERE aktywana = 1";
  13.  
  14. echo "<url><loc>http://www.www.moja-domena.com/".$zapytanie['id']."/".$zapytanie['nazwa_obiektu'].".html</loc>\n";
  15. echo "<priority>0.5</priority>\n";
  16. echo "</url>" ;
  17. echo "</urlset>" ;
  18.  
  19. ?>


Zamiast wyników wyświetla mi się jakieś:
Kod
</span>http://www.www.moja-domena.com/S/S.html 0.5


Jakieś " S-ki " co mam zmienić aby dane się wyświetlały ?

Proszę nie odsyłajcie mnie do manuala bo nic z niego nie rozumiem.
Pozdrawiam serdecznie
mcgsoft
Coś takiego być powinno

  1. <?php
  2.  
  3. if(!$sql = @mysql_connect("host","login","hasło"))
  4.   die("Błąd połączenia do bazy danych MySQL.");
  5. mysql_query("SET CHARSET latin2;");
  6.  
  7.  
  8. echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  9.  
  10. echo "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
  11.  
  12. $zapytanie = mysql_query("SELECT id, nazwa_obiektu FROM oferty WHERE aktywana = 1", $sql);
  13. while($row=mysql_fetch_array($zapytanie)){
  14.  
  15.  
  16.  
  17. echo "<url><loc>http://www.www.moja-domena.com/".$row['id']."/".$row['nazwa_obiektu'].".html</loc>\n";
  18. echo "<priority>0.5</priority>\n";
  19. echo "</url>" ;
  20. echo "</urlset>";
  21. };
  22.  
  23. ?>
malin90
Niestety pokazuje błąd:
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL  result resource in /home/bazanoc/ftp/mapa.php on line 14


to jest w 14 linijce:
  1. <?php
  2. while($row=mysql_fetch_array($zapytanie)){
  3. ?>
erix
Znaczy, że zapytanie coś nie działa. Sprawdź, czy się wykonuje w konsolce MySQL/PMA.
mcgsoft
Musisz zapytanie poprawić bo mysql_fetch_array działa tylko na tablicach, ogólnie wynik tego zapytania "$zapytanie" nie zwraca tablicy.

Dopisz coś takiego :

  1. <?php
  2. if(!$zapytanie){mysql_error();};
  3. ?>


po linijce :

  1. <?php
  2. $zapytanie = mysql_query("SELECT id, nazwa_obiektu FROM oferty WHERE aktywana = 1", $sql);
  3. ?>


I napisz co ci skrypt wypisze.
malin90
Dopisałem to co napisałeś ale nadal występuje ten sam błąd:
  1. <?php
  2. Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/bazanoc/ftp/mapa.php on line 15
  3. ?>


tym razem w 15 linijce czyli tam gdzie wcześniej

Otworzyłem też to przez Mozille i tam wyświetla się błąd:
Kod
Następujące tagi nie zostały zamknięte: urlset. Błąd podczas przetwarzania  zasobu


Jeszcze raz cały kod:
  1. <?php
  2.  
  3. if(!$sql = @mysql_connect("host","baza","hasło"))
  4.  die("Błąd połączenia do bazy danych MySQL.");
  5. mysql_query("SET CHARSET latin2;");
  6.  
  7.  
  8. echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  9.  
  10. echo "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
  11.  
  12. $zapytanie = mysql_query("SELECT id, nazwa_obiektu FROM oferty WHERE aktywana = 1", $sql);
  13. if(!$zapytanie){mysql_error();};
  14. while($row=mysql_fetch_array($zapytanie)){
  15.  
  16.  
  17.  
  18. echo "<url><loc>http://www.www.moja-domena.com/".$row['id']."/".$row['nazwa_obiektu'].".html</loc>\n";
  19. echo "<priority>0.5</priority>\n";
  20. echo "</url>" ;
  21. echo "</urlset>";
  22. };
  23.  
  24. ?>
mcgsoft
W zasadzie to powinno być w zapytaniu SELECT * FROM oferty WHERE itd...

  1. <?php
  2. $zapytanie = mysql_query("SELECT * FROM oferty WHERE aktywana = 1", $sql);
  3. ?>
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.