Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zawartość wybranego elementu jednej tablicy w drugiej
patryk9200
post 7.02.2009, 01:14:37
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


Witam!

Posiadam stronę internetową, którą postanowiłem przerobić na wersje wielojęzyczną.
Uzyłem do tego tablic:

'language' => array('Wybierz język: ', 'Select Language: ', 'Sprache auswählen: ', 'Choisissez la langue: ', 'Selecteer taal: '),
'plogowania' => array('Podaj dane do logowania w systemie', 'Enter details to log on', 'Geben Sie Details um sich über das System', 'Sil vous plaît soumettre votre login', 'Gelieve uw login'),

którą to mam zapisaną w pliku lang.php.

Aby wyświetlić wybrany element po przełączeniu języka wpisuje echo lang('plogowania');
Posiadam również inną tablicę z zaincludowanym plikiem lang.php:

'a8' => array ( 'id' => 10, 'nazwa' => 'Język', 'fieldname' => 'a8', 'pole' => 'listaRP' , 'checked' => 'first' ),

do której to w miejsce 'Język' muszę przekazać dane z tablicy pierwszej po przełączeniu języka. Próbowałem np. tak:

'a8' => array ( 'id' => 10, 'nazwa' => ''.lang('language').'', 'fieldname' => 'a8', 'pole' => 'listaRP' , 'checked' => 'first' ),

ale z jakiegoś powodu zwraca mi puste pole. Jak to rozwiązać? albo jak w inny sposób pobierac wybrane elementy tablicy1 do tablicy2??

Dodam jeszcze, że skrypt jest zrobiony identycznie jak ten na stronie: http://www.webday.pl/viewtopic.php?f=46&p=3542

Wszystko działa poza elementami z tej drugiej tablicy ;/

Ten post edytował patryk9200 7.02.2009, 01:17:50
Go to the top of the page
+Quote Post
Crozin
post 7.02.2009, 06:46:48
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Pokaż Twój dokładny kod PHP. Podejrzewam, że błąd jest w tym, że chcesz się odwołać do tego języka, zanim on jeszcze zostaje zdeklarowany.

PS. Co to ma do OOP?
PS2. Niezbyt wygodna metoda na przechowywanie języków.
Go to the top of the page
+Quote Post
patryk9200
post 7.02.2009, 16:35:34
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


ok
A więc tak tak wygląda kod tabeli w której muszę podmienić język:
CODE
include "lang.php";

