Newsgroup: it.comp.www.php
Titolo: Novello - problema articoli in più lingue

Ciao a tutti!
Sto creando un piccolo sito per pubblicare alcuni articoli e seguendo un
tutorial che ho trovato su 
html.it
 sono riuscito a creare un sistema di
inserimento di articoli nel DB che mi permette di richiamarli
successivamente. Ogni articolo per me in verità è una pagina vera e propria
che faccio stampare all'interno del templete creato. Ora in punto è che
vorrei tradurre ogni singola pagina in una lingua differente, in modo che da
qualunque punto del sito sia possibile tradurre l'articolo nella lingua
voluta. Per il templete e i bottoni ci sono, ma per gli articoli ho
difficoltà. In particolare:
Ho creato la tabella news in questo modo:
$query = "CREATE
TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR
(255)
not null , testo TEXT not null , data INT (11) , autore VARCHAR (50) , mail
VARCHAR
(50) , PRIMARY KEY (id))"; if (mysql_query($query, $db)) echo
"L'installazione
è stata eseguita correttamente"; else echo "Errore durante l'installazione";
/*
e ogni articolo è richiamabile specificando l'id, in una forma del tipo:
www.miosito.com/view.php?id=1
e in view.php ho fatto:
$query = "SELECT titolo,testo,data,autore,mail FROM news WHERE id='$id'";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
$data = date("j/n/y", $row[data]);
echo "<b>$row[titolo]</b><br><br>";
echo "$row[testo]<br>";
come dovrei procedere per poter inserire nello stesso Id del DB la versione
dell'articolo in altra lingua e che parametro nellURL devo inserire perchè
mi traduca la pagina visualizzata (il visitatore pensavo, potrebbe cliccare
su una bandierina a lato pagina)
Grazie infinite, scusate per la banalità della domanda...ma sono davvero
zero assoluto
Ciao
Mike

 successivamente. Ogni articolo per me in verità è una pagina vera e
propria
[CUT]
Provo a rispondermi da solo, anche se mi ha generato un errore. Sto
procedendo così:
Ho creato un altro campo nella tabella news del mio db e l'ho chiamato
"testo_en" uguale in tutto e per tutto al campo "testo" dove invece ci va il
testo in italiano.
Sostituendo nella query il valore testo con testo_en mi seleziona
correttamente il testo in inglese.
Ma vorrei fare una cosa tipo: se l'url ti passa il valore
view.php?id=1&lg=ita fai questa cosa se ti passa lg=eng fai quest'altra.
Allora ho partorito:
$query = "SELECT titolo,testo,data,autore,mail FROM news WHERE id='$id'";
$query_lg = "SELECT titolo,testo_en,data,autore,mail FROM news WHERE
lg='$lg'";
   if (!$lg){
        include ("nulla.inc.php");  } /* è un file vuoto!!!*/
        elseif ($lg=="ita")
        { $result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
$data = date("j/n/y", $row[data]);
echo "<b>$row[titolo]</b><br><br>";
echo "$row[testo]<br>";  }
  elseif ($lg=="eng")
        { $resulten = mysql_query($query_lg, $db);
$rowen = mysql_fetch_array($resulten);
$dataen = date("j/n/y", $rowen[data]);
echo "<b>$rowen[titolo]</b><br><br>";
echo "$rowen[testo_en]<br>";  }
se gli do view.php?id=1&lg=ita va tutto bene
se gli do view.php?id=1&lg=eng mi da questo errore:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
resource in C:\wampp2c\htdocs\sito\view.php on line 26
che precisamente sarebbe questa riga:
$rowen = mysql_fetch_array($resulten);
cosa sbaglio?????
Grazie mille a chi mi da una mano!!!
Mike

cosa sbaglio?????
In realta' fai un meta-errore: non controlli con mysql_num_rows quanti
risultati hai... e SE hai risultati.
Se non ne hai, fetch_array si incatasta. Credo sia successo questo.
Inoltre, se non mi sbaglio, quella query nel caso ENG ignora l'id, per
cui ti ritorna sempre lo stesso articolo...?
Leonardo

 ha scritto:

mah...il risultato c'è, perchè l'articolo l'ho inserito con phpmyadmin ...
sai che errore mi da adesso? Solo una virgola!
Grazie lo stesso...
Mike

sai che errore mi da adesso? Solo una virgola!
E mi dimenticavo di questo, che e' l'errore vero (ma avrebbe dovuto
avvertirti MySQL)
   if (!$lg)
   {
        include ("nulla.inc.php");  } /* č un file vuoto!!!*/
   elseif ($lg=="ita")
    { $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
Se ti passo lg=ENG, non includi "nulla.inc.php" perche' lg e' definito,
ma nemmeno effettui la query. Quindi fetchi un array dal nulla, e bang.
Dovrebbe quindi essere:
	if (!isset($lg))
		$lg = '';	// Default
	switch($lg)
	{
		case '':
			include 'nulla.inc.php';
			exit;
		case 'ita':
			$result = mysql_query($query, $db);
			break;
		default:
			print "Linguaggio $lg non supportato";
			exit;
	}
Leonardo

    {
[CUT]
Leonardo, grazie mille!!! Provo subito e ti faccio sapere!!
Grazie davvero!
Mike