webForumDet fria alternativet

PHP-databasinformation till JavaScript!

JavaScriptur Javascript

16 svar · 520 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej!

I mitt lilla webbprojekt har jag en vertikal javascroller som byter mellan två texter. Dessa texter hämtar jag från en databas genom PHP. Min fråga nu är hur jag får in dessa variabler i JavaScriptet. Krävs det något typomvandling/exportering för att detta skall funka? Är XML ett alternativ? Vore tacksam för lite tips i rätt riktning :)

Så här ser scriptet ut och det som är fetmarkerat är den text jag vill byta ut mot mina variabler:

<div id="tempholder"></div>
<script language="JavaScript" src="dhtmllib.js"></script>
<script language="JavaScript" src="scroller.js"></script>
<script language="JavaScript">

/*
Mike's DHTML scroller (By Mike Hall)
Last updated July 21st, 02' by Dynamic Drive for NS6 functionality
For this and 100's more DHTML scripts, visit [url]http://www.dynamicdrive.com[/url]
*/

//SET SCROLLER APPEARANCE AND MESSAGES
var myScroller1 = new Scroller(50, 50, 730, 40, 0, 0); //(xpos, ypos, width, height, border, padding)
myScroller1.setColors("#006600", "#ccffcc", "#009900"); //(fgcolor, bgcolor, bdcolor)
myScroller1.setFont("Verdana,Arial,Helvetica", 2);
myScroller1.addItem("[B]<b>TAF: EGJJ 221150Z 19016KT 9999 VCSH FEW008 SCT015CB 13/10 Q1008 TEMPO 5000 SHRA BKN012CB=</b>[/B]");
myScroller1.addItem("[B]<b>METAR: EGJJ 221150Z 19016KT 9999 VCSH FEW008 SCT015CB 13/10 Q1008 TEMPO 5000 SHRA BKN012CB=</b>[/B]");

//SET SCROLLER PAUSE
myScroller1.setPause(2000); //set pause beteen msgs, in milliseconds

function runmikescroll() {

  var layer;
  var mikex, mikey;

  // Locate placeholder layer so we can use it to position the scrollers.

  layer = getLayer("placeholder");
  mikex = getPageLeft(layer);
  mikey = getPageTop(layer);

  // Create the first scroller and position it.

  myScroller1.create();
  myScroller1.hide();
  myScroller1.moveTo(mikex, mikey);
  myScroller1.setzIndex(100);
  myScroller1.show();
}

window.onload=runmikescroll
</script>
<div id="placeholder" style="position:relative; width:730px; height:40px;"> </div>
Medlem sedan jan. 2003296 inlägg
#2

Hej!
Nu kanske jag missuppfattar dig helt, men det låter nästan som att du funderar lite för mycket...

myScroller1.addItem("<?= $minVariabel1 ?>");
myScroller1.addItem("<?= $minVariabel2 ?>");

Då förutsätter jag att du hämtar data från databasen och sparar denna data i variablerna $minVariabel1 och $minVariabel2 tidigare på sidan.

Medlem sedan apr. 20041 597 inlägg
#3

Det är så enkelt? Så brukar jag göra när jag har php-kod i vanlig html-kod...

Medlem sedan apr. 20041 597 inlägg
#4

Det fungerade tyvärr inte! :(

Medlem sedan apr. 20041 597 inlägg
#5

Så här såg min kod ut som jag klippte in i javascriptet:

<?php echo showTaf("ESMS") ?>
Medlem sedan jan. 2003296 inlägg
#6

Om du kollar "Visa källa" för sidan när den laddat klart, hur ser koden ut då? Grejen är ju att javascriptkoden ska se ut precis som den gör i exemplet du postade till att börja med. Om den inte ser ut på samma sätt så går det kanske att gissa vad som har gått snett.
Så kolla källkoden och posta den här om du inte ser något uppenbart fel.

Medlem sedan apr. 20041 597 inlägg
#7

Will do! :birp

Medlem sedan apr. 20041 597 inlägg
#8

Det ser ut på följande sätt när jag kikar i källkoden:

//SET SCROLLER APPEARANCE AND MESSAGES
var myScroller1 = new Scroller(50, 50, 700, 40, 0, 0); //(xpos, ypos, width, height, border, padding)
myScroller1.setColors("#000000", "#E6E6E6", "#009900"); //(fgcolor, bgcolor, bdcolor)
myScroller1.setFont("Verdana,Arial,Helvetica", 2);
myScroller1.addItem("<b>TAF: EGJJ 221150Z 19016KT 9999 VCSH FEW008 SCT015CB 13/10 Q1008 TEMPO 5000 SHRA BKN012CB=</b>");
myScroller1.addItem("<b>
[B]ESSP 221130Z 221218 14008KT 9999 SCT030 BKN100 PROB30 1618
            RA=[/B]</b>");

//SET SCROLLER PAUSE
myScroller1.setPause(10000); //set pause beteen msgs, in milliseconds

function runmikescroll() {

  var layer;
  var mikex, mikey;

Får det ej att fungera. Det fetmarkerade är det som jag tog bort och ersatte med min php-funktion. Märkligt! :OO

Medlem sedan jan. 2003296 inlägg
#9

Det blir fel för att innehållet i php-variabeln innehåller radbrytningar och sådant otäckt... Testa

<?php echo ereg_replace( "[\r\n]+", "", (string)showTaf("ESMS") ) ?>

Jag har inte php installerat på min dator, så jag kan inte garantera att jag skriver helt rätt nu.

Medlem sedan aug. 20039 340 inlägg
#10

Pröva:

<?php 
$brs = array("\n\r","\r\n","\n","\r");
echo str_replace($brs, "<br />", showTaf("ESMS"));
 ?>

/r Jawbreaker hann före, och fick in en fin regexp också... Grrrr! :)

Medlem sedan aug. 20039 340 inlägg
#11

jawbreaker » Förutsatt att regexpen är rätt (Vilket den verkar vara) så ska ditt exempel se ut så här:

<?php echo preg_replace( "[\r\n]+", "", showTaf("ESMS") ); ?>
Medlem sedan apr. 20041 597 inlägg
#12

Jag kan bara meddela jawbreaker att din kod fungerar suveränt! nitro2k01, tack för hjälpen du med! Det är helt fantastiskt att det finns såna klippor som Ni :)

Kan man få en enkel förklaring på vad ereg_replace gör för något? :e

Medlem sedan aug. 20039 340 inlägg
#13

Fast jag har lärt mig ett par nya saker av jawbreaker nu, dels att det faktiskt finns nåt som heter ereg_replace, kunde jag inte ana, och dels att man kan casta i php. Så tack!
(Och lillebror, acceptera jawbreakers svar, han löste problem både för dig och mig :) )

