Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Jak zaimportować dane do paska informacyjnego?
Forum PHP.pl > Forum > Przedszkole
rel
Hej
Mam zamiar wrzucic sobie na swojej stronce pasek a'la informacyjny, u góry, pod topem :-)

Chce to zrobić na takiej zasadzie:

1. Finalny kod z danymi miałby być na tej zasadzie;
  1. <div id="dhtmlgoodies_marquee">
  2. <div class="textObj"><span class="highlighted">Breaking news!</span> This is the first headline of this marquee. Wait, more will come!</div>
  3. <div class="textObj"><span class="highlighted">STOCK NEWS:</span> Company 1 <span class="greenText">82.5</span>(+0.5), Company 2 <span class="greenText">42.9</span>(-2.4), Company 3 <span class="greenText">189.9</span>(-13.7)</div>
  4.  
  5. <div class="textObj"><span class="highlighted">Sport:</span> The soccer season is almost over in Norway now. We have a few thrilling matches ahead of us.</div>
  6. <div class="textObj"><span class="highlighted">Other news:</span> The quick brown fox jumps over a lazy dog.</div>
  7. </div>


tylko zamiast wpisów czysto tekstowych, generowanych ręcznie, chciałbym, żeby na tym pasku przejeżdżały mi treści ogłoszeń, które sa dodawane w moim serwisie.

