Avatar billede sabumnim Novice
21. august 2006 - 22:41 Der er 72 kommentarer og
1 løsning

Sprog - nem tilgang?

Hej alle

Har nu siddet to aftener i træk og forsøgt at læse lidt omkring brugen af sprogskift i php.

Jeg skal til at lave en webside som skal køre med både dansk og engelsk sprogvalg.

Jeg forestiller mig at man kommer ind på Index.php der som standard er DANSK.
Her læser man så f.eks nyhed.php?id=3 (viser nyhed nummer 3 som udtrækkes fra MySql)

Hvis man så vil læse denne nyhed på engelsk også klikker man på et lille ENGELSK flag og får herved samme side/Id bare hvor teksten er på engelsk.

Hvordan laves dette?

Som jeg tidligere skrev har jeg siddet og nærlæst mange gode indlæg her på EXP omkring netop dette, men uden at fatte ret meget af det. Er stadig ret nOob.

Mit problem er også at jeg gerne vil benytte Includes, hvorfor min danske menu samtidig skal skifte ved klik på førnævnte engelske flag, til ENGELSK.

Noget af løsningen kunne evt. være at der i min "opret nyhed" i admin er tre felter til den danske tabel og tre felter til engelske tabel.

Min tabel opsætning kunne evt. være:
- DK tabel nyhed -
Id, overskrift, tekst, billed

- UK tabel news -
Id, topheader, text, pic

Min "opret nyhed" ville så være:
tre felter til DK med en autoincrement på id og så de tre andre felter.
På samme side vil der være yderlige tre felter til den engelske nyhed som skrives samtidig og dermed får samme ID increment, blot i UK tabel news.

Er dette muligt?
Avatar billede Slettet bruger
22. august 2006 - 00:00 #1
Hvis du alligevel har en større del tekst i databasen, vil jeg anbefale noget i denne stil:

tabel nyhed:
id, billed

tabel nyhed_tekst:
nyhed_id, sprogkode, overskrift, tekst

Og så også have en anden tabel med alle mulige forskellige tekster, der skal udskrives til navigation og den slags.

tabel sprog
tekstkode, sprogkode, tekst

Du skal så bare have samme tekstkode for teksten på engelsk og dansk.

Bemærk at med denne metode, er det ikke nødvendigt med forskellig PHP-kode til at håndtere forskellige sprog, så det kræver ikke andet end en oversætter, hvis man skal tilføje et sprog mere.
Avatar billede Slettet bruger
22. august 2006 - 00:01 #2
Selve menuen bør nok laves som to tabeller lige som nyhed-tabellen.
Avatar billede coderdk Praktikant
22. august 2006 - 00:04 #3
Det kan godt gå hen og blive en rodet affære... En anden måde at gøre det på er at have én tabel til nyheder, som er i et default sprog, kald den news:

id, header, content, picture

og have en tabel til sprog, kald den lang:

id, languagecode, languagename

og en til resten af teksterne, kald den news_lang

id, news_id, language_id, header, content, picture

Hvis folk så er på default sproget, skal du ikke gøre andet end at hive nyheden med det pågældende ID ud. Er det et andet sprog, skal du selecte fra en anden tabel, news_lang, sådan: SELECT header, content picture FROM news_lang WHERE news_id = $id
Dette synes jeg er den mest oplagte måde til dig... Man kunne sågar lade news tabellen indeholde ét auto_increment'et ID og intet andet, og blot fylde de rigtige data i news_lang med den rigtige language code...

Det andet med at sikre at ID'er er samme i alle tabeller, kan gå hen at blive lidt noget rod ;)
Avatar billede coderdk Praktikant
22. august 2006 - 00:07 #4
Ja, sandbox nåede en nærmest identisk løsning mens jeg skrev :) Billedet *kan* jo godt indeholde tekst, så det er nok en god idé at have en i news_lang - evt. kan man bare gøre så man kan "klone" det billede der er i defaultsproget :)
Avatar billede sabumnim Novice
23. august 2006 - 23:13 #5
Hej igen

Fine svar men jeg er stadig nået lige langt i min færd imod en to-sproget side for jeg fatter intet af dette.

Jeg vil forsøge at forklare mine probs igen.

Mål: at opnå at lave en to-sproget version af en php-styret webside.

1)
Brugeren kommer ind på min webside.
Der finder han/hun en masse indhold, på dansk da dette er standart sprog.
Foroven i menu delen findes to flag; et dansk og et engelsk.
Ved klik på det engelske skiftes sproget på den aktuelle side til engelsk.
Den aktuelle side er f.eks nyhed?id=3 eller andet.

2)
I min admin del vil jeg gerne oprette en nyhed.
Denne nyhedsoprettelse består af 6 felter.
Tre til dansk indhold og tre til engelsk indhold.
Den danske tilføjes til Mysql DB og laver et autoincrement på id.
Det samme gør sig gældende for de tre andre, altså den engelske.

3)
Når man klikker på det engelske flag mens man befinder sig på den danske nyhed?id=3 skiftes denne nyhed til samme nyhed, blot på engelsk.
Kan dette lade sig gøre idet nyheden er tilføjet både på DK og UK i DB mysql?
www.domæne.dk?sprog=uk?nyhed?id=3  ????

Jeg vil virkelig gerne have en meget DOWN to EARTH forklaring på alt ovenstående da jeg ikke forstår sammenhængen med dette sprogvalg.....????

/Carsten
Avatar billede sabumnim Novice
23. august 2006 - 23:15 #6
PS:

4)
Da jeg vil benytte SSI på min webside vil jeg gerne vide hvordan jeg får min menu til at ændre sig fra DK til UK idet jeg klikker på det engelske flag ??

/Carsten
Avatar billede Slettet bruger
23. august 2006 - 23:57 #7
Du vil benytte SSI? Ikke PHP?
Avatar billede sabumnim Novice
24. august 2006 - 12:23 #8
Hej sandbox

Jo jeg vil benytte SSI og php/MySql.
SSI = Server Side Include ....hvilket du sikkert vidste :0)

/Carsten
Avatar billede sabumnim Novice
15. oktober 2006 - 00:21 #9
Hej CoderDk og Sandbox

Selv om jeg ikke er nået tættere på en løsning synes jeg aligevel at I begge skal have noget for jeres gode forsøg.

Jeg vil derfor gerne tildele jer halvdelen af pointene hver, således I begge løber med 30 point.

Håber dette er tilfredsstillende.

Vil I lægge et svar?

/Carsten
Avatar billede coderdk Praktikant
15. oktober 2006 - 01:46 #10
Hvis du KUN vil have dansk og engelsk, og have ALLE nyheder oversat til engelsk, så kan det gøres simplere:

NEWS
====
newsid
heading
content
picture
heading_uk
content_uk
picture_uk

Så er det bare at vise de korrekte felter, hvis brugeren har valgt UK. Altså

