2014-01-29 7 views
-1

Вот моя ситуация:ECHO конкретной строки из определенного столбца

Я многоэтажная здание языка страницы, где мой язык выйти из MYSQL через заявление PDO. Язык выбирается через идентификатор внутри моей ссылки.

Для примера:

<div class="country"><a class="darkbrowntext" href="log?id=11111"> 
<div class="language"><p>Nederlands</p></div> 
<div class="countryflag"><img src="images/Dutch.gif" width="220" height="145" alt="dutch"></div> 
</a></div> 

<div class="country"><a class="darkbrowntext" href="log?id=11112"> 
<div class="language"><p>English</p></div> 
<div class="countryflag"><img src="images/english.gif" width="220" height="145" alt="french"></div> 
</a></div> 

На моей странице журнала у меня есть следующий код:

$languageid = (int) $_GET['id']; 
    if(isset($languageid)){ 
     $_SESSION['languageid'] = $languageid; 
    } 
    else { 
     header('Location: error'); 
    } 
require('incl/connect.inc.php'); 

if(isset($languageid) && ($languageid == 11111)){ 
    $column = 'language_nl'; 
} 
elseif(isset($languageid) && ($languageid == 11112)){ 
    $column = 'language_en'; 
} 
$languagestmt = $db->prepare ("SELECT $column FROM attrib_language"); 
$languagestmt->execute(); 
$lrow = $languagestmt->fetch(PDO::FETCH_ASSOC); 

Если есть эта таблица в моей MYSQL:

ID  language_nl  language_en 
1  Aanmelden   Sign in 
2  Afmelden   Sign out 
3  Naam    Name 
4  Voornaam   First name 

Как я быть в состоянии выбрать правильную вещь в моем массиве моего столбца, чтобы поместить ее в нужные метки, см. ниже. Должен ли я работать с foreach или мне нужно изменить свой выбор?

<div class="logtxt"><a href="form"><h3><?php echo $lrow['***********']; ?></h3></a></div> 
<div class="logtxt"><a href="logout"><h3><?php echo $lrow['***********']; ?></h3></a></div> 
<label for="name" class="labelname"><?php echo $lrow['***********']; ?></label><input type="text" name="name" id="name" class="inputname" onclick="fncCheck();"/> 
<label for="firstname" class="labelfirstname"><?php echo $lrow['***********']; ?></label><input type="text" name="firstname" id="firstname" class="inputfirstname" onclick="fncCheck();"/> 
+0

Этот вопрос не подходит, если вы не упростите свой код до 2-6 строк и дадите более общий пример. Например, удалите ВСЕ HTML из вашего вопроса, это не относится к вопросам PHP + MySQL. –

+0

И вот почему вы увеличиваете мою репутацию? Невероятно. Есть время, когда вы не можете дать достаточно информации, и есть такие моменты, как сейчас, я полагаю, вы многое отдаете? Я самонаучаю для обработки PHP, MYSQL и PDO, это не то, что я PRO – Raz3rt

+0

, если u пометить ваш вопрос mysql + php, нет причин иметь HTML-код в примере кода. Это верно в 100% случаев, если вы не пометили его неправильно. В этом случае имеют только код переднего конца. –

ответ

0
$languagestmt = $db->prepare ("SELECT ID,$column FROM attrib_language"); 


$lrow = $languagestmt->fetchAll(PDO::FETCH_COLUMN || PDO::FETCH_GROUP, 0); 


<?php echo $lrow[1]; ?> 

или

$languagestmt = $db->prepare ("SELECT language_en,$column FROM attrib_language"); 


$lrow = $languagestmt->fetchAll(PDO::FETCH_COLUMN || PDO::FETCH_GROUP, 0); 


<?php echo $lrow['Sign In']; ?> 

Какой бы вы предпочитаете.

+0

Я полагаю, если бы я выбрал второе решение, я не очень динамичен? Например, если я выберу Nederlands (голландский), чем будет написано «Sign In»? – Raz3rt

+0

Переменная $ lrow ['Sign In'] будет содержать «Aanmelden», если вам удастся установить $ column to language_nl перед выполнением инструкции. Вы динамичны, если у вас нет нескольких строк, содержащих одни и те же значения, на английском языке, но разные значения в nederlands. '5 Exit Afstappen' и' 6 Exit Uitgang' могут быть такими, где вы предпочтете первую версию, используя идентификаторы. – Alexander

+0

Спасибо, что я использовал ваше решение, единственное, что мне нужно было удалить: \t $ lastid = $ _SESSION ['lastid']; то это сработало как шарм! – Raz3rt

0
$res = $db->prepare ("SELECT a,b,c FROM my_table"); 
$res->execute(); 
while($row = $res->fetch(PDO::FETCH_ASSOC){ 
    echo $row['a'] . $row['b'],$row['c']; 
} 

$row Обратите внимание на ассоциативный массив, в котором члены являются имена столбцов.

0

Предлагаю вам print_r($lrow); или var_dump($lrow);, чтобы увидеть ваши результаты в какой форме или форме. Также, чтобы получить более чистый вид, echo "<pre>"; перед ним.

0

PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set

Так оно и должно быть:

<div class="logtxt"><a href="form"><h3><?php echo $lrow[$column][1]; ?></h3></a></div> 
<div class="logtxt"><a href="logout"><h3><?php echo $lrow[$column][2]; ?></h3></a></div> 
<label for="name" class="labelname"><?php echo $lrow[$column][3]; ?></label><input type="text" name="name" id="name" class="inputname" onclick="fncCheck();"/> 
<label for="firstname" class="labelfirstname"><?php echo $lrow[$column][4]; ?></label><input type="text" name="firstname" id="firstname" class="inputfirstname" onclick="fncCheck();"/> 

Однако, если бы я тебя, я бы хранить каждый из переводов в другой файл (UTF-8 закодированной) вместо базы данных.

+0

Могу ли я спросить, что вы имеете в виду с последним предложением? Я всегда не понимаю, что большинство систем CMS основаны на записи внутри MYSQL вместо жесткого кодирования? Таким образом, они способны «ОБНОВИТЬ» эти записи простым способом? Следующее, что я хотел бы сделать/учиться, это сделать немного CMS на этом пути. – Raz3rt

+0

Он означает, что нужно положить вещь в файл, а не базу данных. База данных всегда означает накладные расходы, и если вы только время от времени обновляете свои языковые файлы, файл может быть лучше. Но это верно только в том случае, если оно действительно время от времени, для ежедневных обновлений db может быть лучше. Если ваша база данных может быть недоступна, но веб-сервер все еще работает, вы можете даже давать сообщения с несколькими языками при использовании файла. – Alexander

+0

Я имею в виду, что вы должны использовать инструменты для того, для чего они подходят. То, что вы здесь делаете, это просто замена текста. Для этого вам не нужна база данных. Кроме того, если вы используете базу данных для этой функции, вам нужно будет предоставить пользовательский интерфейс, тогда как если перевод осуществляется через файлы, вы можете сообщить своим пользователям напрямую обновлять эти файлы без пользовательского интерфейса. В верхней части моей головы Wordpress (но кругом) и Moodle используют плоские файлы для переводов. – codeblur

Смежные вопросы