2. CSS
  1.  
  2. #dhtmlgoodies_marquee{
  3. /* general marquee layout*/
  4. padding-top:3px;
  5. height:25px;
  6. background-color: #000;
  7.  
  8.  
  9. /* End general marquee layout */
  10.  
  11.  
  12. position:absolute;
  13. left:0px;
  14. z-index:1000;
  15. bottom:0px;
  16. display:none;
  17. width:100%;
  18. overflow:hidden;
  19. }
  20. body > div#dhtmlgoodies_marquee{ /* Firefox rule */
  21. position:fixed;
  22. }
  23. #dhtmlgoodies_marquee .textObj{ /* Layout for the marquee text */
  24. position:absolute;
  25. color: #FFF;
  26. font-weight:bold;
  27. white-space:nowrap;
  28. font-family: Trebuchet MS, Lucida Sans Unicode, Arial, sans-serif;
  29. }
  30. /* Just some layout classes used in this script */
  31. .highlighted{
  32. color:#F00;
  33. }
  34. .greenText{
  35. color:#0F0;


3. JS
  1.  
  2.  
  3. <script type=\"text/javascript\">
  4.  
  5. var dhtmlgoodies_marqueeSteps = 2; // Higher = Faster, Lower = slower and more smoothly
  6. var dhtmlgoodies_marqueeSpeed = 8; // Lower value = Faster
  7. var dhtmlgoodies_marqueeStopOnMouseOver = false; // Make the marquee stop moving when user moves his mouse over it
  8. var dhtmlgoodies_marqueePosition = \'bottom\'; // \"top\" or \"bottom\"
  9.  
  10. /* Don\'t change anything below here */
  11. var dhtmlgoodies_marqueeObj;
  12. var dhtmlgoodies_marqueeTextObj;
  13. var dhtmlgoodies_marqueeTmpStep;
  14. var dhtmlgoodies_marqueeTextObjects = new Array();
  15. var dhtmlgoodies_marqueeHiddenSpans = new Array();
  16.  
  17. var dhtmlgoodies_marqueeIndex = 0;
  18. function repositionMarquee(e,timeout)
  19. {
  20. if(document.all)e=event;
  21. if(dhtmlgoodies_marqueePosition.toLowerCase()==\'top\'){
  22. dhtmlgoodies_marqueeObj.style.top = \'0px\';
  23. }else{
  24. dhtmlgoodies_marqueeObj.style.bottom = \'-1px\';
  25. }
  26. if(document.all && !timeout)setTimeout(\'repositionMarquee(false,true)\',500)
  27. }
  28. function marqueeMove()
  29. {
  30. var leftPos = dhtmlgoodies_marqueeTextObj.offsetLeft;
  31. leftPos = leftPos - dhtmlgoodies_marqueeTmpStep;
  32. var rightEdge = leftPos + dhtmlgoodies_marqueeHiddenSpans[dhtmlgoodies_marqueeIndex].offsetLeft;
  33. if(rightEdge<0){
  34. leftPos = document.documentElement.offsetWidth;
  35. dhtmlgoodies_marqueeTextObj.style.display=\'none\';
  36. dhtmlgoodies_marqueeIndex++;
  37. if(dhtmlgoodies_marqueeIndex>=dhtmlgoodies_marqueeTextObjects.length)dhtmlgoodies_marqueeIndex = 0;
  38. dhtmlgoodies_marqueeTextObj = dhtmlgoodies_marqueeTextObjects[dhtmlgoodies_marqueeIndex];
  39. dhtmlgoodies_marqueeTextObj.style.display=\'block\';
  40.  
  41. }
  42. dhtmlgoodies_marqueeTextObj.style.left = leftPos + \'px\';
  43.  
  44. }
  45.  
  46. function stopMarqueeMove()
  47. {
  48. if(dhtmlgoodies_marqueeStopOnMouseOver)dhtmlgoodies_marqueeTmpStep = 0;
  49. }
  50. function resumeMarqueeMove()
  51. {
  52. dhtmlgoodies_marqueeTmpStep = dhtmlgoodies_marqueeSteps;
  53. }
  54. function initMarquee()
  55. {
  56. dhtmlgoodies_marqueeObj = document.getElementById(\'dhtmlgoodies_marquee\');
  57.  
  58. var spans = dhtmlgoodies_marqueeObj.getElementsByTagName(\'DIV\');
  59. for(var no=0;no<spans.length;no++){
  60. if(spans[no].className==\'textObj\'){
  61. if(!dhtmlgoodies_marqueeTextObj){
  62. dhtmlgoodies_marqueeTextObj = spans[no];
  63. spans[no].style.display=\'block\';
  64. }else spans[no].style.display=\'none\';
  65. dhtmlgoodies_marqueeTextObjects.push(spans[no]);
  66. var hiddenSpan = document.createElement(\'SPAN\');
  67. hiddenSpan.innerHTML = \'&nbsp;\'
  68. spans[no].appendChild(hiddenSpan);
  69. dhtmlgoodies_marqueeHiddenSpans.push(hiddenSpan);
  70.  
  71. }
  72. }
  73. if(dhtmlgoodies_marqueePosition.toLowerCase()==\'top\'){
  74. dhtmlgoodies_marqueeObj.style.top = \'0px\';
  75. }else{
  76. if(document.all){
  77. dhtmlgoodies_marqueeObj.style.bottom = \'0px\';
  78. }else{
  79. dhtmlgoodies_marqueeObj.style.bottom = \'-1px\';
  80. }
  81. }
  82.  
  83.  
  84.  
  85.  
  86. dhtmlgoodies_marqueeObj.style.display=\'block\';
  87. dhtmlgoodies_marqueeTextObj.style.left = document.documentElement.offsetWidth + \'px\';
  88. dhtmlgoodies_marqueeObj.onmouseover = stopMarqueeMove;
  89. dhtmlgoodies_marqueeObj.onmouseout = resumeMarqueeMove;
  90. if(document.all)window.onscroll = repositionMarquee; else dhtmlgoodies_marqueeObj.style.position = \'fixed\';
  91.  
  92. dhtmlgoodies_marqueeObj.style.display=\'block\';
  93. dhtmlgoodies_marqueeTmpStep = dhtmlgoodies_marqueeSteps;
  94.  
  95. setInterval(\'marqueeMove()\',dhtmlgoodies_marqueeSpeed);
  96. }
  97.  
  98. </script>


Jak wg Was powinienem dalej zając sie tym, by w miejscu tekstu "Breaking news!</span> This is the first headline of this marquee. Wait, more will come!" pojawiały się wspomniane przeze mnie ogłoszenia.
nospor
Pewnie dane masz w bazie. Musisz sie wiec polaczyc z bazą, pobrac interesujace cie dane i na ich podstawie zbudowac kod HTML jaki oczekujesz.

przenosze na przedszkole
rel
ok, tylko bardziej chodziło mi o to, jak ugryźć to:

Daję załóżmy coś podobnego do:

  1. <?php
  2. mysql_connect ("localhost", "root", "") or die ("nie mozna polaczyc sie z mysql");
  3.  
  4. mysql_select_db ("nazwa bazy danych") or die ("nie mozna polaczyc sie z mysql");
  5.  
  6. $wynik = mysql_query ("SELECT * FROM tabela");
  7. while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
  8.  
  9. $tytul= $rekord['tytul'];
  10.  
  11. echo "<h2>".$rekord['tytul']."</h2>";
  12. }
  13. ?>


Ale chciałbym tylko, żeby wyświetlało np. tytuł ogłoszenia, bo wyświetlac na pasku treść np. 200 znaków to bez sensu. Może to być różnie zrobione, user raz da myślniki, raz kropki, etc

nospor
No i git. Jaki masz wiec problem by zbudowac swojego diva?

  1. $ret = '<div id="dhtmlgoodies_marquee">';
  2. while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
  3. $tytul= $rekord['tytul'];
  4. $ret.=' <div class="textObj"><span class="highlighted">'.$tytul.'</span></div>';
  5. }
  6. $ret.='</div>';
  7. echo $ret;

Ot i cala filozofia
rel
Może inaczej, jestem cieniutki w php, wiec zapytam jeszcze.

Otóż w tabeli annoucements mam kolumny:
annoucement_id
annoucement_type (tutaj jest rożróżnienie na różne kategorie annoucement) - z niej chciałbym pobrac tylko te np, które są oznaczone "3"
annoucement_title (tutaj jest tytuł)
annoucement_price (wiadomo, cena)
annoucement_city
annoucement_telephone

te powyższe dane chciałbym wyświetlić na tym wspomnianym pasku. Podpowiesz jak to ugryśźć? Oczywiscie id jest mi niepotrzebne bo klienta to nie interesuje, a type chciałem wykorzystać tylko po to, by annoucement o typie 1,2 nie były brane pod uwagę.
nospor
Przeciez masz wszystko napisane ..... Jak pobrac i jak wygenerowac DIVa. Jedyne co musisz zrobic sam to podstawic wlasicwa nazwe tabeli i nazwe pol.... no to chyba mozesz zrobic? Chocby glupią metoda prob i bledow.
rel
Ok, zmieniłem sobie to w ten sposób, bardziej czytelnie:

  1. <?php
  2.  
  3. $sql_host = 'localhost';
  4. $sql_user = 'userek';
  5. $sql_password = 'poprawne_haslo';
  6. $sql_baza = 'poprawna_nazwa_bazy';
  7.  
  8. if (mysql_connect($sql_host, $sql_user, $sql_password) and mysql_select_db($sql_baza)) {
  9. $zapytanie = mysql_query("SELECT * FROM nazwa_tabeli");
  10. if ($zapytanie) {
  11.  
  12. while ($wynik = mysql_fetch_array($zapytanie)) {
  13. echo $wynik["annoucement_title"]. echo $wynik["annoucement_city"],;
  14. }
  15. }
  16. else {
  17. echo "Nie można pobrac danych!";
  18. }
  19. }
  20.  
  21. ?>


I to byłoby ok. Problem tylko dla mnie jest taki, że nie za bardzo potrafie poradzić sobie z tym, żeby wyświetliło/pobrało mi tylko te rekordy, które maja annoucement_type o wartości "3" (a są ogólnie 1,2,3,4 - takie możliwości typów).
nospor
zeby pobrac tylko zadane rekordy, musisz to zapytania dodac WHERE
.... where annoucement_type=3
rel
Super, wielkie dzięki, pomogłeś i to mocno.
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.