news_read.php:

<?php

  $sql = "SELECT heading, content, picture, heading_uk, content_uk, picture_uk FROM news WHERE newsid = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $qh = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $qh );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $content = 'content' . ( $isUK ? '_uk' : '' );
  $picture = 'picture' . ( $isUK ? '_uk' : '' );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$header] . "</h1>";
  echo $row[$picture];
  echo $row[$content];

?>

Meget forsimplet, men du kan måske få en bedre idé :)
Avatar billede coderdk Praktikant
15. oktober 2006 - 01:47 #11
$header = 'header' . ( $isUK ? '_uk' : '' );

skulle naturligvis have været:

$header = 'heading' . ( $isUK ? '_uk' : '' );
Avatar billede coderdk Praktikant
15. oktober 2006 - 01:47 #12
Og den "økonomiske" måde:

<?php

  $isUK = isset( $_GET['uk'] );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $content = 'content' . ( $isUK ? '_uk' : '' );
  $picture = 'picture' . ( $isUK ? '_uk' : '' );

  $sql = "SELECT $header, $content, $picture FROM news WHERE newsid = " . intval( $_GET['id'] );
  $qh = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $qh );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$header] . "</h1>";
  echo $row[$picture];
  echo $row[$content];

?>
Avatar billede sabumnim Novice
15. oktober 2006 - 01:59 #13
Hej Coderdk

Jeg er helt klar over hvordan jeg skal ECHO noget fra min US eller UK tabel.
Problemet er at jeg stadig ikke kan få lavet det skift imelllem DK og UK via klik på flagene, da jeg satdig ikke forstår hvordan det skal gøres, i henhold til jeres beskrivelser.

Jeg vælger derfor at lukke dette spørgsmål og har oprettet et nyt som måske bedre forklarer min problemstilling.
Men stadig vil jeg gerne i den gode ånd tildele er begge nogle point.

Mit andet og nye spørgsmål ligger i øvrigt her:
http://www.eksperten.dk/spm/738632

Vil du svare så jeg kan tildele dig halvdelen af pointene

/Carsten
Avatar billede coderdk Praktikant
15. oktober 2006 - 02:17 #14
Med det eksempel jeg har skrevet, der defaulter den til dansk. For at læse nyheden med ID 3 skal man bare bruge http://www.ditsite.dk/news_read.php?id=3&uk
Avatar billede sabumnim Novice
15. oktober 2006 - 12:56 #15
Hej coderdk

Det lyder som noget jeg måske kan bruge men er stadig lidt forvirret:

Eks.
<? session_start()
$header = 'heading' . ( $isUK ? '_uk' : '' );
?>
<html>
<head>

</head>
<body>
<?php

  $isUK = isset( $_GET['uk'] );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $content = 'content' . ( $isUK ? '_uk' : '' );
  $picture = 'picture' . ( $isUK ? '_uk' : '' );

  $sql = "SELECT $header, $content, $picture FROM news WHERE newsid = " . intval( $_GET['id'] );
  $qh = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $qh );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$header] . "</h1>";
  echo $row[$picture];
  echo $row[$content];

?>
</body>

</html>

Er det noget i denne stil du mener eller hvordan skal det hele hænge sammen.

Kan du forklare mig helt basalt om det er sådan du mener og skal koderne sættes ind her eller hvordan virker det.

I min tabel vælger den så om jeg har valgt dk eller uk tabellen?

/Carsten
Avatar billede coderdk Praktikant
15. oktober 2006 - 14:01 #16
Faktisk, nu jeg tænker mig om, så er det jo nok bedst at bruge sessions til at holde styr på hvilket sprog der skal vises:

Dit skiftsproglink:

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">UK</a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">DK</a>

chlang.php:

<?php

  session_start();
  $_SESSION['isUK'] = ( !empty( $_GET['lang'] ) && $_GET['lang'] == 'uk' );
  header( 'location: ' . $_GET['return'] );
  exit;

?>

Din læs nyhed:

<?php

  session_start()

?>
<html>
<head>

</head>
<body>
<?php

  $isUK = ( isset( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $content = 'content' . ( $isUK ? '_uk' : '' );
  $picture = 'picture' . ( $isUK ? '_uk' : '' );

  $sql = "SELECT $header, $content, $picture FROM news WHERE newsid = " . intval( $_GET['id'] );
  $qh = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $qh );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$header] . "</h1>";
  echo $row[$picture];
  echo $row[$content];

?>
</body>
</html>
Avatar billede sabumnim Novice
16. oktober 2006 - 11:39 #17
Hej igen Coderdk

Vil du prøve at tage et kig på denne kode og måske fortælle mig hvordan jeg skal få din kode til at spille sammen med min SWITCH som ses i koden her:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>

<body>
<div id="wrapper">
    <div id="header">
    <div id="topbuttons"><a href="?id=sitemap"><img src="subs/gfx/sitemap.jpg" alt="Sitemap" width="33" height="20" longdesc="sitemap" /></a>&nbsp;<a href="?id=kontakt"><img src="subs/gfx/kontakt.jpg" alt="Kontakt" width="33" height="20" longdesc="Kontakt" /></a></div>
    </div>
    <div id="container">
    <div id="navigation"><!-- Navigation starter her -->
    <div id="navmenu">
    <ul>
    <li><a href="?id=hjem">Hjem</a></li>
    <li><a href="?id=referencer">Referencer</a></li>
    <li><a href="?id=nyheder">Nyheder</a></li>
    <li><a href="?id=kompetencer">Kompetencer</a></li>
    </ul>
    </div>
    </div><!-- Navigation slutter her -->
   
    <div id="indhold"><?php
//Tjek om variablen p er sat i adresselinien. Hvis ike bruger vi side.
if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) ) $page = $_GET['id'];
else $page = "hjem";

//Hvis der er en / i enden fjerner vi denne.
if ( eregi("/$",$page) ) $page = substr($page,0,strlen($page)-1);

//sætter filnavnet til vores sti og .php
$filename = "undersider/" . $page . ".php";

//Vi tjekker om filen eksisterer - hvis den gør includerer vi denne, ellers skriver vi at der ikke er nogen fil
if ( file_exists($filename) )
    include($filename);
else
    echo "Problem med siden - siden findes ikke på serveren";
?>


   
    </div>
    <div id="jump">
   
    </div>
    </div>
   
    </div>
    <div id="footer">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?id=disclaimer" class="link2">Disclaimer</a>&nbsp; <strong>l</strong> &nbsp;<a href="?id=domain" class="link2">Om siden</a> <strong>l</strong> <a href="http://validator.w3.org/check?uri=referer" class="link2">xhtml strict 1.1</a> </div>
</div>

</body>
</html>
Avatar billede coderdk Praktikant
16. oktober 2006 - 11:55 #18
Erh, der er ingen switch, og ingen steder du skriver noget dansk/engelsk ud ;P
Avatar billede sabumnim Novice
16. oktober 2006 - 12:16 #19
Hej igen Coderdk

