Возможно ли передавать данные в том же PHP-файле?

#javascript #php

#javascript #php

Вопрос:

У меня есть кнопка (кто-то ее создал, и мне нужно отредактировать), которая сохраняется $elisting в employee.php . Кнопка перейдет к функции javascript с именем edit() . $elisting код приведен ниже:

 $elisting ="";

    $queryf = "select employee.id as myid,jobtitle,info,locid,deptid,gender,dob,emid,employee$cid.name,username,dept,datejoin,location.name as loc from  employee

        left join location on location$cid.id = employee.locid 

        inner join department on department.id = employee.deptid order by username

    ";

    $resultf = pg_query($queryf); 

    $numrows = pg_numrows($resultf);

    while ($rowf = pg_fetch_array($resultf)) {

        $ct=$ct 1;

        $myid = $rowf[myid];

        $uname = $rowf[username];

        $loc1 = $rowf[loc];

        $dept = $rowf[dept];

        $date = $rowf[datejoin];

        $name = $rowf[name];

        $emid = $rowf[emid];

        $dob = $rowf[dob];

        $gender = $rowf[gender];

        $job = $rowf[jobtitle];

        $info = $rowf[info];

        $datejoin = $rowf[datejoin];

        $locid = $rowf[locid];

        $deptid = $rowf[deptid];

        $newbal = $rowf[newbal];

        $templatelist = "";

        $tempcn = 0;

        $querytemp = "select tid,ltype from leaveatemplate$cid where username='$uname' order by tid desc";

        $resulttemp = pg_query($querytemp); 

        while ($rowtemp = pg_fetch_array($resulttemp)) {

            $tempcn = $tempcn  1;

            $tid = $rowtemp[tid];

            $ltype = $rowtemp[ltype];

            if($tempcn=="1")

                $templatelist = "$ltype|$tid";

            else

                $templatelist = $templatelist.","."$ltype|$tid";

        }

$elisting=$elisting."<tr><td align="center">$uname</td><td align="center">$loc1</td><td align="center">$dept</td>
        <td align="center">$date</td>
        <td align="center"><a><button class="btn btn-mini"data-toggle="modal"href="#long"
        onClick="javascript:edit('$name','$uname','$emid','$dob','$gender','$job','$info','$datejoin','$locid','$deptid','$myid','$templatelist');"><i class="icon-pencil"></i></a>
  

Вот edit() код javascript:

 function edit(a,b,c,d,e,f,g,h,i,j,k,l){
        document.getElementById("frm").id.value=k;
      document.getElementById("frm").name.value=a;
        document.getElementById("frm").username.value=b;
        document.getElementById("frm").emid.value=c;
      document.getElementById("frm").dob.value=d;
        setCheckedValue(document.forms['frm'].elements['gender'],e);
        document.getElementById("frm").job.value=f;
        document.getElementById("frm").info.value=g;
        document.getElementById("frm").datejoin.value=h;
        document.getElementById('locid').value=i;
        document.getElementById('deptid').value=m;

      var params = b;
      window.location.href="http://192.168.1.5/eleave/employee.php?lapplicant="   params;

        var myTemp = l;
        var mySplitResult = myTemp.split(",");
        for(i = 0; i < mySplitResult.length; i  ){
            cval = mySplitResult[i];
            myval = cval.split("|");
            val1 = myval[0];
            val2 = myval[1];
            document.getElementById('temp' val1).value= val2;
        }
  

Поскольку я не смог попробовать много способов b входа edit() , мне нужно найти способ получить $uname $elisting и отправить его $llisting в том же PHP-файле (employee.php ), код которого приведен ниже:

 $llisting ="";

    $ct=0;

    //leave code
    $ccompassionate = "3";
    $cemergency = "4";
    $cmaternity = "5";
    $cmedical = "6";
    $cannual = "2";

    //leave value
    $compassionate = 2;
    $emergency = 5;
    $maternity = 60;
    $medical = 20;

    $lapplicant = $_POST['lapplicant'];

    $querye = "select leavetype.id, leavetype.ltype, leaves.leave from leavetype,leaves where username='".$_SESSION["username"]."'";

        $resulte = pg_query($querye); 

        while ($rowe = pg_fetch_array($resulte)) {

            $ct=$ct 1;

            $lid = $rowe[id];

            $ltype = $rowe[ltype];

            $leave = $rowe[leave];  

        if ($lid == $ccompassionate) {
            $compassionate_query = pg_query("select ltotal from leave where lapplicant='".$lapplicant."' and ltype='".$ccompassionate."'");
            if (count($compassionate_query) > 0) {
                foreach ($compassionate_query as $data) {
                    $total_compassionate = $total_compassionate   $data['total'];
                    $value = $compassionate - $total_compassionate;
                }

            } else {
                $value = $compassionate;
            }
$llisting=$llisting."<tr><td align="center">$ct</td><td>$ltype</td><td><input type='text' value='$lapplicant'></td><td align="center">";

        $llisting=$llisting."<select name="temp$lid" id="temp$lid" class="span12"><option value="0"> - </option> $tlisting</select>";

        $llisting=$llisting."</td></tr>n";
  

У кого-нибудь есть идея войти $uname $elisting и отправить $llisting ?

А также, как можно '$name','$uname','$emid','$dob','$gender','$job','$info','$datejoin','$locid','$deptid','$myid','$templatelist' $elisting изменить in на a,b,c,d,e,f,g,h,i,j,k,l in edit() , я новичок в Javascript, поэтому я не понимаю, как это может измениться?

Спасибо за помощь..

введите описание изображения здесь

это код, в котором href="#long" вызывается:

 <div id="long" class="modal hide fade" tabindex="-1" data-replace="true" data-width="760">
    <div class="modal-header"><h3>Employee Profile</h3></div>
    <div class="modal-body">
        <form class="form-horizontal" method="Post" name="frm" id="frm">
  

Код для вызова html-страницы:

 if($msg!="") $alert= "<div class="alert"><i class="icon-info-sign"></i> $msg</div><p>amp;nbsp;</p>";

    $source2 = file_get_contents('http://'.$_SESSION["url"].'/cgi-bin/vo/'.$_SESSION["sessid"].'.interface.designer.vo?file=eleave/employee.htm');

    $html2 = str_replace("[templateurl]",$templateurl,$source2);

    $html2 = str_replace("[alert]",$alert ,$html2);

    $html2 = str_replace("[elisting]",$elisting ,$html2);

    $html2 = str_replace("[ulisting]",$ulisting ,$html2);

    $html2 = str_replace("[locationlisting]",$locationlisting ,$html2);

    $html2 = str_replace("[deptlisting]",$deptlisting ,$html2);

    $html2 = str_replace("[llisting]",$llisting ,$html2);

    $html2 = str_replace("[wfid]","sid=$sid" ,$html2);

    echo $html2;
  

Комментарии:

1. в вашем Javascript это только function edit(a,b,c,d,e,f,g,h,i,j,k,l){ alert(b); } то, что вы получаете?

2. Все еще отображается та же страница, сэр .. Ничего не меняется.. Я запутался..

3. используйте print_r() на вашем PHP для отладки и console.log(), чтобы увидеть, что вы делаете. и идите шаг за шагом.

4. предупреждение в JS просто выводит окно только на той же странице. Если вы используете Chrome, нажмите Shift Ctrl J, чтобы открыть консоль. Откройте консоль и нажмите, чтобы запустить функцию edit () и посмотреть, получите ли вы что-нибудь.

5. консоль просто ничего не показала, сэр..

Ответ №1:

Пожалуйста, сначала попробуйте базовый, у меня нет проблем с этим.

В JS:

 <script>
    function TestTriggered(name){
        alert("the function triggered!");
        alert("My name is: "   name);
    }
</script>
  

В части HTML

 <input type="button" name="myButton" onClick="javascript:TestTriggered('John');" value="Please click"/>
  

Пожалуйста, попробуйте это сначала и посмотрите, как это работает.

Комментарии:

1. Это не ответ

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

3. Я попытался поместить ваш код, и он показал пустую страницу, а NetworkError: 500 Internal Server Error - http://192.168.1.5/eleave/employee.php?sid=SID421464131stwptwbply497. затем я попытался отредактировать свой код: <input type='button' class="btn btn-mini"data-toggle="modal"href="#long" onClick="javascript:testtriggered('Nana');"> , и он показал ту же страницу edit() без данных внутри текстового поля. и произошла ошибка: ReferenceError: testtriggered is not defined. Связано ли это с href="#long" ? long — это идентификатор для div, содержащий форму и данные из $elisting.

4. сначала вы должны определить функцию testtriggered . удалить href , поскольку он используется для перехода на другие страницы

5. У меня есть сэр, на странице html.. И когда я удалил href='#long' , ничего не появилось, только ошибка в консоли. ReferenceError: testtriggered is not defined