Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL][PHP]problem z wyświetlaniem query - zwrot arraya
Forum PHP.pl > Forum > Przedszkole
Listonoszek
Cześć! jestem absolutnie zielony w tematyce PHP, kod jestem w stanie stworzyć bazując na skryptach lub przerabiając dotychczas istniejące(i też nie zawsze;)), jednak napotkałem na swojej drodze swego rodzaju problem.

Zacznę od tego, że chciałem pobrać coś z bazy MYSQL a następnie wyświetlić to - nad newsy chciałem dodać taką stałą rubryczkę, która miałaby pobierać tekst z bazy MYSQL. Kod wygląda tak:

Kod
<?
header('Content-Type: text/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';

$user="XYZ";
$pass="ZYX";
$baza="YXZ";

mysql_connect ("mysql", $user, $pass);
mysql_select_db ($baza);

$zapytanie = "SELECT post_content FROM wp_posts WHERE ID=0";
$pobierz = mysql_query($zapytanie);

while($dane = mysql_fetch_array($pobierz)) {
    print_r($dane);

}

?>


w czym tkwi problem? Otóż. Skrypt w momencie zastosowania print_r zwraca mi wynik
Cytat
Array ( [0] => SPRAWDZAM JĘZYK POLSKI [post_content] => SPRAWDZAM JĘZYK POLSKI )

co mi nie pasuje? Nie pasują mi nagłówki chyba tabel, czy tam kolumn, no i jakiś array, co mi się tu pojawia. No i w dodatku zawartość bazy wyświetliła się dwa razy - Kali nie wiedzieć czemu... (?)
gdy zastosuje samo print zwraca:
Cytat
Array

natomiast samo echo nie działa i strona ładuję się tylko do połowy.
Próbowałem na wszystkie sposoby i zmieniać mysql_fetch_array na mysql_fetch_row, na samo mysql_fetch... jednak bez rezultatu.


dodam, że strona jest w wordpressie(serwer dhost.info, PHP safe ON - jeśli to miałoby pomóc)
Nie wiem gdzie robię błąd. Chylę czoła i proszę o pomoc!

pozdrawiam
Listonoszek
tehaha
  1. while($dane = mysql_fetch_array($pobierz)) {
  2. echo $dane['post_content'];
  3.  
  4. }

mysql_fetch_array() zwraca tablicę z wynikami, więc dane wywołujesz jak z tablicy
Ulysess
co do print_r wyświetla zawartość tabelicy.. jeśli chcesz wyświetlić wartość z danego pola daj np echo $dane['post_content'] a pętla może wywołuje się 2x ponieważ może są 2 rekordy z id 0 ? (tutaj nie znam odpowiedzi na to pyt)
thek
Masz dwa razy "Sprawdzam język polski" bo mysql_fetch_array działa tak, iż przechowuje wyniki w postaci indeksów numeryczno-asocjacyjnych. Co to takiego? połączenie indeksów obu rodzajów w wyniku. Od wyników masz 3 funkcje: mysql_fetch_row, mysql_fetch_assoc i mysql_fetch_array. Róznica jest w formie odwołań
mysql_fetch_row -> array( [0] => kolumna1, [1] => kolumna2 )
mysql_fetch_assoc -> array( [nazwa_kolumny1] => kolumna1, [nazwa_kolumny2] => kolumna2 )
mysql_fetch_array -> array( [nazwa_kolumny1] => kolumna1, [0] => kolumna1, [nazwa_kolumny2] => kolumna2, [1] => kolumna2 )
Widzisz różnicę? Ostatnia z funkcji działa jak obie wcześniejsze razem wzięte i stąd za cenę "zdublowania" danych możesz się odnosić albo do kolumny jej indeksem, albo nazwą.
Co do podwójnego wyświetlania to sprawdź ile Ty masz tych rekordów o id = 0 najpierw. Może zresztą ten kawałek gdzieś Ci się dubluje przy include jakimś i stąd ta sytuacja.
tehaha
@Thek, czyli jeśli posługuję się tylko nazwami kolumn to efektywniej będzie używać mysql_fetch_assoc()?
thek
W ogromnym uproszczeniu - tak.
Listonoszek
jestem w 100% pewny co do niepowtarzalności rekordu o ID=0. Dzięki za rozjaśnienie i rozwiązanie problemu.
Zrobiłem tak jak napisał tehaha i zwraca tak jak zwracać powinno. Jeszcze raz dzięki : )

PS. Nie chciałem zakładać kolejnego wątku dlatego dopiszę tutaj.
Tak jak wyżej chyba wspomniałem, używam wordpressa. Chciałem sobie zrobić blog dwujęzyczny. Zainstalowałem xLanguage plugin, instalacja była bardzo zautomatyzowana jak we wszystkiego rodzaju 'gotowców'. xLanguage działa na takiej zasadzie, że w jednym wpisie na blogu piszemy zarówno wersję polską i angielską, które odpowiednio potem tagujemy <span lang='en'> lub <span lang='pl'> a następnie on, wyciąga 'po tagach' odpowiednio wersję angielską lub polską. Jednak działa to (CHYBA) tylko w sekcji w której wyświetlane są posty.

Celem napisania mojego skryptu(?), z którym miałem wyżej problem, było stworzenie takiej stałej sekcji nad wpisami, takiego hmm... wstępu, który też chciałem zrobić w dwóch językach bazując na xLanguage. Jednak tagując odpowiednio tekst angielski i polski. Jednak po kliknięciu odpowiednio w link XYZ/?lang=pl czy XYZ/?lang=en wyświetlają się oba, stąd też mój osąd, że xLanguage działą tylko w sekcji wyświetlania postów.

Próbowałem dodać do indeksu linijkę o wczytywaniu tego pluginu - nad linijką gdzie dodałem include tego pliku który ma być wstępem. Jednak zwraca mi blank page.

I nie wiem jak prościej byłoby. Czy męczyć się z tym xLangiem, czy stworzyć 2 indeksy, w których odpowiednio jeden pobiera posty z bazy 'pl' a drugi z 'en'. Jak myślicie?

pozdrawiam
Listonoszek
thek
Na Wordpressie mało siedzę, ale czy nie lepiej będzie sprawdzić zasięg owej zmiennej i w zależności od niej uzależniać wyświetlenie określonego fragmentu w określonym pliku szablonu?
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.