2014-10-01 2 views
0

Я работаю над фильтром, в котором результаты отфильтровываются сразу, мне интересно, может ли это быть причиной проблемы, поэтому я думал, что спрошу и посмотрю, сможет ли кто-нибудь дать мне указатель на то, как действовать.Передача JSON в массив в PHP

 <script> 
     var services = [ 
<?php 
//Variables for connecting to your database. 
//These variable values come from your hosting account. 
$hostname = "###"; 
$username = "###"; 
$dbname = "###"; 

//These variable values need to be changed by you before deploying 
$password = "###"; 
$usertable = "###"; 
$url = "permalink"; 
$title = "Address"; 
$amount = "rent"; 
$id = "id"; 
$status = "Beds"; 
$nonprofit = "Address"; 

//Connecting to your database 
mysql_connect($hostname, $username, $password) OR DIE ("He's dead Jim"); 
mysql_select_db($dbname); 

//Fetching from your database table. 
$query = "SELECT * FROM $usertable"; 
$result = mysql_query($query); 

if ($result) { 
    while($row = mysql_fetch_array($result)) { 
     $url = $row["$url"]; 
     $title = $row["$title"]; 
     $amount = $row["$amount"]; 
     $id = $row["$id"]; 
     $status = $row["$status"]; 
     $nonprofit = $row["$nonprofit"]; 

     echo '{"permalink": "'; 
     echo "{$url}"; 
     echo '",'; 
     echo '"title": "'; 
     echo "{$title}"; 
     echo '",'; 
     echo '"amount":'; 
     echo "{$amount}"; 
     echo ','; 
     echo '"id": "'; 
     echo "{$id}"; 
     echo '",'; 
     echo '"status": "'; 
     echo "{$status}"; 
     echo '",'; 
     echo '"address": "'; 
     echo "{$address}"; 
     echo '",'; 
     echo '},'; 

    } 
} 
?>  

] 
       //]]> 
     </script> 


    <script id="template" type="text/html"> 
     <a title="{{title}}" href="{{permalink}}"> 
     <div class="fs_box hide-for-small-down"> 
      <div class="fs_left"> 
      <span class="fs_head">{{title}}</span> 
      <span class="fs_id"><img src="images/{{id}}.jpg" width="75%" height="75%" onError="this.onerror=null;this.src='images/logo.png';"></span> 
     <span class="fs_status">{{status}}</span> 
      <span class="fs_disc">{{address}}</span> 
      </div> 
      <div class="fs_price">${{amount}}+</div> 
      <div class="clear"></div> 
     </div> 
     </a> 
    </script> 

Я ожидал его, чтобы получить кучу результатов, которые затем фильтруются критерии, которые в других частях страницы. Когда я пытаюсь в настоящее время точно так же, как php-код, он выводится нормально. Однако, когда я пытаюсь в php-файле, что это должно произойти, он ничего не производит. Или это не нравится в сценарии? Спасибо за любую помощь!

+0

вы добавляете [перед php-скриптом? Вы можете сделать массив в php для использования 'json_encode' для кодирования массива в json. – user3980820

+0

@ user3980820 Я помещал JSON между этим, или я могу поместить SQL для создания массива, а затем установить этот массив между []? – obi1kenobi2

+0

'mysql_query' - устаревший интерфейс и не должен использоваться в новых приложениях и будет удален в будущих версиях PHP. Современная замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). Если вы новичок в PHP, руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), может помочь объяснить лучшие практики. – tadman

ответ

2

Вы можете использовать json_decode и json_encode, чтобы превратить массив в json и json обратно в массив.

Также кто-то, вероятно, упомянет, что вы не должны использовать функции mysql_ * в PHP, поскольку они обесцениваются.

Что-то вроде этого:

<?php 
//Variables for connecting to your database. 
//These variable values come from your hosting account. 
$hostname = "###"; 
$username = "###"; 
$dbname = "###"; 

//These variable values need to be changed by you before deploying 
$password = "###"; 
$usertable = "###"; 
$url = "permalink"; 
$title = "Address"; 
$amount = "rent"; 
$id = "id"; 
$status = "Beds"; 
$nonprofit = "Address"; 

//Connecting to your database 
mysql_connect($hostname, $username, $password) OR DIE ("He's dead Jim"); 
mysql_select_db($dbname); 

//Fetching from your database table. 
$query = "SELECT * FROM $usertable"; 
$result = mysql_query($query); 

if ($result) { 
    $results = array() 
    while($row = mysql_fetch_array($result)) { 
     $results[] = $row; 
    } 

    $json = json_encode($results); 
} 
?>  

] 

<script> 
    var services = <?php echo $json; ?>; 
</script> 

Это даст вам объект JSON, используемый для визуализации в сценарии.

+0

Было бы целесообразно преобразовать пример, приведенный в вопросе, к версии, использующей встроенную функцию JSON. Это способ чище, когда выражается таким образом, и имеет дополнительную выгоду от фактической работы. – tadman

+0

Я отредактировал свой ответ, чтобы построить некоторый json, используя json_encode –

-1

Какое расширение является файлом, который вы сохраняете? Если это не .php или набор расширений для рендеринга php, тогда вы просто получите код как тест. Возможно, вы захотите вытащить инструкцию «die» после подключения db. Это похоже на то, что вы запускаете php в файле .js, поэтому вы, вероятно, хотите, чтобы весь файл выписывался, а не останавливался, потому что вы не могли подключиться к базе данных (или хотя бы дать 0 результатов, может быть, предупреждение)

+0

Это не файл JavaScript. Он просто работает при рендеринг тега '