Strona 1 z 1
[php+MySQL] zapytanie do bazy
: ndz sie 10, 2003 10:38 am
autor: AO
Witajcie!
Powiedzcie, dlaczego ten kod nie działa?
Kod: Zaznacz cały
$zapytanie="SELECT
CONCAT(`autorzy.imie`, ' ', `autorzy.nazwisko`) AS `autor`,
`teksty.tytul`,
`teksty.tekst_id`,
`teksty.typ_publikacji_id`,
`autorzy.autor_id`,
`powiazania.tekst_id`,
`powiazania.autor_id`,
`typy_publikacji.typ_publikacji_id`
FROM `powiazania`, `autorzy`, `teksty`, `typy_publikacji`
WHERE
`teksty.tekst_id` = `powiazania.tekst_id`
&& `autorzy.autor_id` = `powiazania.autor_id`
&& `typy_publikacji.typ_publikacji_id` = `teksty.typ_publikacji_id` ";
$wynik=mysql_query($zapytanie);
$rekord=mysql_fetch_array($wynik);
$id_tekstu = $rekord['tekst_id'];
$autor = $rekord['autor'];
if ($id_tekstu=='3')
echo $autor;
Chcę wyświetlić wszystkich autorów, dla których id tekstu jest równe (przykładowo) 3.
Nic się jednak nie wyświetla. Czemu?
Pozdrawiam niedzielnie.
Ania
Re: [php+MySQL] zapytanie do bazy
: ndz sie 10, 2003 12:36 pm
autor: Wojciech Jurewicz
Troche ten kod nie wyraźny. Napisz jaką masz strukturę tabeli i co chcesz z niej wyciągnąć, wtedy postaram sie pomóc. Nie wiem po co aż tak rozbudowane zapytanie, powinno wystarczyć:
Ale jeżeli to nie to, to napisz to o co prosiłem wtedy postaram sie pomóc.
Re: [php+MySQL] zapytanie do bazy
: ndz sie 10, 2003 5:09 pm
autor: the_foe
pisze od fragmentu w ktorym jest blad:
Kod: Zaznacz cały
while ($rekord=mysql_fetch_array($wynik)){
$id_tekstu = $rekord['tekst_id'];
$autor = $rekord['autor'];
if ($id_tekstu=='3') {
echo "$autor<br>"; }
}
wynik bedzie w slupku, oczywiscie jesli bedziesz na tyle madry

