header ('Location:) в переключателе php для выполнения url с функцией onclick - PullRequest
0 голосов
/ 30 декабря 2011

Проще говоря, у меня есть эта переменная, которая содержит гиперссылку:

$test3 = '<a href="#" onclick="archiveMove(\''.$mulmov.'\'); return false;">Move to Quotes</a>';

и мне нужно выполнить эту переменную внутри регистра переключателя, как показано ниже:

switch ($_POST['dropdown'])  { 

    case "Select Folder":
    echo "Please select";
    break;

    case "One":
    exec($test3); <-- //here i want to run (if this is not execute, my misunderstanding) the link.


    break;

    case "Two":
    header('Location: http://www.facebook.com/'); <-- //this is just a test

    break;


default:
  echo "<br></br>";
  echo "Move multiple files:";
  echo "<br></br>";

  }


  ?>

  <form method="post" name="theform" action="">
    <select name="dropdown">
    <option value="Move to Folder">Select</option>
    <option value="One">One</option>
    <option value="Two">Two</option>
    </select>
    <input type="submit" value="Move"/>
</form>

Я бы хотел знать, как выполнить ссылку ahref, не нажимая на нее пользователя, а просто установить эту ссылку как случай, и когда пользователь отправляет форму, выбранный случай воздействует на гиперссылку.

Любая помощь приветствуется.


ПОДРОБНЕЕ

Я понимаю, что javascript и php являются отдельными языками, и что лучшим вариантом будет использование Ajax, но мое понимание Ajax ограничено.

Чтобы объяснить это лучше, это то, что происходит в целом:

1) У меня есть почтовый ящик с подборкой сообщений.

2) Вы можете проверить эти сообщения и затем щелкнуть ссылку «Выбранная корзина», которая удаляет выбранные сообщения. Это ссылка:

<a href="#" onclick="deleteInbox(\''.$muldel.'\'); return false;">Trash Selected</a>

Функция javascript выполняет функцию php в $ muldel для всех выбранных сообщений и обновляет базу данных.

Это рассматриваемая функция javascript:

function inboxDelete(url) {
    document.messages.action = url;
    document.messages.submit();
}

archiveMove () точно такой же, только временно дублируется, чтобы прояснить ситуацию.

3) Теперь я повторно использовал код ahref для выполнения той же процедуры, но на этот раз для перемещения выбранных сообщений в папки.

4) Эти папки могут быть выбраны из выпадающего списка - здесь форма входит.

5) Так что, хотя я могу заставить его работать, добавив такую ​​ссылку:

 $test3 = '<a href="#" onclick="archiveMove(\''.$mulmov.'\'); return false;">Move to Quotes</a>';

echo $test3;

6) Теперь мне нужно, чтобы это работало так же, но ссылка меняется в зависимости от того, какая папка выбрана.

Это в полной мере относится к моей проблеме, надеюсь, это станет более понятным.

Я знаю, что вы можете отправлять переменные в javscript, используя GET или POST, а затем выполнять функцию полностью через javascript. Я пробовал что-то вроде ниже, но безрезультатно:

<form method=post name="myform" action="<?php echo $PHP_SELF;?>">
    <input type="hidden" name="formVar" value="">
    <input type="text" value="Enter Text Here" name="myText">
    <input type="text" value="Enter Text Here" name="myText2">
    <input type="submit" value="Send form!" onClick="readmove()">
</form>



 <?php
    // Retrieve the hidden form variable (using PHP).

    $myvar = $_POST['formVar'];

    if ($myvar == "$mulmov"){
        echo $mulmov; 
    }

    ?>
        <script language="JavaScript">
    <!--
    function setText(){
      document.myform.myText.value = document.myform.myText.value.toUpperCase();
    }


     function readmove(){
        document.myform.myText.value = "<?php echo $myvar; ?>" ; 
        readmove2();

    }


    function readmove2(){
        if (document.myform.myText.value == "$mulmov"){
            document.myform.myText2.value = "<?php echo $mulmov; ?>" ; 
            <?php exec ('archiveMove(\''.$mulmov.'\');  return false;'); ?>
    } else if (document.myform.myText.value == "$mulmov2"){
            document.myform.myText2.value = "<?php echo $mulmov2; ?>" ; 
    }
    }

</script>

Ответы [ 3 ]

4 голосов
/ 30 декабря 2011

Прежде всего, вы не можете выполнить JavaScript из PHP, как это.На этом этапе элемент управления уже перемещен на сервер, и JavaScript выполняется на стороне клиента.

Во-вторых, я предполагаю, что вы не хотите просто переходить по ссылке, вы хотите запустить событие onClick ссылки, поскольку href - это просто хэштег.Итак, вы пытаетесь запустить функцию JavaScript с PHP.Вы не можете вызвать функцию на одном языке из функции на другом языке.

Трудно сказать, что именно вы пытаетесь сделать, но если вы хотите запустить функцию, когда пользователь выбирает определенный выпадающий список, напишитефункция php, которая делает то, что делает archiveMove ().Если вы хотите, чтобы это происходило без обновления страницы, вы можете остановить процесс отправки и вызвать функцию archiveMove () с javaScript и Ajax.

Если уточнить, что именно вы пытаетесь сделать, возможно, мы можем помочь больше.


Хорошо, поэтому единственное различие между вашим рабочим кодом и неработающим кодом заключается в том, что вы хотите продиктовать отправленный URL-адрес на основе того, что выбрано в раскрывающемся списке?

Таким образом, вы можете использовать JavaScript для установки действия формы при выборе раскрывающегося списка.

НО, может быть, лучше отправлять форму с тем же действием каждый раз, а затем использовать PHPрешить, что делать.Похоже, это то, куда вы направлялись изначально.Просто получите идентификатор папки в операторе switch и вызовите функцию для внесения ваших правок:

PHP может быть похож на ваш прежний:

  switch ($_POST['dropdown'])  { 
    case "Two":
       // set folder id
       $folder_id = 2;
    break;
  }

  moveMessages($_POST['Messages'], $folder_id);

функция, которая перемещает сообщениякуда им нужно идти.

    function moveMessages($messages, $folder_id){
        // depending on your form setup
        foreach($data as $id => $value ){
          if($value){
            // code to move to folder
          }
        }

        return true;
    }

Если есть другие факторы, дайте мне знать.

1 голос
/ 14 января 2012

Хорошо, это было мое решение, но спасибо также за ваше решение, Джефф Райан, это также сработало.

<script language="javascript">



 function buttons(str) 
{
document.getElementById("txtHint").innerHTML = str; 

if (document.f1.users.options[1].selected){
    document.getElementById("txtHint").innerHTML ="<?php echo $mulmov; ?>";
    document.messages.action = document.getElementById("txtHint").innerHTML;


}
else if (document.f1.users.options[2].selected){
    document.getElementById("txtHint").innerHTML ="<?php echo $mulmov2; ?>";
    document.messages.action = document.getElementById("txtHint").innerHTML;


}
}

function submit_mes(str)
{

    document.messages.submit();
}

    </script>

    <form name="f1">
<select name="users" onChange="buttons(this.value)">
<option value="">Select a folder:</option>
<option value="Quotes">Quotes</option>
<option value="Projects">Projects</option>

<input type="button" value="Move" onClick="submit_mes(this.value)">
</select>
</form>

<div id="txtHint"><b>Folder will be listed here.</b></div>
1 голос
/ 30 декабря 2011

Вы можете написать JavaScript код, который запрашивает URL, используя window.location.href в click hadler.

window.location.href="http://example.com";
...