为什么我无法在PHP中传递变量

时间:2018-11-08 18:46:10

标签: php

我在inc / function中有一个function.php。此函数包含一个表。该表是在MySQL语句中生成的。

我的想法很简单-用户可以通过下一个按钮和一个后退按钮浏览表格。

这是我的代码:

<div class="container-fluid">
		<form action="fda.php" method="post">

  <div class="row">
    <div class="col-md-6 col-md-offset-3">
				<p>Bitte beantworten Sie die folgenden Fragen:</p>
		<table class="table table-striped">
			<thead>
				  <tr>
					<th>Nr.</th>
					<th width="250">Frage</th>
<?php tbl_description() ?>

					  
				  </tr>
				</thead>
			<tbody>
				<?php tbl_showPage() ?>
			</tbody>
		</table>


	</div> 
	<div class="col-md-6 col-md-offset-3 text-center">
	<form action="functions.php" method="post">
	<input type="submit" name="back" value="Zurück" id="back" class="btn btn-default">
	<input type="submit" name="go" value="Weiter" id="go" class="btn btn-default">
	
		<!--<input type="submit" value="FDA auswerten" class="btn btn-default">-->
	</div>	
  </div>
																						 </form>
</div>

这是fda.php文件的一部分!除了增加了function.php中的mysql语句外,其他一切工作都很酷。 单击下一步时,该语句应“刷新”,并向我显示表格的第二页。就像一个问卷调查员。

这是函数php的代码。

function tbl_showPage(){


    global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb;


    $connection=mysqli_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
    mysqli_select_db($connection, $mysqldb) or die("Konnte die Datenbank nicht waehlen.");

    if(isset($_POST['go']))
    {
        $page++;

    }
    elseif($_POST['back'])
    {
        $page--;
    }

    //if(isset($page)){
    if($page<1)
    {
        $sql_tbl_questions = "SELECT * FROM `questions` where istAktiv='1' && dimension='1'";
    }
    elseif($page>9)
    {
        $sql_tbl_questions = "SELECT * FROM `questions` where istAktiv='1' && dimension='9'";
    }
    else
    {
        $sql_tbl_questions = "SELECT * FROM `questions` where istAktiv='1' && dimension=$page";
    }
    //}
    $quest_query = mysqli_query($connection, $sql_tbl_questions) or die("Anfrage nicht erfolgreich");
    $i = 0;

    while ($question = mysqli_fetch_array($quest_query)) {
        $i++;
        echo '<tr>';
        echo '<th>'.$i.'</th>';
        echo '<th>'.$question['question'].'</th>';
        echo '<th class="text-center"><input type="radio" name="'.$question['dimension'].'_question_'.$question['id'].'" value="0" required></th>';
        echo '<th class="text-center"><input type="radio" name="'.$question['dimension'].'_question_'.$question['id'].'" value="2.5"></th>';
        echo '<th class="text-center"><input type="radio" name="'.$question['dimension'].'_question_'.$question['id'].'" value="5"></th>';
        echo '<th class="text-center"><input type="radio" name="'.$question['dimension'].'_question_'.$question['id'].'" value="7.5"></th>';
        echo '<th class="text-center"><input type="radio" name="'.$question['dimension'].'_question_'.$question['id'].'" value="10"></th>';
        echo '</tr>';
        $dimensions = $question['dimension'];
    }
    echo '<tr>';
        echo '<th></th>';
        echo '<th>Kommentar/Ihre Anmerkung</th>';
        echo '<th class="text-center" colspan=5><textarea rows=3 cols=50 name="Kommentar"></textarea></th>';
        echo '</tr>';



    echo '<input type="hidden" name="gesamt" value="'.$i.'">';
    echo '<input type="hidden" name="dimensions" value="'.$dimensions.'">';
    echo '<input type="hidden" name="size" value="'.$_POST['size'].'">';    
    echo '<input type="hidden" name="branche" value="'.$_POST['branche'].'">';




}

也许我缺少了什么?我真的希望有人能帮助我!

1 个答案:

答案 0 :(得分:0)

我在这里看到两个问题:

  1. 无论单击哪个表单,表单都将提交“ back”和“ go”变量。
  2. PHP脚本未跨页面加载跟踪$ page变量。 (如果未跟踪,则每次加载页面时它将重新初始化为0。)

尝试让您的表单告诉PHP脚本加载哪个页面:

<form action="functions.php" method="post">
  <button type="submit" name="page" value="<?php echo $page - 1; ?>">Zurück</button>
  <button type="submit" name="page value="<?php echo $page + 1; ?>">Weiter</button>
</form>

然后在您的PHP中,只需检查$ _POST ['page']

的值。
if(!empty($_POST['page'])) {
    $page = intval($_POST['page']);
} else {
    $page = 1;
}

您还需要使$ page变量从fda.php脚本可见到function.php脚本。您可以使用mysql变量旁边的global $page;来实现。 (这不是最佳或简洁的处理方式,但这将是对代码的最简单添加。)