Koden her:
"><?php
//Tjek om variablen p er sat i adresselinien. Hvis ike bruger vi side.
if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) ) $page = $_GET['id'];
else $page = "hjem";

//Hvis der er en / i enden fjerner vi denne.
if ( eregi("/$",$page) ) $page = substr($page,0,strlen($page)-1);

//sætter filnavnet til vores sti og .php
$filename = "undersider/" . $page . ".php";

//Vi tjekker om filen eksisterer - hvis den gør includerer vi denne, ellers skriver vi at der ikke er nogen fil
if ( file_exists($filename) )
    include($filename);
else
    echo "Problem med siden - siden findes ikke på serveren";
?>

Vil via input fra menuen SWITCHE siderne ud med tekst og billede indhold.
Alle disse sider ligger i mappen UNDERSIDER.

Er godt klar over at der ikke skrives noget DK/UK indhold ud nogle steder, da dette er den første side og dine forslag skal så bygges ind i dette.

Desuden skal jeg have min menu til at SKIFTE fra DK til UK. Menuen er statisk og skal simpelthen bare include en UK_menu istedet for DK_menu.

Håber stadig du med på hvad jeg mener...

/Carsten
Avatar billede coderdk Praktikant
16. oktober 2006 - 12:51 #20
Men altså, der bliver jo ikke hevet noget ud fra databasen i din kode?
Avatar billede sabumnim Novice
16. oktober 2006 - 14:18 #21
Hej igen Coderdk

Kan du give en respons på dette.

Dette er koden til min INDEX.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>

<body>
<div id="wrapper">
    <div id="header">
    <div id="topbuttons"><a href="?id=sitemap"><img src="subs/gfx/sitemap.jpg" alt="Sitemap" width="33" height="20" longdesc="sitemap" /></a>&nbsp;<a href="?id=kontakt"><img src="subs/gfx/kontakt.jpg" alt="Kontakt" width="33" height="20" longdesc="Kontakt" /></a></div>
    </div>
    <div id="container">
    <div id="navigation"><!-- Navigation starter her -->
    <div id="navmenu">
    <ul>
    <li><a href="?id=hjem">Hjem</a></li>
    <li><a href="?id=referencer">Referencer</a></li>
    <li><a href="?id=nyheder">Nyheder</a></li>
    <li><a href="?id=kompetencer">Kompetencer</a></li>
    </ul>
    </div>
    </div><!-- Navigation slutter her -->
   
    <div id="indhold"><?php
//Tjek om variablen p er sat i adresselinien. Hvis ike bruger vi side.
if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) ) $page = $_GET['id'];
else $page = "hjem";

//Hvis der er en / i enden fjerner vi denne.
if ( eregi("/$",$page) ) $page = substr($page,0,strlen($page)-1);

//sætter filnavnet til vores sti og .php
$filename = "undersider/" . $page . ".php";

//Vi tjekker om filen eksisterer - hvis den gør includerer vi denne, ellers skriver vi at der ikke er nogen fil
if ( file_exists($filename) )
    include($filename);
else
    echo "Problem med siden - siden findes ikke på serveren";
?>


   
    </div>
    <div id="jump">
   
    </div>
    </div>
   
    </div>
    <div id="footer">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?id=disclaimer" class="link2">Disclaimer</a>&nbsp; <strong>l</strong> &nbsp;<a href="?id=domain" class="link2">Om siden</a> <strong>l</strong> <a href="http://validator.w3.org/check?uri=referer" class="link2">xhtml strict 1.1</a> </div>
</div>

</body>
</html>

////Her slutter koden INDEX.php

Dette er:
////NYHED.php////
<br /><h1>Nyheder</h1><br />
 
<?php
require_once "forbinder.php";

$foresp = mysql_query("SELECT * FROM nyheder ORDER BY id DESC LIMIT 0, 10");
while($data = mysql_fetch_array($foresp)){

$id = $data['id'];
$tekst = $data['tekst'];
$tegn = strlen($tekst); // Hvor mange tegn er der i teksten?

if($tegn >= 0){ // hvis der er mere end 150 tegn skal teksten besk?res
$tekst = substr($tekst, 0, 0)."<a href='index.php?id=nyhedread&amp;vis=$id' class=\"link3\"><img src=\"subs/gfx/arrow.jpg\" alt=\"$data[overskrift]\" />&nbsp;L&aelig;s mere </a>"; // Der tilf?jes et link til en side hvor hele nyheden vises

}

echo "<strong>" . $data["overskrift"] . "</strong><br />";
echo $tekst;
echo "<br /><hr />";



}


?>
////slut på NYHED.php///

Min nyhed.php hives ind i min index.php fra en mappe der hedder "undersider" og bliver placeret i en DIV CONTAINER hvor førnævnte SWITCH ligger og styrer indhentning af siderne.
Skiftet sker via menupunktet "?=nyhed"

Hvordan får jeg så min side til at:
1) skifte statisk menu fra DK_ til UK_menu
2) Vil dit indlæg her så resultere i at der skiftes til en fil der hedder "news.php" ved klik på UK flag?
F.eks jeg står på http://simuu.dk/?id=nyhed&vis=14 og ved klik på UK flag skiftes der over til http://simuu.dk/?id=news&vis=14
Avatar billede coderdk Praktikant
16. oktober 2006 - 14:33 #22
1) Checker på $_SESSION['isUK'] - hvis den er true, så vis den engelske menu, ellers den danske.

2) Nej. Mit forslag gik ud på at have alle nyheder i samme tabel, og bare vise de felter der er relevante for sproget. Din nyhed.php f.eks:

<br /><h1>Nyheder</h1><br />