Medlem sedan jan. 2003296 inlägg
#14

Ja, vilket teamwork det blev :)
Fint att det fungerade till slut i alla fall.

ereg_replace och preg_replace och diverse andra replace-funktioner i php (jag vet ärligt talat inte skillnaden på alla, såhär på rak arm), ersätter en viss sträng eller ett reguljärt uttryck i en variabel med en annan sträng, kan man säga.
Ta en titt på denna sida, så kanske det klarnar lite.

Medlem sedan apr. 20041 597 inlägg
#15

Jag fortsätter på denna tråd eftersom det tidigare accepterade svaret löste mitt problem för samma script. Det jag vill åstadkomma då var att implementera en bit PHP-kod i ett javascript som skall visa aktuellt väder för en viss flygplats. Javascript fungerar som en textscroller. Nu vill jag att en användare genom en variabel skall kunna ställa in om han/hon vill visa:

Variabel 0 = Endast 1 st METAR (väderrapport)
Variabel 1 = Endast 1 st TAF (väderprognos)
Variabel 2 = 1 st TAF och 1 st METAR
Variabel 3 = Alla METAR efter varandra

Koden tidigare såg ut så här:

<?php echo ereg_replace( "[\r\n]+", "", (string)showTaf("ESMS") ) ?>

Den fungerar utmärkt. Nu är det på följande sätt att jag ska hämta flera poster från min databas som jag vill visa i denna textscroller.

Färdiga koden i javascriptet med PHP-koden, något avskalad ser ut så här:

//SET SCROLLER APPEARANCE AND MESSAGES
var myScroller1 = new Scroller(50, 50, 700, 40, 0, 0); //(xpos, ypos, width, height, border, padding)
myScroller1.setColors("#000000", "#e8f002;", "#009900"); //(fgcolor, bgcolor, bdcolor)
myScroller1.setFont("Verdana,Arial,Helvetica", 2);

<?php if($typeofmetartaf == 0) { ?>
myScroller1.addItem("<b>METAR: <?php echo ereg_replace( "[\r\n]+", "", (string)showMetar("ESSA") ) ?></b>");

<?php } else if($typeofmetartaf == 1) { ?>
myScroller1.addItem("<b>TAF: <?php echo ereg_replace( "[\r\n]+", "", (string)showTaf("ESMX") ) ?></b>");

<?php } else if($typeofmetartaf == 2) { ?>
myScroller1.addItem("<b>METAR: <?php echo ereg_replace( "[\r\n]+", "", (string)showMetar("ESSP") ) ?></b>");
myScroller1.addItem("<b>TAF: <?php echo ereg_replace( "[\r\n]+", "", (string)showTaf("ESPA") ) ?></b>");

<?php } else if($typeofmetartaf == 3)  { 

$MetarObj = showMetarAll();
while($row = mysql_fetch_array($MetarObj)) {
	$metar = $row['metar']; ?>
myScroller1.addItem("<b>METAR: <?php echo ereg_replace( "[\r\n]+", "", (string)$metar ) ?></b>");
<?php } }?>

If-satsen som ska vara lika med 0,1,2 fungerar bra. Då skrivs rätt information ut. Men när jag sätter värdet till 3 så vill inte koden vara med mig längre. Brottades med detta hela kvällen igår utan något resultat. Vet inte vad jag gör för fel? Någon som kan se det?

Sä här ser koden ut för den funktion som matar ut en vektor med väderinformation:

function showMetarAll() {
	
	$sqlSelect = "SELECT codeID, metar FROM tblMetar";
        $RSobj = mysql_query($sqlSelect) or die (mysql_error());
	
return $RSObj;
}
Medlem sedan jan. 2003296 inlägg
#16

Det är fel i funktionen showMetarAll() - variabelnamnen stämmer inte överens. $RSobj är inte samma sak som $RSObj, så du får bestämma dig för om du vill ha ett stort eller litet "O" i namnet.

Medlem sedan apr. 20041 597 inlägg
#17

Du har då ett tränat öga Jawbreaker ;) Tack än en gång! Trevlig midsommar!

264 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
132 ms — hämta forumlista (db)
124 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)