2014-08-13 2 views
0

Мне не хватает чего-то действительно простого здесь!Невозможно вызвать функцию в файле php require

index.php требует connect.php:

<?php require_once('scripts/connect.php'); ?> 

connect.php собирает некоторые данные из БД и помещает его в массив:

<? $query = "SELECT id,termine FROM tbl_standorte"; 
$result = mysql_query($query) or die ("no query"); 
$result_array = array(); 
while($row = mysql_fetch_assoc($result)){$termine_array[] = $row;} ?> 

index.php затем требует sub.php :

<? require('sub.php');?> 

И sub.php содержит следующую функцию, которая затем вызывается передачей переменной в значение $:

<? function searchSubArray($value) { 
     foreach ($termine_array as $subarray){ 
     if (isset($subarray['id']) && $subarray['id'] == $value) 
      echo 'Result:'.str_replace(';','&lt;br&gt;',$subarray['termine']);  
     } 
} ?> 

sub.php затем вызывает функцию <p><? searchSubArray(133);?></p>

Однако, я не получаю никакого вывода! Что мне не хватает?

+0

Проверьте, достигнуто ли ваше утверждение эха. – Cthulhu

+8

'$ termine_array' не определен внутри этой функции –

+0

где вы определили переменную' $ termine_array'? – Girish

ответ

1

Простое решение, скорее всего, просто добавив

global $termine_array; 

до вашего foreach заявления как таковой

<? function searchSubArray($value) { 
    global $termine_array; 
    foreach ($termine_array as $subarray){ 
    ... 

Однако, я настоятельно рекомендую вам рассмотреть вновь пишу это с нуля. Начните с замены использования устаревших функций mysql_* либо mysqli, либо PDO. Затем я увижу, можете ли вы заменить использование глобальных переменных объектами. Возможно, есть класс standorte.php, который содержит функцию getAllIDs().

Я бы предложил изучить некоторые рамки MVC, так как код, который у вас здесь, кажется, что он действительно может его использовать. index.php пытается быть контроллером, connect.php пытается быть моделью, и sub.php пытается быть точкой зрения.

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