Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过POST将变量从一页传递到另一页,并打印上一页中的数据_Php_Json_Post - Fatal编程技术网

Php 通过POST将变量从一页传递到另一页,并打印上一页中的数据

Php 通过POST将变量从一页传递到另一页,并打印上一页中的数据,php,json,post,Php,Json,Post,我有两个文件:basic.php和pptimeline.php。第一个包含接口,第二个是从数据库获取数据的文件,它应该模拟json文件,因为我在上面使用它:header('Content-Type:application/json') if (isset ($_POST['value'])) { $infotimeline = array(); /* * REPLACE this with Database fetching/quering */

我有两个文件:basic.phppptimeline.php。第一个包含接口,第二个是从数据库获取数据的文件,它应该模拟json文件,因为我在上面使用它:
header('Content-Type:application/json')

if (isset ($_POST['value'])) {
    $infotimeline = array(); 

    /*
     * REPLACE this with Database fetching/quering  
     */ 
    $infotimeline['id'] = 322; 
    $infotimeline['title'] = "the lion king";
    $infotimeline['description'] = "good movie";
    $infotimeline['focus_date'] = 1990; 

    $data = json_encode($infotimeline); 
    echo $data; 
}
?>
我有一个组合框,显示数据库中的进程数,然后在时间轴中显示。我设法将
$nprocesso
从basic.php传递到pptimeline.php并在那里打印。问题是我想将
$nprocesso
传递到pptimeline.php,运行数据库的查询,然后在basic.php中打印数据,但我不知道怎么做,因为表单操作让我停留在pptimeline.php页面上,打印的文本是json格式的

我希望我说清楚了

basic.php

<form action="json/pptimeline.php" method="POST" >
<label for="Process"> NProcess : </label>
  <select id="cproc" name="NProc"     onchange="document.getElementById('nprocesso').value=this.options[this.selectedIndex].text">
  <?php
foreach ($products as $res3)
    {
        echo "<option value='".$res3["PROCESSO"]."'>".$res3["PROCESSO"]."</option>";
    }
    ?>
</select>
<input type="hidden" name="nprocesso" id="nprocesso" value="" />
<input type="submit" name="search" value="Search"/>
</form>

 <?php
if(isset($_POST['search']))
{
    $nprocValue = $_POST['Proc'];
    $nproc = $_POST['nprocesso']; // get the selected text
}
?>
if (isset ($_POST['value'])) {
    $infotimeline = array(); 

    /*
     * REPLACE this with Database fetching/quering  
     */ 
    $infotimeline['id'] = 322; 
    $infotimeline['title'] = "the lion king";
    $infotimeline['description'] = "good movie";
    $infotimeline['focus_date'] = 1990; 

    $data = json_encode($infotimeline); 
    echo $data; 
}
?>

一种方法是使用addheader('Location:$new_url');要将pptimeline.php重定向回basic.php,请执行以下操作:

if (isset ($_REQUEST['nprocesso'])) {
    $nprocesso = $_REQUEST['nprocesso'];
    echo $nprocesso;
    header('Location: basic.php?v=$nprocesso'); 
}
在basic.php中,在末尾添加以下内容:

if (isset($_GET['v']))
{
    echo $_GET['v']; 
}
此外

if (isset ($_POST['value'])) {
    $infotimeline = array(); 

    /*
     * REPLACE this with Database fetching/quering  
     */ 
    $infotimeline['id'] = 322; 
    $infotimeline['title'] = "the lion king";
    $infotimeline['description'] = "good movie";
    $infotimeline['focus_date'] = 1990; 

    $data = json_encode($infotimeline); 
    echo $data; 
}
?>
上面提供的解决方案确实有效,但远不是最佳方法

您需要的是从basic.php向pptimeline.php发出AJAX请求,并将结果返回basic.php上显示

要涵盖的内容太多,要修改代码来准确地告诉您如何做到这一点。但我将尝试总结:

  • 包含在basic.php中
  • 删除
    周围的
    ,而是将事件处理程序添加到
  • 在单击处理程序中,获取用户选择的值
  • 在click处理程序中创建一个函数,并(通过POST)发送该值
  • 在pptimeline.php中:

  • if(设置($\u POST['v'])
    而不是$\u REQUEST[]
  • 删除header()函数,而只回显要发送回basic.php的数据
  • 如果需要json格式的数据,请不要忘记保留
    标题('Content-Type:application/json')
  • AJAX文章框架:

        $("#form1").on('click', function(){
    
        // get the selected value from <select>
        //var value = ....
        $.ajax()
        {
            url: "pptimeline.php",
            type: "POST",
            data: {"v" : value}
            success: function(response) {
                // some code to neatly display the results 
            }, 
            error: function(x,y,z){
                alert("an error occured"); 
            }
        }); 
    

    对不起,如果我是个哑巴或其他什么的话,我对这一点很陌生。我一直在尝试按照你说的去做,但我还没有完全做到,因为我不知道在
    成功:
    中放什么,你的意思是什么。这些是我在images和pptimeline1.php中的文件,将位于if块之后的所有代码放在其中。然后在$infotimeline中包含所有数据之后,$str=json_encode($infotimeline);echo$str;在basic.php中,您需要解析刚刚收到的JSON字符串并从中生成一个数组,我认为您使用的是JSON.parse(response)。此时,在basic.php中有了数组。此时,如何显示数据取决于您。一种方法是创建一个,然后放入其中。我将调用时间线的代码放入
    success:
    中,您可以在绿色框中看到,绿色箭头就是我调用文件-。我试着按照你在pptimeline.php中说的做,但是
    $\u POST
    部分出了问题。这就是数据应该出现在basic.php文件中的地方-很抱歉,我回答了您最初的问题,我不能为您完成整个项目。请将以上答案标记为正确。我会投票,但上面说我需要15个声誉。你回答了我的问题,帮了我很多,所以我很感激。我不想让你为我做这个项目,我想知道这就是为什么我要寻求指导。