[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача ключа ассоциативного массива через $_GET[
saaremaa
Постановка задачи:
1. Есть форма которая передает имя таблицы через GET-запрос url: http://localhost/abc/index.php?tb=dicprinters
2. Есть ассоциативный массив $dbstructure из которого берутся разрешенные для манипуляций имена таблиц MySQL и разрешенные поля таблиц.
3. На основании переданного имени таблицы формируется массив разрешенных полей таблицы для работы.
Проблема:
1. Я получаю в переменную $curTable имя таблицы, но не могу получить массив (список полей) в массив $allowedFields. $allowedFields всегда остается пустым и не создается. Не работает команда: $allowedFields = $dbstructure[$curTable];
Прошу помощи, полдня убил - не получается. sad.gif
PHP
<?php
$dbstructure
["name"] = array("dicorg""dicservices","dicdep","diсprinters");
$dbstructure["dicorg"] = array("id""name");
$dbstructure["dicservices"] = array("id""name");
$dbstructure["dicdep"] = array("id""name","location","room","phone");
$dbstructure["diсprinters"] = array("id""brand","model","partNumber","copyCount");
$curTable = isset($_GET['tb']) ? $_GET['tb'] : false;
$allowedFields $dbstructure[$curTable];
foreach (
$allowedFields as $val){
    echo(
$val)."<br>";
}


если переменную задать непосредственно в скрипте без передачи через GET - все работает, но это не то что нужно sad.gif
PHP
<?php
$dbstructure
["name"] = array("dicorg""dicservices","dicdep","diсprinters");
$dbstructure["dicorg"] = array("id""name");
$dbstructure["dicservices"] = array("id""name");
$dbstructure["dicdep"] = array("id""name","location","room","phone");
$dbstructure["diсprinters"] = array("id""brand","model","partNumber","copyCount");
$curTable "diсprinters";
$allowedFields $dbstructure[$curTable];
foreach (
$allowedFields as $val){
    echo(
$val)."<br>";
}




Спустя 58 минут, 1 секунда (21.09.2009 - 10:59) Xakep написал(а):
хм...может и невено, но попробуйка так:
PHP
$curTable $_GET['tb']

Спустя 7 минут, 41 секунда (21.09.2009 - 11:07) saaremaa написал(а):
не работает sad.gif
PHP
<?php
$dbstructure
["name"] = array("dicorg""dicservices","dicdep","diсprinters");
$dbstructure["dicorg"] = array("id""name");
$dbstructure["dicservices"] = array("id""name");
$dbstructure["dicdep"] = array("id""name","location","room","phone");
$dbstructure["diсprinters"] = array("id""brand","model","partNumber","copyCount");
$curTable $_GET['tb'];
$allowedFields $dbstructure[$curTable];
foreach (
$allowedFields as $val){
    echo(
$val)."<br>";
}

Спустя 22 минуты, 2 секунды (21.09.2009 - 11:29) Oyeme написал(а):
Если массив GET['tb']
PHP
$dbstructure["name"] = array("dicorg", "dicservices","dicdep","diсprinters");
$dbstructure["dicorg"] = array("id", "name");
$dbstructure["dicservices"] = array("id", "name");
$dbstructure["dicdep"] = array("id", "name","location","room","phone");
$dbstructure["diсprinters"] = array("id", "brand","model","partNumber","copyCount");

//$curTable = isset($_GET['tb']) ? $_GET['tb'] : false;

$curTable  = "diсprinters"// предположим что $_GET['tb'] = 'diсprinters';

$allowedFields = $dbstructure[$curTable];

if(
array_key_exists($curTable,$dbstructure)) { 
    foreach 
($allowedFields as $val){
        echo($val)."<br>";
    }
}
 else {
    
    echo 
'nope.. nothing to display';
}

Всё работает.

Спустя 9 минут, 30 секунд (21.09.2009 - 11:38) saaremaa написал(а):
Если определить переменную непосредственно в скрипте - работает, но надо чтобы она бралась из $_GET[] по другому никак. sad.gif (уже писАл в первом посте)
Попробуйте, ради интереса, прогнать через debug - все станет понятно.

Спустя 30 минут, 18 секунд (21.09.2009 - 12:09) Oyeme написал(а):
Я так не могу понять в чём проблема то?

http://localhost/test.php?tb=dicdep - проверяем
Работает.


Спустя 10 минут, 9 секунд (21.09.2009 - 12:19) saaremaa написал(а):
Ок. опишу более подробно.
1. Есть проект в NetBeans IDE 6.7.1 (файл проекта в UTF-8)
PHP
<?php
$dbstructure
["name"] = array("dicorg", "dicservices","dicdep","diсprinters");
$dbstructure["dicorg"] = array("id", "name");
$dbstructure["dicservices"] = array("id", "name");
$dbstructure["dicdep"] = array("id", "name","location","room","phone");
$dbstructure["diсprinters"] = array("id", "brand","model","partNumber","copyCount");
$curTable = $_GET['tb'];
$allowedFields = $dbstructure[$curTable];
foreach ($allowedFields as $val){
    echo($val)."<br>";
}

2. Запускаем отладку - url -> http://localhost/abc/index.php?tb=dicprinters
user posted image
из скриншота видно что не создается массив $allowedFields

если непосредственно в скрипте создать переменную и запустить отладку
user posted image
из скриншота видно что создается массив $allowedFields

Спустя 1 час, 42 минуты, 42 секунды (21.09.2009 - 14:01) saaremaa написал(а):
хм...
http://localhost/abc/index.php?tb=diсprinters - не работает
http://localhost/abc/index.php?tb=diсdep - работает
Это как? blink.gif

Спустя 20 минут, 10 секунд (21.09.2009 - 14:22) saaremaa написал(а):
Кажется проблема решена. laugh.gif
Переписал названия элементов массивов вручную, все заработало. До этого я копировал наименования столбцов Ctrl+C Ctrl+V из phpMyAdmin видимо что-то не так скопировалось. Воспрос снимается - проблема решена. cool.gif Спасибо откликнувшимся.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.