RogerM Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 (endret) Hei ærede forsamling Jeg er nok ingen koder, men har forsøkt etter beste evne å snekre sammen et script som skal ha følgende oppgave: 1. En gang pr. minutt hente informasjon fra en remote database/tabell (php filen skal kjøres via en cronjob) 2. Skrive ut innholdet av databasen til en statisk html fil (for å spare båndbredde hos eierene av databasen) Er det noen som kan hjelpe meg med å få denne filen til å fungere? Jeg tror det er selve UTSKRIFTSDELEN som lager feilen i koden, men jeg klarer ikke å finne ut hvordan fikse det. Jeg får nå en feilmelding som sier: Parse error: parse error, expecting `','' or `';'' in /var/www/html/feeder/feeder.php on line 40 Her er selve php fila: <? //Lager en klasse class db { //Noen variabler var $hostname = "67.18.54.176"; var $username = "canhost_members"; var $password = "xxxxx"; var $userstable = "micro"; var $dbName = "canhost_members"; var $result; function koble_til() { //Kobler til databasen mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error()); mysql_select_db($this->dbName) || die("Unable to select database"); } function skrivut() { //Skriver ut alt i tabellen $filename = "feed.html"; ob_start(); //start the outpu buffer Echo "<html> <head><title>LIVE FEEDER</title></head> <body> $query = "SELECT * FROM $this->userstable order by date desc limit 7"; $this->result = mysql_query($query); $number = mysql_num_rows($this->result); $i = 0; if ($number == 0) : print "<CENTER><P>Fant ingen poster</CENTER>"; elseif ($number > 0) : print "<center><table border=0>"; while ($i < $number): $username = mysql_result($this->result,$i,"username"); $description = mysql_result($this->result,$i,"description"); $date = mysql_result($this->result,$i,"date"); print "<font style=verdana size=1><tr><td>$username </td><td>$description </td><td>$date</td></tr></font>"; $i++; endwhile; print "</table></CENTER>"; endif; </body></html>"; $fp = fopen($filename, 'w'); fwrite($fp, ob_get_contents()); fclose($fp); ob_clean(); ob_end_flush(); // Send the output to the file } function steng_db() { mysql_free_result($this->result); //Lukker koblingen til databasen mysql_close(); } } //Slutt på klassen vår //Vi lager et nytt objekt $obj =& new db; //Så kaller vi opp funksjonene våre $obj->koble_til(); $obj->skrivut(); $obj->steng_db(); ?> Hva har jeg gjordt galt her, og hva kan jeg gjøre bedre? Jeg har satt sammen koden av forskjellige eksempler, og sjekket med diverse tutorials, men likevel "stanger jeg i veggen" her. Noen som kan ta en kikker og gi meg noen tips? Mvh Roger Endret 2. juni 2004 av RogerM Lenke til kommentar
jorgis Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 if ($number == 0) : print "<CENTER><P>Fant ingen poster</CENTER>"; elseif ($number > 0) : print "<center><table border=0>"; while ($i < $number): $username = mysql_result($this->result,$i,"username"); $description = mysql_result($this->result,$i,"description"); $date = mysql_result($this->result,$i,"date"); print "<font style=verdana size=1><tr><td>$username </td><td>$description </td><td>$date</td></tr></font>"; $i++; endwhile; print "</table></CENTER>"; endif; burde heller vært if ($number == 0) { echo "<CENTER><P>Fant ingen poster</CENTER>"; } elseif ($number > 0) { echo "<center><table border=0>"; while ($i < $number) { $username = mysql_result($this->result,$i,"username"); $description = mysql_result($this->result,$i,"description"); $date = mysql_result($this->result,$i,"date"); echo "<font style=verdana size=1><tr><td>$username </td><td>$description </td><td>$date</td></tr></font>"; $i++; } echo "</table></CENTER>"; } Det skal funke. Tror ikke du kan bruke endif i PHP slik som i VB, skjønner du. Lenke til kommentar
RogerM Skrevet 1. juni 2004 Forfatter Del Skrevet 1. juni 2004 Hei jorgen Mange takk for ditt svar. Dog får jeg stadig samme feilmelding selv etter å ha foretatt de endringer du foreslår, så det er nok noe annet også som er galt med scriptet mitt... Er du her, og kan ta en nærmere kikk på det? Roger Lenke til kommentar
jorgis Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 Kan du vise hvor linje 40 er? Får du nøyaktig samme feil? Lenke til kommentar
LoS Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 bytt ut ob_start(); //start the outpu buffer Echo "<html> <head><title>LIVE FEEDER</title></head> <body> med: ob_start(); //start the outpu buffer Echo "<html> <head><title>LIVE FEEDER</title></head> <body>"; Lenke til kommentar
RogerM Skrevet 1. juni 2004 Forfatter Del Skrevet 1. juni 2004 (endret) Jeg fikk det til å virke nå. Jeg endret litt i echo linjene og tilføyde noen "" her og der..hehe Slik er scriptet nå: <? //Lager en klasse class db { //Noen variabler var $hostname = "67.18.54.176"; var $username = "canhost_members"; var $password = "xxxxxx"; var $userstable = "micro"; var $dbName = "canhost_members"; var $result; function koble_til() { //Kobler til databasen vår mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error()); mysql_select_db($this->dbName) || die("Unable to select database"); } function skrivut() { //Skriver ut alt i tabellen //TILFØYD $filename = "feed.html"; ob_start(); //start the outpu buffer Echo "<html> <head><title>example html from php</title></head> <body>"; //END TILFØYD $query = "SELECT * FROM $this->userstable order by date desc limit 7"; $this->result = mysql_query($query); $number = mysql_num_rows($this->result); $i = 0; if ($number == 0) { echo "<CENTER><P>Fant ingen poster</CENTER>"; } elseif ($number > 0) { echo "<center><table border=0>"; while ($i < $number) { $username = mysql_result($this->result,$i,"username"); $description = mysql_result($this->result,$i,"description"); $date = mysql_result($this->result,$i,"date"); echo "<font style=verdana size=1><tr><td>$username </td><td>$description </td><td>$date</td></tr></font>"; $i++; } echo "</table></CENTER>"; } echo "</body></html>"; $fp = fopen($filename, 'w'); fwrite($fp, ob_get_contents()); fclose($fp); ob_clean(); ob_end_flush(); // Send the output to the file } function steng_db() { mysql_free_result($this->result); //Lukker koblingen til databasen mysql_close(); } } //Slutt på klassen vår //Vi lager et nytt objekt $obj =& new db; //Så kaller vi opp funksjonene våre $obj->koble_til(); $obj->skrivut(); $obj->steng_db(); ?> Dette gir output i HTML filen slik som dette: A60541micro New Member Signup 02-06-2004 01:17 A60542micro New Member Signup 02-06-2004 01:17 A60540micro New Member Signup 02-06-2004 01:11 B11145micro Just Earned $42 02-06-2004 01:04 B30727micro New Member Signup 02-06-2004 00:59 A35885micro Just Earned $21 02-06-2004 00:48 A35885micro Just Earned $21 02-06-2004 00:48 Noen som kan hjelpe meg å vise dette output i forskjellig farge? Hvis description starter med "New Member" skal linja vises i rødt skrift Hvis description starter med "Just Earned" skal linja vises i blått ? Dvs jeg vil at output i html filen skal vises som: A60541micro New Member Signup 02-06-2004 01:17 A60542micro New Member Signup 02-06-2004 01:17 A60540micro New Member Signup 02-06-2004 01:11 B11145micro Just Earned $42 02-06-2004 01:04 B30727micro New Member Signup 02-06-2004 00:59 A35885micro Just Earned $21 02-06-2004 00:48 A35885micro Just Earned $21 02-06-2004 00:48 Hva med deg jorgen, har du en løsning på dette kanskje? Mvh Roger Endret 2. juni 2004 av RogerM Lenke til kommentar
LoS Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 (endret) if($description=="New Member") { echo '<span style="color:red">'.$description,'</span>'; } else { echo '<span style="color:blue">'.$description.'</span>'; } noe sånt? edit: leifx2 Endret 1. juni 2004 av LoS Lenke til kommentar
jorgis Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 (endret) if($description== preg_match("#^New Member(.+?)#")) { echo "<span style=\"color:red\">$description</span>"; } else { echo "<span style=\"color:blue\">$description</span>"; } ...eller noe sånt. Sjekk litt i manualen, og les litt tuts om regular expressions. For trøtt til å svare noe nå. Natta! EDIT: http://www.phpbuilder.com/columns/dario19990616.php3 Endret 1. juni 2004 av jorgenindahouse Lenke til kommentar
RogerM Skrevet 1. juni 2004 Forfatter Del Skrevet 1. juni 2004 LoS, kanskje det ja.... Men hvordan legger jeg inn den koden, altså hvor...husk jeg er totalt "grønn" på php koding, så om du gi meg det med teskje så er det kjempebra Roger Lenke til kommentar
LoS Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 if($description=="New Member") { echo ' <font style=verdana size=1><span style="color:red"><tr><td>'.$username.' </td><td>.'$description.' </td><td>'.$date.'</td></tr></span></font>'; } else { echo ' <font style=verdana size=1><span style="color:blue"><tr><td>'.$username.' </td><td>.'$description.' </td><td>'.$date.'</td></tr></span></font>'; } istedenfor: echo "<font style=verdana size=1><tr><td>$username </td><td>$description </td><td>$date</td></tr></font>"; blir bra dette? Lenke til kommentar
RogerM Skrevet 1. juni 2004 Forfatter Del Skrevet 1. juni 2004 LoS Du har garantert løsningen der, men det gir en parse error: Parse error: parse error, expecting `','' or `';'' in /var/www/html/feeder/feeder.php on line 54 ?? Roger Lenke til kommentar
LoS Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 er bare meg på nattaleifer if($description=="New Member") { echo ' <font style=verdana size=1><span style="color:red"><tr><td>'.$username.' </td><td>'.$description.' </td><td>'.$date.'</td></tr></span></font>'; } else { echo ' <font style=verdana size=1><span style="color:blue"><tr><td>'.$username.' </td><td>'.$description.' </td><td>'.$date.'</td></tr></span></font>'; } da skal det funke. Lenke til kommentar
RogerM Skrevet 1. juni 2004 Forfatter Del Skrevet 1. juni 2004 Koden funker nå uten error, men fargene endres ikke, stadig kun sort skrift Roger Lenke til kommentar
LoS Skrevet 1. juni 2004 Del Skrevet 1. juni 2004 (endret) Stemmer det, når du nevner det. Dumme tables! if($description=="New Member") { echo ' <tr><td><font style=verdana size=1><span style="color:red">'.$username.' </span></font></td><td><font style=verdana size=1><span style="color:red">'.$description.' </span></font></td><td><font style=verdana size=1><span style="color:red">'.$date.'</span></font></td></tr>'; } else { echo ' <tr><td><font style=verdana size=1><span style="color:blue">'.$username.' </span></font></td><td><font style=verdana size=1><span style="color:blue">'.$description.' </span></font></td><td><font style=verdana size=1><span style="color:blue">'.$date.'</span></font></td></tr>'; } så digg det hadde vært om jeg hadde giddi å satt opp litt css til deg Endret 1. juni 2004 av LoS Lenke til kommentar
RogerM Skrevet 2. juni 2004 Forfatter Del Skrevet 2. juni 2004 (endret) Takk skal du ha LoS, nå funker det helt perfekt :-) Jeg skulle bare ha en enkel løsning, css hadde sikkert vært bra, men jeg er ikke kravstor, er kjempefornøyd med den hjelpa du og jorgen har gitt til nå så Nå skal jeg bare ha hosten min til å aktiver en cronjob på php fila en gang pr. minutt, så er oppgaven løst :-) Vil du se resultatet, og hvor den skal brukes hen, så kan du jo sende meg en pm Mange takk igjen :-) Mvh Roger Endret 2. juni 2004 av RogerM Lenke til kommentar
Cucum(r) Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 Psst! Kanskje en idè å sladde passordet til databasen din? Lenke til kommentar
RogerM Skrevet 2. juni 2004 Forfatter Del Skrevet 2. juni 2004 Takk SirIce Du har rett, det bør man alltid gjøre, men det er ikke så farlig i dette tilfelle, den databasen gir kun read rettigheter, og er separert fra hele systemet, så ingen kan gjøre noe skade der...får jeg håpe Det er jo ikke min database heller, og login og passord er gitt ut public til flere hundre stykker Vel, takk for omtanken i allefall, det kunne jo ha vært værre, så det er godt der er noen som gir beskjed Mvh Roger Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå