/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
XML i PHP - med extra funktioner!
Fra : LEXeBus
Vist : 467 gange
500 point
Dato : 23-09-03 11:29

Jeg har lavet en backend.php der udtrækker nyheder til XML output. Den virker fint.

Jeg ønsker at lave en fil der ændrer output hvis man ændrer url'en. Feks. backend.php?lang=eng eller backend.php?lang=dan. Så den henter artikler med engelsk ved den ørste, og artikler på dansk ved den anden. Hvad gør jeg. Du behøver ikke lave hele filen for mig, men hvis du kan fortælle mig hvad jeg evt. kan gøre for at løse opgaven - så er jeg ligeså glad.

$backend_language = eng;
$xml_lang_code = 'en-us';
$headline_limit = 10;
$topiconly = 0;
$show_content = 0;
include 'includes/pnAPI.php';
pnInit();
header("Content-Type: text/xml");
$title = pnVarPrepForDisplay(pnConfigGetVar('sitename'));
$link = pnVarPrepForDisplay(pnGetBaseURL());
$description = pnVarPrepForDisplay(pnConfigGetVar('backend_title'));
$webmaster = pnVarPrepForDisplay(pnConfigGetVar('adminmail'));
$managingeditor = "" ;
$image_url = $link.'images/'.pnVarPrepForDisplay(pnConfigGetVar('site_logo'));
if (file_exists("images/".$backend_language."-".pnVarPrepForDisplay(pnConfigGetVar('site_logo')) )) {
$image_url = $link.'images/'.$backend_language.'-'.pnVarPrepForDisplay(pnConfigGetVar('site_logo')); }
$image_title = $title;
$image_link = $link;
$topicnameauth = "&pnDBGetTables()['topics_column'][topicname]";
if ($topiconly == 0) {
$query = "SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM nuke_stories WHERE (pn_language = '$backend_language' or pn_language = '' ) AND pn_ihome = 0 ORDER BY pn_sid DESC";
} else {
$query = "SELECT pn_sid, pn_title, pn_ihome, pn_hometext, pn_language FROM nuke_stories WHERE (pn_language = '$backend_language' or pn_language = '' ) AND pn_topic = $topiconly ORDER BY pn_sid DESC";
}
$sql = $query;
$auth = pnSecAuthAction(0, 'Topics::Topic',"$topicnameauth::$tid",ACCESS_OVERVIEW);
$result = $dbconn->SelectLimit($sql,$headline_limit,$auth);
   if ($result === false) {
echo "\n\n<font class=\"pn-normal\">An error occured</font>";
} else {
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n\n";
echo "<!DOCTYPE rss PUBLIC \"-//Netscape Communications//DTD RSS 0.91//$xml_lang_code\"\n";
echo " \"http://my.netscape.com/publish/formats/rss-0.91.dtd\">\n\n";
echo "<rss version=\"0.91\">\n\n";
echo "<channel>\n";
echo "<title>$title</title>\n";
echo "<link>$link</link>\n";
echo "<description>$description</description>\n";
echo "<language>$xml_lang_code</language>\n";
echo "<image>\n";
echo " <title>$image_title</title>\n";
echo " <url>$image_url</url>\n";
echo " <link>$image_link</link>\n";
echo "</image>\n";
echo "<webMaster>$webmaster</webMaster>\n";
if ($managingeditor != "") {
   echo "<managingEditor>$managingeditor</managingEditor>\n";
};
while(list($sid, $title,$ihome,$hometext, $language) = $result->fields) {
$title = pnVarPrepHTMLDisplay($title);
      $storylang = pnVarPrepForDisplay($language);
      $topicname = pnVarPrepForDisplay($topicname);
$link = pnVarPrepForDisplay(pnGetBaseURL() . "modules.php?op=modload&name=News&file=article&sid=$sid&newlang=$storylang");
   $content = pnVarPrepForDisplay($hometext);
echo "<item>\n";
echo "<title>$title</title>\n";
echo "<link>$link</link>\n";
   if ($show_content) {
      echo "<description>\n";
      echo "<textarea>".$content."</textarea>";
      echo "</description>\n";
};
echo "</item>\n";
$result->MoveNext();
}
echo "</channel>\n";
echo "</rss>\n";
}

 
 
Kommentar
Fra : Jin2k


Dato : 10-10-03 10:43

Hejsa

Du kan jo f.eks. bruge:
if($lang=="eng"){
$backend_language = eng;
$xml_lang_code = 'en-us';
}
elseif($lang=="dan"){
$backend_language = dk;
$xml_lang_code = 'dan';
}

Hvis artiklerne også ligger på 2 eller flere sprog er det jo bare at lave noget tilsvarende der...
Håber det var det her kan løse dit problem. Hvis jeg har forstået problemet rigtigt og du evt. har nogle spørgsmål så bare skriv. Good luck.
/Jin2k

Kommentar
Fra : LEXeBus


Dato : 10-10-03 11:02

Nej, det er ikke det jeg mener.

Hvis du besøger en eller anden databasedrevet hjemmeside, som f.eks. www.lexebus.dk. Så vil du opleve at de fleste sider bliver vist med index.php - med en eller anden søgning efter. F.eks. "index.php?newlang=dan", giver visning i dansk sprog. Jeg ville godt kunn give min backend.php samme funktionalitet, så jeg ved at skrive "backend.php?newlang=dan" og derigennem få de danske nyheder via XML.

Jeg har ingen anelse om hvordan jeg gør det, og et rigtigt svar behøver ikke være en færdig løsning, blot et hint der kan hjælpe mig til at finde den færdige løsning selv er godt nok.

Jeg har flere ønsker, men sproget er det første jeg gerne vil kunne, og muligvis også det simpleste - hvem ved?

Kommentar
Fra : Jin2k


Dato : 10-10-03 11:10

Ahh... Okay. Har du alle din tekst liggende i en db? Eller sat op i et array eller ligende?
For hvis du har det er det såmænd meget nemt. Så er det jo bare at fortælle den hvilket sprog den skal bruge til output.
Hvis vi nu siger at du vil lave dine menu'er på to sprog, laver du jo bare en db med de links der skal være og så har du kolonner til de forskellige sprog. Når du så skal outputte din menu vælger den så bare hvilket sprog det skal være... Er det sådan noget ligende du kigger efter....?

Kommentar
Fra : LEXeBus


Dato : 10-10-03 11:12

JEg har DB, alle nyheder ligger allerede derinde.

Det er et XML RSS News-feed jeg prøver at lave via php-koder...

Kommentar
Fra : Jin2k


Dato : 10-10-03 11:20

Hvis du har nyhederne liggende på begge sprog i db'en er det jo ikke noget problem. Så er det jo bare at vælge hvilken kolonne der skal output'es...

Kommentar
Fra : LEXeBus


Dato : 10-10-03 11:45

Jaja, men hvordan?

Jeg han godt hardkode backend.php, men jeg kan ikke finde ud af at få den til at outputte pba url'en


Accepteret svar
Fra : Jin2k

Modtaget 500 point
Dato : 10-10-03 15:04

Nåh... Det er jo bare en if-statement... Hvis du f. eks. bruger backend.php?lang=eng og backend.php?lang=dan er det jo bare at se på $lang som variabel og så strukturer din betingelse ud fra det.
Eksempel:
Kode
if($lang=="eng"){
echo $eng_text;
}
elseif($lang=="dan"){
echo $dan_text;
}


Kommentar
Fra : LEXeBus


Dato : 10-10-03 15:39

Jamen det var jo ikke engang svært. Jeg føler mig lidt smådum, takker for hjælpen - jeg skulle bare fjerne nogle koder fra backend.php, så virker det.

Tak skal du have.

Godkendelse af svar
Fra : LEXeBus


Dato : 10-10-03 15:46

Tak for svaret Jin2k.
                        

Kommentar
Fra : Jin2k


Dato : 10-10-03 16:35

No problem :)

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste