Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][MySQL][PHP] Pętle czy co innego?
Frugo75
post 24.06.2013, 09:03:52
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Witam wszystkich serdecznie.
Bardzo proszę o pomoc, wskazanie rozwiązania.
Generuje w DOM plik xml i mam zapytanie
  1. SELECT * FROM komentarze WHERE id_news = 488


Tabela komentarze w bazie zawiera: id, id_news i autor.

W bazie mam np 3 rzedy z tym id_news i wyswietla mi trzech autorów.

Przechodze do PHP, generuje plik a jako wartosc wstawiam $autor czyli $row[autor].

Kiedy zrobie echo wyswietla mi trzech autorów podczas generwowania xml, ale do drzewa XML wstawia tylko jednego... ostatniego. Dlaczego?

Domyślam się ze chodzi o pętle. Proszę o wskazówkę jak do tego podejść, żeby w XML wstawiało mi trzech autorów.
Efekt który chcę osiągnąc to
  1. <autor>Mickiewicz, Sienkiewicz, Kofta</autor>


Go to the top of the page
+Quote Post
CuteOne
post 24.06.2013, 09:10:59
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $text = '';
  2. foreaach($rows as $row) {
  3.  
  4. $text .= $row['author'].', '; //kluczowy .=
  5. }
  6.  
  7. echo substr($text, 0, strlen($text)-2);


Ten post edytował CuteOne 24.06.2013, 09:12:36
Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 10:38:12
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Dzięki, ale nie działa.sad.gif

  1. $result2 = mysql_query("SELECT * FROM comments WHERE id_news = 496") or die(mysql_error());
  2.  
  3. while ($row = mysql_fetch_assoc($result2)) {
  4.  
  5.  
  6. $autor1 = $row[autor1];
  7. $autor2 = $row[autor2];
  8. $rok = $row[time];
  9. }


daje echo $autor2 i mam Mickiewicz Sienkiewicz.

Wklejam $autor2 do
  1. $autor = $xml->createElement("autor", "$autor2");
  2. $autor = $head->appendChild($autor);


i wpisało mi do XML tylko sienkiewicza;)
  1. <autor>Sienkiewicz</autor>


Why?
Go to the top of the page
+Quote Post
nospor
post 24.06.2013, 10:41:49
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Znajdz 10 roznic w tym co ci podano a co ty napisales

.=
=
Widzisz roznice?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 10:56:49
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Przepraszam - tylko tyle mogę napisać....

To jeszcze dopytam..
Jak przed autorem dodać rok $time i zeby autorzy byli wpisani do XML po przecinku. np.
  1. <autor>1999 Mickiewicz, 2001 Sienkiewicz</autor>
Go to the top of the page
+Quote Post
nospor
post 24.06.2013, 10:58:40
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przeciez przecinki podal ci CuteOne.... czy ty w ogole czytasz co ci ludzie piszą?
Zas co do roku to nie umiesz zmiennych łączyć? $zm.' '.$zm2
Jakis kurs podstaw php wypadaloby przejrzec


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 11:07:20
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Czytam wszystko;)
Tylko ze jak łącze zmienne, to wstawi mi np do Mickiewicza, wszystkie daty i wyglada to tak:
  1. <autor>1997, 1999, 2001, Mickiewicz, Sienkiewicz</autor>

zamiast tak:
  1. <autor>1999. Mickiewicz, 2001. Sienkiewicz</autor>


A to 1997 to bierze z innego pola np autor2...

Za kurs dziękuję. Właśnie jestem w trakcie.
Go to the top of the page
+Quote Post
CuteOne
post 24.06.2013, 11:22:44
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


$text .= $year.' '.$author.', ';


...
Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 11:26:22
Post #9





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Dzięki CuteOne.

Miałbyś czas wyjaśnić mi tę pętlę foreach, którą mi podałeś? Czy nie chce Ci się?

Bo to pewnie chodzi o to, ze wstawia mi daty z innych pół, które mają takie samo id_news.

  1. <autor>90. , 1999. Mickiewicz, 2001. Sienkiewicz, 10. ,</autor>


Chodzi mi o te 90. , i 10. , - ktore sa z innej kolomny (autor2).