<?php
require_once "forbinder.php";

  $isUK = ( isset( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true );
  $header = 'overskrift' . ( $isUK ? '_uk' : '' );
  $content = 'tekst' . ( $isUK ? '_uk' : '' );

$foresp = mysql_query("SELECT id, $header, $content FROM nyheder ORDER BY id DESC LIMIT 0, 10")
    or die( mysql_error() );
while($data = mysql_fetch_array($foresp)){

$id = $data['id'];
$tekst = $data[$content];
$overskrift = $data[$header];
$tegn = strlen($tekst); // Hvor mange tegn er der i teksten?

if($tegn >= 0){ // hvis der er mere end 150 tegn skal teksten besk?res
$tekst = substr($tekst, 0, 0)."<a href='index.php?id=nyhedread&amp;vis=$id' class=\"link3\"><img src=\"subs/gfx/arrow.jpg\" alt=\"$overskrift\" />&nbsp;L&aelig;s mere </a>"; // Der tilf?jes et link til en side hvor hele nyheden vises

}

echo "<strong>" . $overskrift . "</strong><br />";
echo $tekst;
echo "<br /><hr />";



}


?>

Du skal stadig have den side, jeg beskrev ovenfor som vælger sproget, chlang.php - husk også session_start() hvor sproget skal checkes
Avatar billede sabumnim Novice
16. oktober 2006 - 14:46 #23
Hej igen

Ok, for jeg havde nemlig forestillet mig at input i min MySql skulle både på DK og UK og at der så skulle switches imllem henholdsvis dk og uk men med samme ID.

/Carsten
Avatar billede sabumnim Novice
17. oktober 2006 - 12:43 #24
CoderDK:

Vil det sige at jg skal opbygge alle mine tabeller i MySql på denne måde:

Forside tabel indeholder f.eks. 7 felter:
id, overskrift, billede, tekst, header (UK), picture (UK), texts (UK)

Og når ovenstående kommer i effekt sammen med dine koder vil der ved klik på UK flag skiftes fra DK sprog til UK sprog men indenfor samme ID?

Det samme vil ligeledes gøre sig gældende indenfor alle andre af min tabeller eller hvad?

Tilbage står stadig spørgsmålet med min statiske menu struktur.
Kan de skiftes på samme tid eller hvad...jeg formoder der skal bygges en fnktion op til dette på en eller anden facon.
Eks. så har jeg en mappe der hedder MENU.
I den mappe ligger to HTML filer som skal inkluderes alt efter sprogvalg.
Der ligger f.eks. en DK_menu.html som er default og så en UK_menu.htm som skal switche når der vælges et andet sprog.

/Carsten
Avatar billede coderdk Praktikant
17. oktober 2006 - 13:59 #25
Ja, du kan bruge samme princip til alle dine tables. Du skal bare kigge hvad jeg har skrevet efter i sømmene, så er det nemt nok at tilpasse.

Din statiske menustruktur kan klares ved et simpelt:

if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  require("UK_menu.php");
}
else
{
  require("DK_menu.php");
}
Avatar billede sabumnim Novice
17. oktober 2006 - 14:34 #26
Hej coderdk

Prøver at sammensætte et eksempel udfra ovenstående og vender så tilbage.

/Carsten
Avatar billede sabumnim Novice
19. oktober 2006 - 15:33 #27
Hej coderdk

Har nu lavet en tester, men den fejler for vildt.

Jeg har inkluderet chlang.php i toppen af siden med det resultat at den fejler.
Men fjerner jeg inkluden fejler den ikke.

Min kode på index.php ser sådan ud:
(Håber du kan se hvad der er galt)

////KODE/////
<?php include("chlang.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
    require_once "connecter.php";
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  require("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>
///////KODE SLUT/////

////MIN SIDE1 MED DK OG UK I MYSQL DB/////
<?php

  $sql = "SELECT * FROM tester WHERE newsid = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $result = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $result );
  $header = 'overskrift' . ( $isUK ? '_uk' : '' );
  $content = 'header' . ( $isUK ? '_uk' : '' );
  $picture = 'texten' . ( $isUK ? '_uk' : '' );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>
//////SIDE1 SLUT

Jeg har lagt det hele ud på et testhotel jeg har:
www.mediegrafiker.1go.dk

/Carsten
Avatar billede coderdk Praktikant
19. oktober 2006 - 15:35 #28
chlang.php skal KUN bruges når der skiftes sprog... Den skal kun indeholde det jeg skrev 15/10-2006 14:01:02 - Du skifter sprog ved at linke som jeg beskriver i samme post :)

Du skal nok bare udskifte;

<?php include("chlang.php");
?>

med:

<?php

  session_start();

?>
Avatar billede sabumnim Novice
19. oktober 2006 - 15:40 #29
Hej igen coderdk

Det må jeg sgu sige der er hurtig respons her :0)

Mit problem er jo at alle mine undersider skal være tilgængelige på både Dansk og Engelsk, så derfor SKAL chlang.php vel ligge på index.php idet denne mulighed skal være tilgængeligt igennem hele sitet.

/Carsten
Avatar billede coderdk Praktikant
19. oktober 2006 - 16:13 #30
Nej, chlang.php skal kun køres når der skal skiftes sprog... Du kan lave links på alle sider TIL den sådan:

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">UK</a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">DK</a>

Alle sider SKAL starte med session_start() før du printer noget ud ;)
Avatar billede sabumnim Novice
19. oktober 2006 - 16:39 #31
Hej igen

Stadig problemer.

Har nu gjort følgende:
På Index.php startet siden med
<?php
session_start();
?>
<html>......bla bla bla

</html>

På min side som henter tekst ind fra MySql har jeg gjort følgende:

Der inkluderer jeg chlang.php og så henter jeg fra MySql.

Når jeg så går ind på siden via linket ?id=2 skriver den:

Warning: Cannot modify header information - headers already sent by (output started at /data/cluster/free1go/m/e/www.mediegrafiker.1go.dk/index.php:15) in /data/cluster/free1go/m/e/www.mediegrafiker.1go.dk/chlang.php on line 4

CHLANG.PHP:
<?php
  session_start();
  $_SESSION['isUK'] = ( !empty( $_GET['lang'] ) && $_GET['lang'] == 'uk' );
  header( 'location: ' . $_GET['return'] );
  exit;
?>

Min side hvor chlang.php inkluderes:
<?php
    include ("chlang.php");
  $sql = "SELECT * FROM tester WHERE newsid = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $result = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $result );
  $header = 'overskrift' . ( $isUK ? '_uk' : '' );
  $content = 'header' . ( $isUK ? '_uk' : '' );
  $picture = 'texten' . ( $isUK ? '_uk' : '' );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>

Hvordan løser jeg dette problem, for det er jo som der skrives noget med at HEADERS allerede er sendt....

/Carsten
Avatar billede coderdk Praktikant
19. oktober 2006 - 16:59 #32
Jeg gentager lige mig selv en gang til :) Du skal *ikke* include chlang.php nogen steder - Du kan på de sider hvor der skal kunne skiftes sprog indsætte:

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">UK</a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">DK</a>

Så finder den selv ud af det...
Avatar billede sabumnim Novice
19. oktober 2006 - 20:29 #33
Hej igen

Super super...det havde jeg ikke lige forstået første gang du skrev det....som sagt er jeg ikke helt stiv i det her endnu og undskylder min langsomme fattevne.

Jeg ser på dette nye tiltag imorgen og melder tilbage.

/Carsten
Avatar billede coderdk Praktikant
19. oktober 2006 - 20:34 #34
hhehe det skal du ikke tænke på - vi har alle prøvet at skulle starte på noget nyt :)
Avatar billede sabumnim Novice
21. oktober 2006 - 11:43 #35
Hej igen

Nu har jeg så fjernet den omtalte include fra min side.

Men der stadig et problem.

Min MySql vil ikke printe noget ud via php koden.

