2015-04-27 3 views
1

Я пытаюсь передать параметр в теге действия в форме, так же, как я делаю в теге href, но это не работает. Я могу знать, почему? или я должен просто использовать тег href в форме, будет ли это перезаписывать действие в форме? Вот мой код:Передача переменной (php) между html

<!DOCTYPE html> 
<html lang="en"> 
<?php 
    $ty=$_GET['param']; 
    $name=$_GET['param1']; 
    if($ty=='teacher') 
    { 
     $web = "<a href='teacherrepute.php?a=$name'>My repute score</a>"; 
     $rep = "<a href='teacherreported.php?a=$name'>My reported sites</a>"; 
     $blk = "<a href='newblocktryteacher.php?a=$name'>Block this site</a>"; 
     $unblk = "<a href='newtryunblockteacher.php?a=$name>Unblock this site"; 
    } 
    else 
    { 
     $web = "<a href='pupilrepute.php?a=$name'>My repute score</a>"; 
     $rep = "<a href='pupilreported.php?a=$name'>My reported sites</a>"; 
     $blk = "<a href='newblocktrypupil.php?a=$name'>Block this site</a>"; 
     $unblk = "<a href='newtryunblockpupil.php?a=$name>Unblock this site"; 
    } 
    // $type=$_GET['param2']; 
    $courseA='A'; 
    $courseB='B'; 
?> 
<body> 
    <a href="reporttable.html"><?php echo $rep; ?></a> 
    <FORM action = <?php echo $blk; ?> method ="POST";> 
     Block : <input type ="text" name = "url" /></br> 
     <br> 
     <input type="submit" value="block" /> 
     <br> 
    </FORM> 
</body> 
</html> 
+2

атрибут действия принимает строку URL-адрес, а не строку html, например, она должна выглядеть как «action =» pupilreported.php? a = somename »' –

+0

@PatrickEvans, я не хотел этого делать, потому что php i run определяется на основе пользователя, поэтому, Я поставил оператор if-else, чтобы решить это! поэтому я должен передать параметр в форме u see, поэтому нажатие на кнопку запустит php на основе категории пользователя – kernel

+1

Я знаю об этом, я не говорю, чтобы жестко закодировать действие, я говорю, что с вашим текущий код, ваш атрибут действия будет выглядеть как «action = Block this site», который является недопустимым –

ответ

1

1) Поскольку вы уже создаете ссылку на основе условия, вы можете напрямую отследить эту переменную внутри разметки. например

<?php echo $rep; ?> 

2) Вместо передачи html в форме действие просто вы передаете это имя скрипта. например

newblocktryteacher.php? а = SomeName или newblocktrypupil.php? а = SomeName

Основываясь на этих двух точках ваш код будет

<!DOCTYPE html> 
<html lang="en"> 
<?php 
    $ty=$_GET['param']; 
    $name=$_GET['param1']; 
    if($ty=='teacher') 
    { 
     $web = "<a href='teacherrepute.php?a=$name'>My repute score</a>"; 
     $rep = "<a href='teacherreported.php?a=$name'>My reported sites</a>"; 
     $blk = "newblocktryteacher.php?a=$name"; 
     $unblk = "<a href='newtryunblockteacher.php?a=$name>Unblock this site"; 
    } 
    else 
    { 
     $web = "<a href='pupilrepute.php?a=$name'>My repute score</a>"; 
     $rep = "<a href='pupilreported.php?a=$name'>My reported sites</a>"; 
     $blk = "newblocktrypupil.php?a=$name"; 
     $unblk = "<a href='newtryunblockpupil.php?a=$name>Unblock this site</a>"; 
    } 
    // $type=$_GET['param2']; 
    $courseA='A'; 
    $courseB='B'; 
?> 
<body> 

    <?php echo $rep; ?> 
    <form action="<?php echo $blk; ?>" method="POST"> 
     Block : <input type="text" name="url" /></br> 
     <br> 
     <input type="submit" value="block" /> 
     <br> 
    </form> 
</body> 
</html> 
+0

Спасибо @Roopendra – kernel

+0

Рад помочь вам :) – Roopendra

0

Ваш $blk не является допустимой формой действия, потому что это <a> тег (ссылка). Таким образом, $blk должен быть newblocktrypupil.php?a=$name'.

+0

Пробовал это, но это не сработало @hamed – kernel

+0

Зачем OP «попробуйте это»? Пожалуйста, добавьте объяснение того, что вы сделали, и почему вы сделали это таким образом не только для OP, но и для будущих посетителей SO. – Rizier123

+0

@ Rizier123 Я отредактировал свой ответ. – hamed

0

Ваш $blk не отформатирован в пути правильной для <form>:

$blk = "<a href='newblocktryteacher.php?a=$name'>Block this site</a>"; 
<FORM action = <?php echo $blk; ?> method ="POST";> 

Предполагая $name в этом примере bob:

<FORM action = <a href='newblocktryteacher.php?a=bob'>Block this site</a> method ="POST";> 

Как вы можете видеть, это не правильно. Все, что вам нужно, это сам URL. Также удалите точку с запятой после "POST".

+0

Я должен классифицировать пользователя для учителя или ученика, а затем использовать подходящий php, я не могу его жестко кодировать просто учителю (т.е. newblocktryteacher.php? A = 'bob') – kernel

+0

Вам не хватает смысла. Вы можете использовать PHP для имени. Проблема в том, что вы указываете теги '' в теге 'action' '

' ', и это не имеет смысла. –

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