Ten post edytował Frugo75 24.06.2013, 11:34:25
Go to the top of the page
+Quote Post
CuteOne
post 24.06.2013, 11:39:46
Post #10





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1.  
  2. $array = array(
  3. 1 => 'Jestem',
  4. 2 => 'tablicą',
  5. 3 => '!'
  6. );
  7.  
  8. $text = '';
  9. $text2 = '';
  10. foreach($array as $index => $value) {
  11. $text .= $value.' ';
  12. $text2 .= $index.' ';
  13. }
  14.  
  15. echo $text. '<br />'.$text2;

Najprościej ujmując jest to pętla listująca elementy tablicy. Równie dobrze, można użyć while() lub for(). Więcej dowiesz się z kursów/poradników

Ten post edytował CuteOne 24.06.2013, 11:40:51
Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 11:43:55
Post #11





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Dziękuje stary.
Wyjaśnij mi jeszcze dlaczego wstawa mi daty z innej kolumny w ktorej tez jest id_news takie same.
To co dopisalem wyzej
Go to the top of the page
+Quote Post
mmmmmmm
post 24.06.2013, 11:54:17
Post #12





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Skorzystaj z GROUP_CONCAT(). będzie dużo szybciej.
Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 12:09:48
Post #13





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Jeszcze tak daleko nie zaszedłem w tajnikach wink.gif
Nadal mam ten problem, ze dodaje mi daty z innej kolumny (autor2), w ktorej są takie same id_news, jak w autor.

  1. <autor>90. Jarecki, 3. , 7. , 10. Faregas,</autor>
  2. <autor2>90. , 3. Kawalec, 7. Frankowski, 10. ,</autor2>


a prawidłowo powinno byc

  1. <autor>90. Jarecki, 10. Faregas,</autor>
  2. <autor2>3. Kawalec, 7. Frankowski, </autor2>


Ten post edytował Frugo75 24.06.2013, 12:12:38
Go to the top of the page
+Quote Post
nospor
post 24.06.2013, 12:34:56
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz aktualny kod...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 12:44:11
Post #15





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


  1. $result2 = mysql_query("SELECT * FROM comments WHERE id_news = 496") or die(mysql_error());
  2.  
  3. while ($row = mysql_fetch_assoc($result2)){
  4.  
  5.  
  6. $autor = $row[autor1];
  7. $autor2 = $row[autor2];
  8. $stime = $row[time];
  9.  
  10. $aautor .= $stime.'.'.' '.$autor.', ';
  11. $aautor2 .= $stime.'.'.' '.$autor2.', ';


oraz przy generacji
  1. $autor = $xml->createElement("autor", "$aautor");
  2. $autor = $head->appendChild($autor);
  3.  
  4.  
  5. $autor2 = $xml->createElement("autor2", "$aautor2");
  6. $autor2 = $head->appendChild($autor2);


Juz prawie jest dobrze, tylko z tymi datami sie pieprzy.

W bazie jest:
tabela: comments
w nie rekordyj:
np.:
id_news=496 - autor=Sienkiewicz - time=21
id_news=496 - autor2=Mickiewicz - time=11
Go to the top of the page
+Quote Post
nospor
post 24.06.2013, 13:00:50
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro każdy autor to oddzielny rekord, to na grzyba ci w tej tabeli dwie kolumny na dwoch autorow??

Wracajac do problemu: zmienne $autor1 i $autor2 masz wypelniac w zaleznosc czy pole z bazy autor1 czy autor 2 jest wypelnione. No wiesz, masz uzyc IF - sprobuj tym razem zrobic to samodzielnie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 13:04:52
Post #17





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Dzięki, spróbuje sam dojść do tego.

To troche jak w meczu, strzelec bramki (wartosc) dla jednego druzyny (autor) i strzelec bramki (wartosc) dla drugiej druzyny (autor2).
Jest jeszcze minuta strzelenia (time). A wszystko dzieje sie w tym samym meczu (id_news).
Go to the top of the page
+Quote Post
nospor
post 24.06.2013, 13:11:21
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wydaje mi sie, ze tak powinna wygladac poprawnie twoja tabela
ID_NEWS
AUTOR
TIME
DRUZYNA (wartosc np 1 i 2 dla rozroznienia druzyn)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 24.06.2013, 14:51:48
Post #19





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Obszedłem to trochę... uzylem
  1. SELECT DISTINCT autor, time
i wszystko działa.
Dziękuję bardzo za pomoc.
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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 21:23