////UDTRÆK FRA DB //////
<?php

  $sql = "SELECT overskrift,header,texten,overskrift_uk,header_uk,texten_uk FROM tester WHERE testerid = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $result = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $result );
  $overskrift = 'overskrift' . ( $isUK ? '_uk' : '' );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $texten = 'texten' . ( $isUK ? '_uk' : '' );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>

I min MySql hedder felterne: testerid, overskrift, header, texten, overskrift_uk, header_uk, texten_uk

MEN den echoer slet ingenting ud
////////KODE SLUT////////////

Min Index ser sådan ud:

////////////INDEX/////////////
<?php

  session_start();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
    require_once "connecter.php";
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>
////////////INDEX SLUT/////////////

Desuden vil den ikke skifte imellem min DK_menu.php og min UK_mennu.php.

Se siden i aktion her:
http://mediegrafiker.1go.dk/

Har du et umiddelbar bud coderdk?


//Carsten
Avatar billede coderdk Praktikant
21. oktober 2006 - 13:18 #36
////UDTRÆK FRA DB //////
<?php

  $sql = "SELECT overskrift,header,texten,overskrift_uk,header_uk,texten_uk FROM tester WHERE testerid = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $result = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $result );
  $overskrift = 'overskrift' . ( $isUK ? '_uk' : '' );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $texten = 'texten' . ( $isUK ? '_uk' : '' );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>

Skal vel være:

////UDTRÆK FRA DB //////
<?php

  session_start();

  $sql = "SELECT overskrift,header,texten,overskrift_uk,header_uk,texten_uk FROM tester WHERE testerid = " . intval( $_GET['id'] );
  $isUK = ( isset( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true );
  $result = mysql_query( $sql ) or die( mysql_error() );
  $row = mysql_fetch_assoc( $result );
  $overskrift = 'overskrift' . ( $isUK ? '_uk' : '' );
  $header = 'header' . ( $isUK ? '_uk' : '' );
  $texten = 'texten' . ( $isUK ? '_uk' : '' );
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>
Avatar billede sabumnim Novice
22. oktober 2006 - 12:38 #37
Hej Coderdk

Hvis jeg smider en session_start på den side der includeres...vil jeg så ikke opnå at få en session fejl igen da siden jo includeres på Index.php hvor der i forvejen ligger en session_start  ??

/Carsten
Avatar billede coderdk Praktikant
22. oktober 2006 - 12:57 #38
Ja, ok, hvis den bliver includet, så burde session_start() ikke være nødvendig der
Avatar billede sabumnim Novice
22. oktober 2006 - 16:46 #39
Hej igen

Det var også det jeg havde en svag idé om.

Men hvad kan så være fejlen for den vil intet?

/Carsten
Avatar billede sabumnim Novice
22. november 2006 - 21:06 #40
Hej Coder DK

Nu har jeg flyttet mine sider til mit eget domæne hvor jeg skulle mene at de kører mere stabilt.
Men jeg kan stadig ikke få dem til at ECHO noget ud.

Kan du mon se hvad fa... der er galt har forsøgt lidt af hvert nu og intet virker.

Siden ligger nu på www.mediegrafikeren.dk/sproget

Som du kan se på linket her:
http://mediegrafikeren.dk/sproget/?id=2

Vil den intet ECHO ud.
Koden dertil ser sådan ud (er kun den side der spytter kode ud fra mysql)
///// ID 1 /////
<?php

  $sql = "SELECT * FROM tester WHERE id = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $result = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  $overskrift = 'overskrift' . ($isUK ? '_uk' : '');
  $header = 'header' . ($isUK ? '_uk' : '');
  $texten = 'texten' . ($isUK ? '_uk' : '');
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row["overskrift"] . "</h1>";
  echo $row["header"];
  echo $row["texten"];


?>
/////// ID 1 SLUT //////

Men ser du på dette link:
http://mediegrafikeren.dk/sproget/?id=2

Spytter den hele teksten ud.

Koden hertil er:
////// ID 2 /////////
<?


$foresp = mysql_query("SELECT * FROM tester");

$data = mysql_fetch_array($foresp);
$id = $data['id'];
$overskrift = $data['overskrift'];
$header = $data['header'];
$texten = $data['texten'];
$overskrift_uk = $data['overskrift_uk'];
$header_uk = $data['header_uk'];
$texten_uk = $data['texten_uk'];



  echo "<h1>" . $data["overskrift"] . "</h1>";
  echo $data["header"];
  echo $data[$texten];
  echo "<br /><h1>" . $data["overskrift_uk"] . "</h1>";
    echo $data["header_uk"];
  echo $data["texten_uk"];


?>
////////// ID 2 SLUT //////////

Desuden vil den HELLER ikke skifte imellem DK og UK menu endnu ???


Jeg vil gerne snart til at sætte det hele sammen men mangler dette for at kunne komme rigtig igang med den endelige programmering.

Mvh.
Carsten
Avatar billede coderdk Praktikant
22. november 2006 - 23:15 #41
Igen. chlang.php skal indeholde:

<?php

  session_start();
  $_SESSION['isUK'] = ( !empty( $_GET['lang'] ) && $_GET['lang'] == 'uk' );
  header( 'location: ' . $_GET['return'] );
  exit;

?>

Dine links til at skifte sprog skal være:

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">UK</a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">DK</a>

Jeg kan se at lige nu er "return" tom...

Alle sider skal starte med session_start(); som det første, og $isUK skal være:

$isUK = ( !empty( $_SESSION['isUK'] ) ? $_SESSION['isUK'] : false );

i stedet for:

$isUK = isset( $_GET['uk'] );
Avatar billede sabumnim Novice
23. november 2006 - 12:18 #42
Hej Coderdk

Det prøver jeg lige når jeg kommer hjem.

Men kan du i mellemtiden svare mig på hvorfor min ene side
http://mediegrafikeren.dk/sproget/?id=2
ikke vil ECHO noget ud mens min side:
http://mediegrafikeren.dk/sproget/?id=3
gerne vil ECHO ud

Se kommentar: 22/11-2006 21:06:57

/Carsten AP
Avatar billede coderdk Praktikant
23. november 2006 - 16:59 #43
Hvordan ser index.php ud? Din side virker ikke lige nu - Masser af SQL-fejl.
Avatar billede sabumnim Novice
26. november 2006 - 16:01 #44
Hej coderdk

Min Index.php ser sådan ud:

//////////// KODE 1 ///////
<?php

  session_start();
  $_SESSION['isUK'] = ( !empty( $_GET['lang'] ) && $_GET['lang'] == 'uk' );
  header( 'location: ' . $_GET['return'] );
  exit;
  require_once "connecter.php";

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
   
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
        case 3:
        include "undersider/side2.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>
//////////// KODE 1 SLUT ///////////

Men nu vil den slet intet??

Derfor ændrede jeg den tilbage til det den var før jeg implementerede dine ændringer som foreslået den 22/11-2006 23:15:13

Så nu viser min side igen noget og min index er nu som følger:

/////////// KODE 2 /////////////
<?php

  session_start();
require_once "connecter.php";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
   
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
        case 3:
        include "undersider/side2.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>

///////////// KODE 2 SLUT //////////

Mvh.
/Carsten AP
Avatar billede coderdk Praktikant
26. november 2006 - 17:25 #45
Igen. chlang.php skal indeholde:

<?php

  session_start();
  $_SESSION['isUK'] = ( !empty( $_GET['lang'] ) && $_GET['lang'] == 'uk' );
  header( 'location: ' . $_GET['return'] );
  exit;

?>

Du havde sat koden ind i index.php - Det skal som jeg har skrevet flere gange være chlang.php - Den fil skal kun indeholde de 8 linjer!
Din KODE 2 ser fin nok ud, men hvor har du de to links:

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">UK</a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">DK</a>

I menuen går jeg ud fra, hvilket er fint :)
Avatar billede sabumnim Novice
26. november 2006 - 23:08 #46
Hej Coderdk

