Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][MySQL][PHP] Automatyczne dodawanie elementów
Forum PHP.pl > Forum > Przedszkole
Frugo75
Panowie,

Kończę projekt i utknąłem w punkcie, automatycznego elementów XML. Statyczne jak:
<league>
  1. <league="NFL"/>
  2. <date>2013-06-26</date>
  3. <start>02:45</start>
  4. <team1>Philadelphia Eagles</team1>
  5. <team2>Baltimor Ravens</team2>
  6. <score>22:33</score>


ładnie się generują z danych wyciaganych z bazy (rówież dzieki Wam;)

Ale teraz dodaje do bazy relację teksową do tabeli "comments", gdzie kazdy komentarz ma swoje id.

Czy ktos wie jak zrobić, aby w xml generowały się automatycznie <comments></comments> z chwilą wstawienia do bazy nowego komentarza?

  1. <comment id=xxxx></comment>
  2. <comment id=yyyy></comment>
  3. <comment id=zzzzz></comment>


XML generuję w DOM.

  1. $result8 = mysql_query("SELECT DISTINCT comment, time, id FROM comments WHERE id_meczu = 583 && comment > '0' group by time ASC") or die(mysql_error());
  2.  
  3. while ($rowa8 = mysql_fetch_assoc($result8)){
  4.  
  5. $comment .= $rowa8[comment];
  6. $idcomment = $rowa8[id];
  7. }
  8.  
  9. $comment = $xml->createElement("comment", "$comment");
  10. $comment = $matches->appendChild($comment);
  11. $comment->setAttribute("id", "$idcomment");


Chodzi mi o to, żeby to tworzylo kolejne elementy drzewa <comment> z chwilą wstawienia do bazy nowego komentarza

OK. Już sobie poradziłem. Ale teraz generuje się o jeden rekord mniej niż w bazie. Zawsze o jeden mniej. Tak jakby ten nowy, spychał do XML poprzedniego. Czy ktoś wie dlaczego?
  1. $result8 = mysql_query("SELECT DISTINCT comment, time FROM comments WHERE id_meczu = 583 && comment IS NOT NULL order by id ASC") or die(mysql_error());
  2.  
  3. $row11 = mysql_fetch_assoc($result8);
  4. while ($row11 = mysql_fetch_assoc($result8)) {
  5. $comment = $xml->createElement("comment");
  6. $comment = $matches->appendChild($comment);
  7. $comment->setAttribute("id", "$row11[id]");
  8.  
  9. $text = $xml->createElement("text","$row11[comment]");
  10. $text = $comment->appendChild($text);
  11. $text->setAttribute("time", "$row11[time]");


nospor
Przeciez przed petlą pobierasz jeden rekord i nic z nim nie robisz to sie nie dziw, ze ci go brakuje....
Frugo75
@nospor
Jesteś geniuszem. Dziękuję. Gdyby była tu opcja "przekaz za pomoc na piwo" to bym Ci posłałwink.gif
Wiedziałem, ze na Ciebie mogę liczyć.smile.gif
nospor
Nie trzeba być geniuszem by dwu linijkowym kodzie zobaczycz, ze bez sensu dwa razy pobiera sie dane z bazy. A jak do tego dodac, ze brakuje nam rekordu to odpowiedz jest podana jak na dloni. Nastepnym razem skup sie bardziej na kodzie, mniej na forum.
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.