Gå til innhold

Kan noen hjelpe? - Utskrift til html fil


Anbefalte innlegg

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 av RogerM
Lenke til kommentar
Videoannonse
Annonse

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

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

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 av RogerM
Lenke til kommentar

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! :p

 

EDIT: http://www.phpbuilder.com/columns/dario19990616.php3

Endret av jorgenindahouse
Lenke til kommentar

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? :p

Lenke til kommentar

er bare meg på nattaleifer :p

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

Stemmer det, når du nevner det. Dumme tables! :mad:

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 :p

Endret av LoS
Lenke til kommentar

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 :thumbup:

 

Mange takk igjen :-)

 

Mvh

Roger

Endret av RogerM
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...