by wziac po uwage sluszna rade przedmowcy to powyzszy fragment skurczy sie do:
Kod: Zaznacz cały
while ($rekord=mysql_fetch_array($wynik)){
$autor = $rekord['autor'];
echo "$autor<br>";
}
to wobec tego trochę szerzej :-)
: ndz sie 10, 2003 7:12 pm
autor: AO
Przede wszystkim dziekuję za odzew!
To zapytanie dlatego takie złozone, bowiem nie jest to jedna tabela, ale cztery tabele powiązane relacyjnie. Inaczej się nie dało wyjść z relacji wiele-do-wielu: jeden autor może mieć kilka tekstów, ale i jeden tekst może mieć kilku współautorów.
Oto struktura tych tabel:
Kod: Zaznacz cały
TABLE autorzy
autor_id SMALLINT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
imie CHAR(20) default NULL ,
nazwisko CHAR (30) default NULL ,
adres CHAR (50) default NULL ,
email CHAR (30) default NULL ,
oficjalki_nt_autora TEXT default NULL ,
data_wpisu DATE default NULL ,
PRIMARY KEY (autor_id),
INDEX autor (nazwisko, imie)
TABLE teksty
tekst_id SMALLINT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
tytul CHAR (100) default NULL,
typ_publikacji_id SMALLINT(1) default NULL,
link CHAR (20) default NULL,
data_tekstu DATE default NULL,
data_oswiadczenia DATE default NULL,
data_publikacji DATE default NULL,
data_zaswiadczenia DATE default NULL,
oficjalki_nt_tekstu TEXT default NULL,
wewn_uwagi_publikacyjne TEXT default NULL,
data_wpisu DATE default NULL,
PRIMARY KEY (tekst_id),
INDEX (tytul)
TABLE powiazania
powiazania_id SMALLINT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
autor_id SMALLINT(4) default NULL ,
tekst_id SMALLINT(4) default NULL ,
PRIMARY KEY (powiazania_id)
TABLE typy_publikacji
typ_publikacji_id SMALLINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
nazwa CHAR (25),
PRIMARY KEY (typ_publikacji_id)
Ja chciałabym, podając wartość pola teksty.tekst_id , wyświetlić wszystkich autorów, którzy przypisani są (w tabeli POWIAZANIA) do tej wartości tekst_id (powiazania.tekst_id).
Na przykład tak:
W jednej komórce wyświetlanej tabeli:
Anna Ostrowska,
Jan Nowak,
Adam Kowalski
A w sąsiedniej komórce tytuł ich wspólnej pracy: O obrotach sfer niebieskich
Pozdrawiam serdecznie
Anna Ostrowska
Re: [php+MySQL] zapytanie do bazy
: pn sie 11, 2003 11:36 am
autor: Wojciech Jurewicz
W kodzie który mi pani podesłała znalazłem błąd który był przyczyną tych ukośników. W linii 127 jest kod:
Kod: Zaznacz cały
echo '<a href=chron.php?s=' . (($display_number * ($i - 1))) . '&np=' . $num_pages . '">' . $i . '</a> ' ;
Brakuje cudzysłowu na początku. Powinno być tak:
Kod: Zaznacz cały
echo '<a href=[b]"[/b]chron.php?s=' . (($display_number * ($i - 1))) . '&np=' . $num_pages . '">' . $i . '</a> ' ;
Jeżeli chodzi o drugi problem, to jest troche gorzej. Trzeba by zmienic skrypt lub strukturę bazy danych. Skrypt jest napisany w taki sposób że selekcja rekordów odbywa sie z poziomu bazy danych a nie skryptu, w takim wypadku nie da się w żaden sposób segregować danych.
o!
: pn sie 11, 2003 12:28 pm
autor: AO
Rzeczywiście teraz działa, cu-dow-nie
A nad przerobieniem skryptu pracuję. Znalazłam pewne wskazówki w biblii.
Pewnie się tu znowu zjawię z nowymi wątpliwościami

))
A co do pani, to w necie jestem Ania. Tak prościej
Pozdrawiam i serdecznie dziękuję!
Re: [php+MySQL] zapytanie do bazy
: pn sie 11, 2003 12:30 pm
autor: Krzysztof Aszkiełowicz
Jak zauważyłem to Wojtek prawie do wszytskich zwraca sie per Pan/Pani.
Poprostu wychowany człowiek, ale net to net

resultat
: pn sie 11, 2003 3:23 pm
autor: AO
Oboje jestecie mili
A ja zrobiłam ten skrypt i w zasadzie działa.
Kod: Zaznacz cały
FROM autorzy, powiazania, teksty, typy_publikacji
WHERE autorzy.autor_id = powiazania.autor_id AND
teksty.tekst_id = powiazania.tekst_id AND
typy_publikacji.typ_publikacji_id = teksty.typ_publikacji_id
ORDER BY nazwisko, tytul";
$result_id = mysql_query($query, $link) OR die(mysql_error($query));
print("<TABLE BORDER=1><TR>\n");
print("<TH>Autor</TH><TH>Tytuł</TH></TR>");
print("<TR><TD>\n");
$old_autor_id = 0;
while ($row_array = mysql_fetch_array($result_id))
{
$autor_id = $row_array[autor_id];
if ($autor_id != $old_autor_id)
{
$autor = $row_array[autor];
if ($old_autor_id != 0)
print("</TD></TR>\n");
print("<TR ALIGN=LEFT VALIGN=TOP>");
print("<TD>$autor</TD><TD>");
$old_autor_id = $autor_id;
}
$tytul = $row_array[tytul];
print("$tytul<BR>");
}
print("</TD></TR></TABLE>");
Jeśli mówię, że "w zasadzie" to dlatego, że wyświetlają mi sie ślicznie autorzy a przy nich wszystkie ich prace(tytuły).
Ale czy jestem zmęczona, czy miałam więcej szczęścia niż... ale nie potrafię skryptu przeredagować tak, aby otrzymać jeden tytuł a do niego wszystkich autorów.
chociaż mi wstyd

, bo wiem, że naduzywam może waszej uprzejmości to jednak proszę, pokażcie mi jak , dobra?
Ania
Re: [php+MySQL] zapytanie do bazy
: pn sie 11, 2003 7:06 pm
autor: Wojciech Jurewicz
... ale nie ma potrzeby, widzę że się znasz, więc dasz sobie radę, tylko cię naprowadzę...
Myślę że powinnaś w tabeli z artykułami dodać jedno pole, w którym będziesz przechowywała id wszystkich autorów tego działa czy jak tam. Przy wykonaniu skryptu ładujesz wszystkich autorów do tablicy kolejno tak jak ich id (w kluczah). A przy odpowiednim artykule odpowiedni autor.