Заполнение нескольких полей HTML с одним доступом к БД - PullRequest
1 голос
/ 15 ноября 2011

Это длинный вопрос, но не слишком сложный, поэтому, пожалуйста, потерпите меня.

Я создаю сайт WordPress.
На одной из страниц должен быть список магазинов.
Есть 5 полей, которые я должен заполнить магазинами, которые я получаю из БД.

Пока я делаю это так (в шаблонах страниц):

Существует javascript-запрос ajax, который работает после загрузки html и запрашивает код PHP на стороне сервера, чтобы получить магазины из БД. Когда они возвращаются, тогда javascript заполняет HTML-поля этими магазинами.

Теперь я знаю, что это неправильная производительность.
Я должен заполнить поля на стороне сервера, прежде чем HTML будет отправлен клиенту.

Так что мой вопрос таков:
Нет смысла обращаться к БД 5 раз (для 5 магазинов и полей).
Я просто хочу получить к нему доступ один раз, получить все 5 магазинов и заполнить поля.
Но как мне использовать возвращенный массив из БД в 5 разных местах в HTML?

В этом примере я собираю все магазины в одном поле. Как передать их остальным полям?

<tr><td><input id="shop1" type="textbox" value="<?php global $wpdb; echo $wpdb->get_results("SELECT * FROM shops"); ?>"></td></tr>
<tr><td><input id="shop2" type="textbox" value=""></td></tr>
<tr><td><input id="shop3" type="textbox" value=""></td></tr>
<tr><td><input id="shop4" type="textbox" value=""></td></tr>
<tr><td><input id="shop5" type="textbox" value=""></td></tr>

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Если между магазинами нет HTML:

<?php
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM shops");
?>

//stuff

<?php foreach( $results as $result ): ?>
<tr><td><input id="shop<?php echo $result -> shop_id; ?>" type="textbox" value="<?php echo $result -> fieldName; ?>"></td></tr>
<?php endforeach; ?>

А если есть, то примерно так:

<?php
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM shops");
?>

<tr><td><input id="shop1" type="textbox" value="<?php echo $results[0] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop2" type="textbox" value="<?php echo $results[1] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop3" type="textbox" value="<?php echo $results[2] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop4" type="textbox" value="<?php echo $results[3] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop5" type="textbox" value="<?php echo $results[4] -> fieldName; ?>"></td></tr>
2 голосов
/ 15 ноября 2011

Попробуйте это

<?php 
global $wpdb; 
$results =  $wpdb->get_results("SELECT * FROM shops");
$i = 1;    
foreach ( $results as $shop ) 
{
  echo '<tr><td><input id="shop'.$i.
       '" type="textbox" value="">'.$shop->name_of_field_you_need.'</td></tr>';
      $i++;
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...