Det er helt rigtigt at de links som laver en "urlencode" ligger i menuen, både dansk og engelsk.

Jeg vil igen forsøge at rette til med det her chlang.php

Ang. mit spørgsmål fra d. 22/11-2006 21:06:57 omkring mine UNDERSIDER
Kan du så umiddelbart se hvorfor min kode ikke vil ECHO noget ud?

Som jeg skriver på ovennævnte dato har jeg sat min kode ind hvor den ene side GODT vil ECHO INDHOLD UD mens den ANDEN IKKE VIL noget som helst.

///// KODE TIL http://mediegrafikeren.dk/sproget/?id=2 starter /////
<?php

  $sql = "SELECT * FROM tester WHERE id = " . intval( $_GET['id'] );
  $isUK = isset( $_GET['uk'] );
  $result = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  $overskrift = 'overskrift' . ($isUK ? '_uk' : '');
  $header = 'header' . ($isUK ? '_uk' : '');
  $texten = 'texten' . ($isUK ? '_uk' : '');
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row["overskrift"] . "</h1>";
  echo $row["header"];
  echo $row["texten"];


?>
///// KODE TIL http://mediegrafikeren.dk/sproget/?id=2 slutter /////

Håber lidt at du kan finde en eller anden lille fejl i koden som resulterer i ovenstående problem.

Mvh.
Carsten AP
Avatar billede coderdk Praktikant
27. november 2006 - 01:07 #47
$isUK = isset( $_GET['uk'] );

bør være:

$isUK = ( isset( $_SESSION['isUK'] ) ? $_SESSION['isUK'] : false );

og:

  echo "<h1>" . $row["overskrift"] . "</h1>";
  echo $row["header"];
  echo $row["texten"];

skal vel være:

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];
Avatar billede sabumnim Novice
29. november 2006 - 18:39 #48
Hej coderdk

Nu har jeg forsøgt at sætte de forskellige rettelser ind på de steder du beskriver.

////// MIN INDEX.PHP KODE //////

<?php
include "chlang.php";
require_once "connecter.php";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
   
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
        case 3:
        include "undersider/side2.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>

/////// INDEX.PHP SLUTTER ////

Min chlang.php indeholder nu kun de 8 linier du angiver d. 26/11-2006 17:25:25

Har ligeledes rettet i min side1.php med de rettelser fra d. 27/11-2006 01:07:02

MEN nu vil siden slet ikke vises ????

Nogle videre forslag

/Carsten AP
Avatar billede coderdk Praktikant
29. november 2006 - 19:37 #49
nej, du skal ikke include chlang.php - det er en enkeltstående fil! Den bliver kun brugt i det øjeblik hvor brugeren vælger at skifte sprog...
Avatar billede sabumnim Novice
10. december 2006 - 18:23 #50
Hej igen Coderdk

Nu prøver vi så igen.

Har implementeret dine foreslåede ændringer og nu vil min side så stadig ikke ECHO noget ud på de to sider der er Database indhold på.

Her kommer mine koder:

/////// INDEX.PHP /////
<?php
require_once "connecter.php";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
   
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
        case 3:
        include "undersider/side2.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>

/////// INDEX.PHP SLUTTER ////

/////// MENUEN STARTER, ENS FOR BÅDE DK OG UK //////

<p class="titel">DK menu siden </p>
<p><a href="?id=1">Til startsiden</a> - <a href="?id=2">Side 1</a> - <a href="?id=3">Side 2</a></p>

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>"><img src="gfx/dk_on.jpg" alt="dk" width="28" height="20"></a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>"><img src="gfx/us_on.jpg" alt="dk" width="28" height="20"></a>

///////// MENUEN SLUTTER ///////

//////// SIDE DER HENTER DATABASE INDHOLD //////

<?php

  $sql = "SELECT * FROM tester WHERE id = " . intval( $_GET['id'] );
  $isUK = ( isset( $_SESSION['isUK'] ) ? $_SESSION['isUK'] : false );
  $result = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  $overskrift = 'overskrift' . ($isUK ? '_uk' : '');
  $header = 'header' . ($isUK ? '_uk' : '');
  $texten = 'texten' . ($isUK ? '_uk' : '');
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];


?>

////// SIDE MED DB INDHOLD SLUTTER //////

Kan du coderdk, se hvad der sker og hvorfor menuen hverken skifter imellem DK og UK menu samt hvorfor jeg ikke opnår noget udtræk fra min DB?

/Carsten
Avatar billede coderdk Praktikant
10. december 2006 - 20:44 #51
connecter.php - starter den med session_start()? for det lader til at du manger en session_start() et sted eller to...
Avatar billede sabumnim Novice
10. december 2006 - 22:01 #52
Hej Coderdk

Nej jeg mener ikke at den starter med session.

Kan jeg ikke bare lægge min SESION_START(); ind på Index.php så den altid ligger aktiv da alle mine undersider bliver inkluderet?

/Carsten
Avatar billede coderdk Praktikant
11. december 2006 - 00:28 #53
Jo, det lyder fint - Det skal bare være det første der sker, intet output før session_start(); og du kan kun tilgå $_SESSION-variable når dette er gjort
Avatar billede sabumnim Novice
13. december 2006 - 20:09 #54
Hej Coderdk

Nu har jeg så smidt en SESSION_START ind som det allerførste på min index side.
Nu sker der følgende:

Jeg klikker på et flag, enten DK eller UK og så hopper siden til en URL som ikke kan vises.
Men klikker jeg så med musen på TILBAGE knappen i browseren er menuen skiftet fra DK til UK.
Kan det ikke lade sig gøre at den bare hoper derover med det samme.
Det er som om at den ikke modtager noget parameter den kan bruge.

Se på www.mediegrafikeren.dk/sproget

