【问题标题】:How to pass array records from process page to index page in php?如何将数组记录从进程页面传递到php中的索引页面?
【发布时间】:2017-02-02 23:37:35
【问题描述】:

我能够在我的进程页面中显示数组记录,现在我必须在索引页面上传递该记录。数组中有超过 10 条记录。 一旦记录将显示在索引上,之后我想在甜蜜警报弹出窗口中显示所有记录。

我正在实现什么...我在甜蜜警报中输入名字,并且 fname 将重定向进程页面并检查 fname 是否可用(如果可用)以及有多少同名可用的用户都将重定向到索引页面。 我能够检索进程页面中的所有记录,但我必须重定向索引页面上的所有记录。

  Getting error:Undefined variable: _SESSION and Invalid argument supplied for foreach() 

你能帮我解决这个问题吗?

Process.php

$array_record=array();
   $array_record['idsa']=$row["Id"];
  $array_record['Fname']=$row["First_name"];
  $array_record['Lname']=$row["Last_name"];
 $_SESSION['arr']=$array_record;
    // I tried below echo it display record on process page.


 /*
     $session=$_SESSION['arr'];
     foreach($session as $val)
     {
       echo $val.'<br>';
     }
    */
    header('Location: index.php?search=1');

索引

    if(!empty($_GET['search'])):

    $session=$_SESSION['arr'];
 foreach($session as $val)
 {
   echo $val.'<br>';
 }

    echo "<script>  
        setTimeout(function() {
            swal({
                title: 'You details !',
                text: '$val',
                type: 'info',
                closeOnCancel: true,
                html:true

             }, function() {
                window.location = 'index.php';
            });
        }, 1000);
    </script>";
      endif;?>

【问题讨论】:

  • 去掉 URL 编码函数中的引号:urlencode($array_record[idsa])
  • $searchdetails 来自哪里?为什么url只有1个参数,你却在index里找4个?
  • RamRaider 先生,如果我将在索引上获得输出,我将设置 $searchdetails
  • 让我告诉你我正在实现什么...我在甜蜜警报中输入名字,并且 fname 将重定向进程页面并检查 fname 是否可用(如果可用)以及有多少用户可用所有将重定向到索引页面的名称..我能够检索进程页面中的所有记录,但我必须重定向索引页面上的所有记录

标签: javascript php arrays session sweetalert


【解决方案1】:

为了从 process.php 到 index.php 中获取所有数组记录,在 SESSION 中设置该数组并在 index.php 中获取会话记录。

index.php

<?php

//Submitting form here => action ="process.php"


?>

进程.php

<?php
  //get the records from DB and set the values in session
  // Redirect to index.php

session_start();
$_SESSION['arr'] = $row; // $row is the array from Database
header("Location:index.php");
exit;
?>

index.php

<?php
//Use the values in session 
//Unset after using 

session_start();
if($_SESSION['arr']){

$session=$_SESSION['arr']; 
foreach($session as $val) 
{ 
echo "<pre>"; 
print_r($val); 
echo "</pre>"; 
}
//you can display the array using print_r($_SESSION).
}
?>

【讨论】:

  • 感谢 Ayyanar 先生的回复。你能分享代码吗?我可以在 process.php 中显示记录,但是如何从那里重定向所有记录。请帮助我
  • Mr.Ayyanar 请检查我的代码,我使用会话更新了代码,但在索引页面上出现错误。
  • 无论你在哪里使用 php SESSION 都可以启动会话。所以在 index.php 文件中启动会话 session_start()
  • 您是否在索引和进程文件中都开始了会话?
  • 是的,在顶部我输入了
【解决方案2】:

我不想建议此方法是执行此操作的最佳方法,但它应该有助于解决您可能遇到的一些问题。

header('Location: startEntry.php?data=' . base64_encode([$row["Id"],$row["First_name"],$row["Last_name"]]));

我认为这里更大的问题是你说你正在通过:

超过 10 条记录

无论您使用什么方法,您都可能开始达到 URL 长度限制。

【讨论】:

  • 对不起,阿贝拉先生,没有得到任何输出。
  • 那是伪代码,不是精确代码。看起来我用data 替换了search。而且您显然将不得不在另一端进行 base64 解码。
  • 让我告诉你我正在实现什么...我在甜蜜警报中输入名字,并且 fname 将重定向进程页面并检查 fname 是否可用(如果可用)以及有多少用户可用所有将重定向到索引页面的名称..希望您理解
  • 我能够检索进程页面中的所有记录,但我必须重定向索引页面上的所有记录
  • 我认为你误解了我想要帮助的代码的 aspect。我只是建议不要在 url 的 query 组件中执行多个 urlencode,而是考虑组合所有数组值并使用 base64。超出该范围的任何问题都不是我曾经/正在尝试使用上面建议的代码解决的问题。
猜你喜欢
  • 2013-08-26
  • 2017-01-25
  • 2012-12-04
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多