Синтаксис PHP в функциях - PullRequest
1 голос
/ 30 июня 2011

Я использую цикл, чтобы просмотреть результат запроса и отобразить данные в сетке.Я только хочу отобразить кнопку удаления в определенных строках.Я могу настроить операторы if else для этого.

while($rows = mysql_fetch_array($result)){

//HTML code - I am not using echo here just plain html code written below

deleteButton();//I am calling the deleteButton function here.

//HTML code

}

У меня есть функция deleteButton вверху страницы

function deleteButton()
{
echo "<form name='DeleteInfo' method='POST' action='delete.php'>";
echo "<input type='hidden' name='val1' value=$rows[col1]>";
echo "<input type='hidden' name='val2' value=$rows[col2]>";
echo "<input class='center' type='submit' value='Delete'/>";
echo "</form>";
}

Я получаю сообщение об ошибке неопределенных строк переменных для col1 и col2.Я предполагаю, что это проблема синтаксиса.

Я также пытался.

echo "<input type='hidden' name='val2' value=$rows['col2']>";
echo "<input type='hidden' name='val2' value='$rows[col2]'>";

Этот HTML-код работает

<input type="hidden" name="name1" value="<?php echo $rows['col3']; ?>">

РЕДАКТИРОВАТЬ: Решено.Это было вне области.Я должен использовать глобальные $ строки в функции.Спасибо Марк.

Ответы [ 5 ]

4 голосов
/ 30 июня 2011

Ваша переменная $ row не существует в области действия функции deleteButton.Вы можете изменить его следующим образом:

function deleteButton($rows) {
    // etc
}

, а затем назвать его:

deleteButton($rows);
1 голос
/ 30 июня 2011

Переменные не остаются в области видимости от одной функции к другой.Если у вас есть переменная, которую вы хотите использовать в вызываемой функции, вам нужно передать эту переменную в функцию.(другой вариант - сделать их глобальными, но я проигнорирую это, поскольку не стоит злоупотреблять глобальными переменными)

Так что, когда вы вызываете функцию, вам нужно вызывать ее так:*

deleteButton($rows);

... и затем в объявлении функции, вам также нужно добавить его туда, например, так:

function deleteButton($rows)

Это довольно простой материал для PHP, илидействительно программирование в целом.Было бы хорошо, если бы вы справились с подобными вещами, убедитесь, что вы понимаете это правильно, прежде чем писать слишком много кода.

1 голос
/ 30 июня 2011

Как указывал Стивен, вы должны также передать $ строки в функцию.

Полный пример:

function deleteButton($row)
{
    echo "<form name='DeleteInfo' method='POST' action='delete.php'>";
    echo "<input type='hidden' name='val1' value={$rows['col1']}>";
    echo "<input type='hidden' name='val2' value={$rows['col2']}>";
    echo "<input class='center' type='submit' value='Delete'/>";
    echo "</form>";
}

while($rows = mysql_fetch_array($result)){

    // ...

    deleteButton($rows);

    // ...

}

Вы можете заключить свой метод доступа в массив в фигурные скобки или использовать конкатенацию

echo "<input type='hidden' name='val2' value={$rows['col2']}>";
echo "<input type='hidden' name='val2' value=".$rows['col2'].">";
0 голосов
/ 30 июня 2011

$ строки недоступны из этой функции, так что вы можете либо передать его в качестве аргумента этой функции, для создания $ row GLOBAL, определив его вне какой-либо области и поместив оператор

global $rows;

в функциях, к которым вы хотите получить доступ.

0 голосов
/ 30 июня 2011
echo "<input type='hidden' name='val2' value=".$rows['col2'].">";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...