$panel_komisu = array ( 'Osobowe' => array ( ''.lang("osobowe").'' => array ( 'id' => 1, 'nazwa' => ''.$marka.'', 'fieldname' => 'marka_osobowe', 'pole' => 'lista_marka' , 'checked' => 'first' ),
'model_osobowe' => array ( 'id' => 2, 'nazwa' => 'Model', 'fieldname' => 'model_osobowe', 'pole' => 'lista_model' , 'checked' => 'first' ),
'wersja'=> array ( 'id' => 2, 'nazwa' => 'Wersja modelu, itp...', 'fieldname' => 'wersja', 'pole' => 'input1' , 'maxlength' => 20 ),
'stats' => array ( 'id' => 110, 'nazwa' => 'Liczba wy¶wietleń', 'fieldname' => 'stats', 'pole' => 'input1' , 'maxlength' => 7 ),
'numer' => array ( 'id' => 111, 'nazwa' => 'Numer ogłoszenia', 'pole' => 'input1' ), ), ?>




Z tak wygląda kod odpowiedzialny za podmienianie danych:

CODE
<?php


if ($_GET['lang']){
setcookie('lang', $_GET['lang'], time()+12*2592000);
};


if ($_GET['lang']){ //jeśli wybrano zmianę języka, aktualizuje ciastko.
setcookie('lang', $_GET['lang'], time()+12*2592000);
};

function lang($zm){
if (isset($_COOKIE['lang']) && !isset($_GET['lang'])) { // sprawdzamy czy istnieje ciastko LANG i czy nie wysłano przypadkiem polecenia zmiany języka. Jeśli się zgadza to ustawiamy zmienną na zawartość ciastka.

$tong = $_COOKIE['lang'];
}
elseif($_GET['lang']){ // jeśli zostało wysłane polecenie zmiany języka, aktualizujemy ciastko oraz ustawiamy zmienną na tą wartość. Przez to unikam konieczności odświeżania strony, po każdym kliknięciu zmiany języka
$tong = $_GET['lang'];
}
else { //jeśli ktoś nie dokonał wcześniej wyboru języka
$tong = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
};
//------------czesc II------------------
switch ($tong) {
case 'pl': $tong = 0; break;
case 'en': $tong = 1; break;
case 'de': $tong = 2; break;
case 'fr': $tong = 3; break;
case 'nl': $tong = 4; break;
// tu dodajemy deklaracje kolejnych wersji językowych

default: $tong = 0; break;
}
//------------czesc III------------------

$lang = Array(

//---------------------poprawność wyświetlania różnych wersji językowych---------------------------

'jezykstrony' => array("<head><meta http-equiv='Content-Type' content='text/html; charset=windows-1250' /><meta http-equiv='Content-pl' content='pl' /></head>", "<head><meta http-equiv='Content-Type' content='text/html; charset=windows-1250' /><meta http-equiv='Content-en' content='en' /></head>", "<head><meta http-equiv='Content-Type' content='text/html; charset=windows-1250' /><meta http-equiv='Content-de' content='de' /></head>", "<head><meta http-equiv='Content-Type' content='text/html; charset=windows-1250' /><meta http-equiv='Content-fr' content='fr' /></head>", "<head><meta http-equiv='Content-Type' content='text/html; charset=windows-1250' /><meta http-equiv='Content-nl' content='nl' /></head>"),


//------------------------------------------administracja------------------------------------------

"marka" => array('marka', 'mark', 'ABS', 'ABS', 'ABS'),

'tstatus' => array('Twój status:', 'Type of Account:', 'Art des Kontos:', 'Type de compte:', 'Type account:'),
'menu' => array('Menu', 'Menu', 'Menü', 'Menu', 'Menu'),

);
return $lang[$zm][$tong];

};
?>






A tak wygląda kod odpowiedzialny za wyświetlanie danych na stronie:

CODE

<?

$page = $_GET['page'];
$id = $_GET['id'];

$section = $_POST['section'];
$action = $_POST['action'];
$special = $_POST['special'];

if ($page == 'add' && $action == 'save' && !$special)
{
foreach ($_POST as $key => $value)
$$key = $value;
}


if (!$marka)
$marka = 0;
if (!$model)
$model = 0;


// ================================================================================
=================================================================
// ============================================================== osobowe ===========================================================================
// ================================================================================
=================================================================
if ($section == 1)
{
if ($action == 'save')
{
if (!$errtext)
{
$errtext = CheckVerifyForm($section);
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckWarrningForm($section);
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckVerifyDaneKontatkoweForm('BezLogowania');
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckVerifyTelefonyForm('BezLogowania');
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckVerifyEmailForm('BezLogowania');
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
$ogloszenie -> Zapamietaj($_POST);
$_SESSION['ogloszenie'] = $ogloszenie;

// if ($_SESSION['panel'] -> lo && $_SESSION['panel'] -> pa && $_SESSION['panel'] -> status != 1 && !$print)
// var_export ($ogloszenie);

}

if (($action == 'save' && $errtext) || ($action == 'create') || ($action == 'edit'))
{
echo '<div id="search">
<form action="?page='.$page.'&id='.$id.'" method="post">
<input type="hidden" name="section" value="'.$section.'">
<input type="hidden" name="action" value="save">
<table width="535" cellpadding=0 cellspacing=0>
<tr>
<td colspan="3" style="border: solid #828282; border-width: 0px 0px 2px 0px;">
<h1>Podstawowe parametry pojazdu</h1>
</td>
</tr>
<tr>
<td width="179">
<b>';
ShowPanelLabel($section, 'marka_osobowe');
echo '</b><br>';
ShowPanel($section, 'marka_osobowe', $marka_osobowe); // pokaz marke



i dalszy ciąg kodu odpowiedzialnego za wyswietlanie danych:
CODE
echo ' </td>
<td width="179">
<b>';
ShowPanelLabel($section, 'model_osobowe');
echo '</b><br>';
ShowPanel($section, 'model_osobowe', $model_osobowe); // pokaz model
echo ' </td>
<td width="179">
<b>';
ShowPanelLabel($section, 'wersja');
echo '</b><br>';
ShowPanel($section, 'wersja', $wersja);
echo ' </td>
<td>
<b>';
ShowPanelLabel($section, 'a17');
echo '</b><br>';
ShowPanel($section, 'a17', $a17);

echo ' </td>
<td>
<table cellpadding=0 cellspacing=0 width=100%><tr><td>';
ShowPanelLabel($section, 'a18');
if ($_SESSION['panel'] -> lo && $_SESSION['panel'] -> pa && $_SESSION['panel'] -> status > 1)
{
echo ' </td><td>';
ShowPanel($section, 'a18a', $a18a);
}
echo ' </td><td>';
ShowPanel_SP($section, 'a18', $a18);

echo ' </td>
<td>';
ShowPanel($section, 'a64', $a64);
ShowPanelLabel($section, 'a64');


CODE
echo ' </td>
</tr>
<tr>
<td>
<table cellpadding=0 cellspacing=0 width=100%><tr><td>';
ShowPanelLabel($section, 'a34');
if ($_SESSION['panel'] -> lo && $_SESSION['panel'] -> pa && $_SESSION['panel'] -> status > 1)
{
echo ' </td><td>';
ShowPanel($section, 'a34a', $a34a);
}
echo ' </td><td>';
ShowPanel_SP($section, 'a34', $a34);

ShowPanel($section, 'a111', $a111);
ShowPanelLabel($section, 'a111');
echo ' </td>
<td>
<table cellpadding=0 cellspacing=0 width=100%><tr><td>';
ShowPanelLabel($section, 'a72');
if ($_SESSION['panel'] -> lo && $_SESSION['panel'] -> pa && $_SESSION['panel'] -> status > 1)
{
echo ' </td><td>';
ShowPanel($section, 'a72a', $a72a);
}
echo ' </td><td>';
ShowPanel_SP($section, 'a72', $a72);

<tr>
<td>';
ShowPanel($section, 'a53', $a53);
ShowPanelLabel($section, 'a53');
echo ' </td>
<td>
<table cellpadding=0 cellspacing=0 width=100%><tr><td>';
ShowPanelLabel($section, 'a15');
if ($_SESSION['panel'] -> lo && $_SESSION['panel'] -> pa && $_SESSION['panel'] -> status > 1)
{
echo ' </td><td>';
ShowPanel($section, 'a15a', $a15a);
}
echo ' </td><td>';
ShowPanel_SP($section, 'a15', $a15);
echo ' </td>
</tr>';

include ('addkontaktkrok2.php3');

echo '</table>
</form>
</div>';
}
}
else


if ($section == 2)
{
if ($action == 'save')
{
if (!$errtext)
{
$errtext = CheckVerifyForm($section);
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckWarrningForm($section);
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}



CODE
if (!$errtext)
{
$errtext = CheckVerifyDaneKontatkoweForm('BezLogowania');
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckVerifyTelefonyForm('BezLogowania');
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
{
$errtext = CheckVerifyEmailForm('BezLogowania');
if ($errtext)
echo '<table width="535"><tr><td align="center" class="warrning">'.$errtext.'</td></tr></table>';
}

if (!$errtext)
$ogloszenie -> Zapamietaj($_POST);
$_SESSION['ogloszenie'] = $ogloszenie;
}

if (($action == 'save' && $errtext) || ($action == 'create') || ($action == 'edit'))
{

echo '<div id="search">
<form action="?page='.$page.'&action=save&id='.$id.'" method="post">
<input type="hidden" name="section" value="'.$section.'">
<input type="hidden" name="action" value="save">
<table width="535">
<tr>
<td colspan="3" style="border: solid #828282; border-width: 0px 0px 2px 0px;">
<h1>Podstawowe parametry pojazdu</h1>
</td>
</tr>
<tr>
<td width="179">
<b>';
ShowPanelLabel($section, 'markainput');
echo '</b><br>';
ShowPanel($section, 'markainput', $markainput); // pokaz marke
echo ' </td>
<td width="179">
<b>';
ShowPanelLabel($section, 'modelinput');
echo '</b><br>';
ShowPanel($section, 'modelinput', $modelinput);
echo ' </td>
<td width="179">
<b>';
ShowPanelLabel($section, 'a1');
echo '</b><br>';
ShowPanel($section, 'a1', $a1);


include ('addkontaktkrok2.php3');

echo '</table>
</form>
</div>';
}
}

?>



Zadeklarowałem język strony, dodałem do kodu tablicy oraz panelu dodawania ogłoszeń:
echo lang('jezykstrony'); w której mam zadeklarowane jezyki w zalezności od wybranego.
Z niewiadomych przyczyn zwraca mi teraz wartość "Array" a powinno co innego.
... ;/

Ten post edytował patryk9200 7.02.2009, 09:46:59
Go to the top of the page
+Quote Post
Crozin
post 7.02.2009, 17:02:46
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Proszę wstaw kod w tag [ php ], teraz się go czytać nie da.

Wyświetlanie "Array" spowodowane jest tym, że masz coś takiego (pseudo kod)
  1. <?php
  2.  'abc' => array(
  3.    'def' => 'Hello World'
  4.  )
  5. )
  6.  
  7. //i zamiast wyswietlac jako
  8. echo array[abc][def]
  9.  
  10. //wysiwetlasz
  11. echo array[abc]
  12. ?>
Go to the top of the page
+Quote Post
patryk9200
post 7.02.2009, 23:57:10
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


Niestety nie mogę wstawić tagów "[php]" ponieważ wyskakuje mi błąd, ze post jest zbyt długi....

hmm.... w takim razie jak mam się odwołać do wybranego elementu tablicy?

Chodzi mi o to żeby móc "zastąpić" element z tablicy2
elementem z tablicy1 "lang"
Ta 2 jest asocjacyjna a 1 zwykła.....
Go to the top of the page
+Quote Post
Crozin
post 8.02.2009, 10:35:07
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Włącz wyświetlanie błędów - pewnie wywali jakiegoś E_NOTICEa, który rozwieje wątpliwści
  1. <?php
  2. ini_set('display_errors', true);
  3. error_reporting(E_ALL | E_STRICT);
  4. ?>


PS. I co to za zapis:
  1. <?php
  2. ''.lang('...').'';
  3. ?>
Nie można poporstu
  1. <?php
  2. lang('...');
  3. ?>
Go to the top of the page
+Quote Post
patryk9200
post 8.02.2009, 16:49:56
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

Ostrzeżenie: (0%)
-----


<wow>
A więc tak... włączyłem wyświetlanie błedów... i mi wyskoczyło ich dość trochę,
oto one:
[b]Notice: Undefined variable: link in /addogloszeniekrok2.php3 on line 592

Notice: Undefined index: in /showaddengine.php3 on line 303
[/b]Notice: Undefined variable: a116 in /addogloszeniekrok2.php3 on line 585
Notice: Undefined property: s15 in /addkontaktkrok2.php3 on line 265
Notice: Undefined variable: a101 in /addogloszeniekrok2.php3 on line 512

Notice: Undefined index: checkedautos in /showaddengine.php3 on line 625

Notice: Undefined index: id in /addogloszeniekrok2.php3 on line 8

Notice: Undefined index: special in /addogloszeniekrok2.php3 on line 12

Potem sie już tylko powtarzają;/
Co mam z tym zrobić?
hmmm....
może to być wina tego że było to kiedyś napisane w php3 a część jest teraz w php5 ?


Zrobiłem tak jak powiedziałeś.
Faktycznie odwoływanie się do elementu tablicy w ten sposób:
''.lang('language').'' jest błędne, jednakże gdu odwołuję się w ten sposób co napisałeś tzn.
lang ('language') wyskakują mi dane w języku polskim które są jako pierwsze w tablicy.
Dlaczego te dane nie zmieniają się gdy przełączę język na np. en, kiedy inne dane się zmieniają?
Tylko te z tej tablicy nie zmieniają sie zgodnie z ustawieniami...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:40