////// MIN INDEX.PHP //////
<?php
SESSION_START();
require_once "connecter.php";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
   
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php
    switch ($_GET["id"]) {
    default:
        include("undersider/start.php");
        break;
    case 1:
        include "undersider/start.php";
        break;
    case 2:
        include "undersider/side1.php";
        break;
        case 3:
        include "undersider/side2.php";
        break;
       
 
}
?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>
//////// INDEX slutter //////

Min CHLANG.php ser ud som du har angivet tidligere.

Desuden vil min kode stadig ikke ECHO noget ud og jeg har fulgt din vejledning til prikke?

/Carsten "den succestvivlende"
Avatar billede coderdk Praktikant
13. december 2006 - 21:44 #55
Hvordan ser linkene ud?

<a href="chlang.php?lang=uk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">UK</a>
<a href="chlang.php?lang=dk&return=<?= urlencode( $_SERVER['REQUEST_URI'] ) ?>">DK</a>

Burde fylde return med noget, og den er tom...

chlang.php retter vi lige så det ser sådan ud:

<?php

  session_start();
  $_SESSION['isUK'] = ( !empty( $_GET['lang'] ) && $_GET['lang'] == 'uk' );
  $ret = ( !empty( $_GET['return'] ) ? $_GET['return'] : 'index.php' );
  header( 'location: ' . $ret );
  exit;

?>

Siden der henter databaseindhold, som jeg går ud fra er undersider/start.php side1.php eller side2.php laver vi om så vi kan se hvad der går galt:

<?php

  $sql = "SELECT * FROM tester WHERE id = " . intval( $_GET['id'] );
  $isUK = ( isset( $_SESSION['isUK'] ) ? $_SESSION['isUK'] : false );
  $result = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  echo sprintf("Hentede %d rækker<br><pre>",mysql_num_rows($result));
  var_dump($row);
  echo "</pre>";
  $overskrift = 'overskrift' . ($isUK ? '_uk' : '');
  $header = 'header' . ($isUK ? '_uk' : '');
  $texten = 'texten' . ($isUK ? '_uk' : '');
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>
Avatar billede sabumnim Novice
14. december 2006 - 19:42 #56
Hej Coderdk

Har nu indført de rettelser som du har angivet heroven for.

Nu retter den fint menuen fra UK til DK uden at gå i "sort".

Desuden skriver den på side1.php :
// Klippet ////
Hentede 0 rækker

bool(false)
/// Klippet slut //

Hvad betyder dette udover at den ikke henter noget ud fra min BD?

/Carsten
Avatar billede coderdk Praktikant
14. december 2006 - 21:18 #57
yeps, intet blev hentet fra databasen...
Avatar billede sabumnim Novice
15. december 2006 - 12:16 #58
Hej Coderdk

Hvad gør jeg så herfra?

Tager et tjek på indholdet i min DB eller hvad?

/Carsten
PS. Har tjekket op på min DB forbindelsesscript og det virker.
Avatar billede coderdk Praktikant
15. december 2006 - 15:59 #59
Skriv SQL'en ud og se om det ser ud som det skal, evt fyr den af i phpMyAdmin. Mit gæt er at den ikke finde noget i databasen ;)
Avatar billede sabumnim Novice
15. december 2006 - 22:22 #60
Hej Coderdk

Følgende er et dump far min MySql hvor det gælende er for tabellen "tester"

///// DUMP //////
-- Struktur-dump for tabellen `tester`
--

CREATE TABLE `tester` (
  `id` int(11) NOT NULL auto_increment,
  `overskrift` tinytext NOT NULL,
  `header` tinytext NOT NULL,
  `texten` text NOT NULL,
  `overskrift_uk` text NOT NULL,
  `header_uk` tinytext NOT NULL,
  `texten_uk` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Data dump for tabellen `tester`
--

INSERT INTO `tester` (`id`, `overskrift`, `header`, `texten`, `overskrift_uk`, `header_uk`, `texten_uk`) VALUES
(1, 'Velkommen', 'Her er en header', 'Her er noget tekst på dansk, som gerne skal skifte til engelsk sprog når der klikkes på flaget i toppen af siden.', 'Welcome', 'Here is a header thingy', 'Here is some text in english, that should be changed when the US flag at the top is clicked.');

////// DUMP SLUT ///

Så der ligger altså indhold i min DB med tabellen "tester" men kan ikke forstå hvor det ikke bliver ECHO´et ud når jeg afvikler min SELECT som vist ovenfor på den 13/12-2006 21:44:06

Nogle kloge input?

/Carsten
Avatar billede sabumnim Novice
02. oktober 2007 - 00:19 #61
Hej

Efter længere tids fravær er jeg nu tilbage og CoderDK jeg håber du stadig "lytter med" og stadig kan afse tid til at hjælpe mig.

Jeg håber du vender tilbage, da jeg stadig ike har løst ovenstående problem.

//Carsten
Avatar billede coderdk Praktikant
02. oktober 2007 - 02:07 #62
Ok. Mere end 1 år gammelt :P

Det burde virke, såfremt siden bliver kaldt: side1.php?id=1
Avatar billede sabumnim Novice
02. oktober 2007 - 07:04 #63
Hej Coderdk

Jep, du har ret at indlægget efterhånden er ved at være ret gammelt.

Men som jeg giver udtryk for virker det satdig ikke.
Min kode i både php/mysql er som indlægget fra den 15/12-2006 22:22:44

Desværre får jeg ikke noget output endnu når jeg klikker ind på undersiderne trods det at der er indhold i mysql som du kan se udfra samme indlæg.
Jeg aner ikke hvad der sker og mangler derfor stadig hjælp.

Min menu bliver ændret fint men indholdet som skulle kaldes fra mysql bliver ikke echo´et ud.

Min tester ligger stadig på: www.mediegrafikeren.dk/sproget


//Carsten
Avatar billede coderdk Praktikant
02. oktober 2007 - 08:37 #64
Det hænger jo heller ikke sammen. index.php bruger "id" til at bestemme hvilken underside der includes, og "id" bruges OGSÅ i siderne til at hente en record ud fra mysql. Den record du har i databasen har ID 1 og ID 1 i index.php er start.php? Det er klart at hvis du trykker på page 1 eller page 2 (med ID 2 og 3) at der ikke kommer noget ud, da der kun er ÉN række i databasen (med ID 1).

Du kan evt. prøve at fyre dem af mod databasen:

INSERT INTO `tester` (`id`, `overskrift`, `header`, `texten`, `overskrift_uk`, `header_uk`, `texten_uk`) VALUES
(2, 'Velkommen', 'Her er en header', 'Her er noget tekst på dansk, som gerne skal skifte til engelsk sprog når der klikkes på flaget i toppen af siden.', 'Welcome', 'Here is a header thingy', 'Here is some text in english, that should be changed when the US flag at the top is clicked.');
INSERT INTO `tester` (`id`, `overskrift`, `header`, `texten`, `overskrift_uk`, `header_uk`, `texten_uk`) VALUES
(3, 'Velkommen', 'Her er en header', 'Her er noget tekst på dansk, som gerne skal skifte til engelsk sprog når der klikkes på flaget i toppen af siden.', 'Welcome', 'Here is a header thingy', 'Here is some text in english, that should be changed when the US flag at the top is clicked.');

Så kan det være du får noget ud.
Avatar billede sabumnim Novice
02. oktober 2007 - 22:22 #65
Hej CoderDK

Nu har jeg smidt ovenstående ind i MySql.

Linket er stadig som før.
Den opfører sig lidt underligt stadigvæk, men den printer dog noget ud.
Det kan være du har en anden god idé til det problem du tidligere belyser.

Min nuværende SQL dump:
//////////////////////////////////
CREATE TABLE `tester` (
  `id` int(11) NOT NULL auto_increment,
  `overskrift` tinytext NOT NULL,
  `header` tinytext NOT NULL,
  `texten` text NOT NULL,
  `overskrift_uk` text NOT NULL,
  `header_uk` tinytext NOT NULL,
  `texten_uk` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Data dump for tabellen `tester`
--

INSERT INTO `tester` (`id`, `overskrift`, `header`, `texten`, `overskrift_uk`, `header_uk`, `texten_uk`) VALUES
(1, 'Velkommen', 'Her er en header', 'Her er noget tekst på dansk, som gerne skal skifte til engelsk sprog når der klikkes på flaget i toppen af siden.', 'Welcome', 'Here is a header thingy', 'Here is some text in english, that should be changed when the US flag at the top is clicked.'),

(2, 'Velkommen (id 2)', 'Her er en header', 'Her er noget tekst på dansk, som gerne skal skifte til engelsk sprog når der klikkes på flaget i toppen af siden.', 'Welcome (id 2)', 'Here is a header thingy', 'Here is some text in english, that should be changed when the US flag at the top is clicked.'),

(3, 'Velkommen', 'Her er en header', 'Her er noget tekst på dansk, som gerne skal skifte til engelsk sprog når der klikkes på flaget i toppen af siden.', 'Welcome', 'Here is a header thingy', 'Here is some text in english, that should be changed when the US flag at the top is clicked.');

//Carsten
Avatar billede coderdk Praktikant
02. oktober 2007 - 23:19 #66
Hvorfor ikke bare lade index.php indeholde:

<?php
SESSION_START();
require_once "connecter.php";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sprogtest</title>
<link href="tester.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0" class="tabellen">
  <tr>
    <td><?php
 
    if ( !empty( $_SESSION['isUK'] ) && $_SESSION['isUK'] == true )
{
  include("menu/menu1.php");
}
else
{
  require("menu/menu.php");
} ?></td>
  </tr>
  <tr>
    <td class="content"><?php

  $sql = "SELECT * FROM tester WHERE id = " . intval( $_GET['id'] );
  $isUK = ( isset( $_SESSION['isUK'] ) ? $_SESSION['isUK'] : false );
  $result = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  $overskrift = 'overskrift' . ($isUK ? '_uk' : '');
  $header = 'header' . ($isUK ? '_uk' : '');
  $texten = 'texten' . ($isUK ? '_uk' : '');
  // Der tilføjes _uk til feltnavnene, hvis brugeren har valgt UK

  echo "<h1>" . $row[$overskrift] . "</h1>";
  echo $row[$header];
  echo $row[$texten];

?>
    <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td class="foot">Dette er en footer tekst </td>
  </tr>
</table>
</body>
</html>

For mig at se, er undersiderne unødvendige...
Avatar billede coderdk Praktikant
02. oktober 2007 - 23:20 #67
$sql = "SELECT * FROM tester WHERE id = " . intval( $_GET['id'] );

skal måske lige laves om til:

$id = intval( $_GET['id'] ) == 0 ? 1 : intval( $_GET['id'] );
$sql = "SELECT * FROM tester WHERE id = " . $id;

Så vil den som default hente ID 1 ud (hvis ingen er angivet)
Avatar billede sabumnim Novice
09. oktober 2007 - 21:25 #68
Hej Coderdk

Så virker det NÆSTEN efter hensigten...

Der er et lille men som jeg gerne ville høre om du havde en løsning på.

Når jeg står på f.eks side 2 ( http://www.mediegrafikeren.dk/sproget/ )

og valgt dansk sprog fra starten af.
Så klikker jeg på UK (chlang aktiveres) men så springer den tilbage til index.php

Kan det lade sig gøre blot at blive på samme side og skifte direkte over til samme indhold blot på engelsk?

Håber du forstår mit spørgsmål og har en hurtigt løsning.
Kunne forestille mig noget med at der skal flettes noget id på chlang scriptet.....

//Carsten
Avatar billede sabumnim Novice
09. oktober 2007 - 21:28 #69
Hej igen

Har lige et ps.....

Hvad sker der hvis jeg har flere end to id på en side.

Jeg har f.eks en nyhedsside hvor der er mange id på da den jo auto incrementerer i min mysql.

Så der kan jo være f.eks id=1 og id=2 og id=3 og id=4 etc.....

Er det irrelevant i denne sammenhæng?

//Carsten
Avatar billede coderdk Praktikant
10. oktober 2007 - 01:15 #70
chlang.php burde redirecte til den side den kom fra, da linket bliver "bygget" med $_SERVER['REQUEST_URI'] - Hvordan ser den kode ud, hvor linkene til chlang.php er?

Og mnæeh du viser jo én ID pr side...
Avatar billede sabumnim Novice
29. oktober 2007 - 21:48 #71
Hej Coderdk

Jvf. ovenstående betyder det så summasumarum at jeg ikke kan benytte dette alligevel da jeg kun kan vise et id pr. side?

Er det sådan jeg skal opfatte det?

Det er sgu da trist at vi har brugt så meget tid på det for så at finde ud af i 11. time at det rent faktisk ikke kan bruges da jeg jo visse steder ønsker at have flere id´s (f.eks en nyhedsliste-visning)

//Carsten
Avatar billede coderdk Praktikant
30. oktober 2007 - 08:43 #72
Nej. Nyhedslistevisning er jo en liste. ID'en er til hvis du skal vise én specifik. I URL'en på listevisningen har du jo heller ikke alle ID'erne oppe i URL'en.
Avatar billede sabumnim Novice
27. maj 2008 - 19:48 #73
Hej Coderdk

Faldt lige over denne sprogting som jeg oprettede sidste år og så at jeg stadig ikke havde accepteret dit svar.

Det har jeg nu gjort, da det virker efter hensigten.

Tusinde tak for din tålmodighed med mig og jeg undskylder meget at jeg er lidt fat-svag men jeg er meget taknemmelig for den hjælp du har givet mig her.

//Carsten aka Sabumnim
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester