搜索结果未显示在iframe中(使用switch语句)

时间:2016-05-24 09:21:36

标签: php html iframe phpmyadmin

我们使用switch语句在语言之间切换,但是当我们尝试使用case 1(dutch / nl标志)时,结果不再显示。但是,在不使用开关盒的情况下,一切正常。

这是我们的索引

<html>

  <head>
    <title>Medispeak</title>
    <link rel=stylesheet href=ProjectCSS.css>
  </head>

  <body>

    <?php
    include 'db.php';
    print_r($_REQUEST);

    $zoek = $_REQUEST['zoek'];
    $lang = $_REQUEST['lang'];
    if ( empty ( $lang ) ) { $lang = "1"; } 
    switch ($lang) {
    case "1":
echo 'case1';
      try
      {
        $sQuery= "SELECT Medibijsluiter
        FROM Medispeak
        WHERE Medinaam LIKE ?";

        $oStmt = $db->prepare($sQuery);
        $oStmt->bindValue(1, "%$zoek%", PDO::PARAM_STR);
        $oStmt->execute();
        if($oStmt->rowCount()>0)

        {
            echo '<table border="2">';
            echo '<thead>';
            echo '<td>Medibijsluiter</td>';
            echo '</thead>';
            while($aRow = $oStmt->fetch(PDO::FETCH_ASSOC))
          {
            echo '<tr>';
            echo '<td>'.$aRow['Medibijsluiter'].'</td>';
            echo '</tr>';
          }
          echo '</table>';
       }
       else
       {
        echo 'Helaas,geen gegevens bekend';
       }

        break;
     }
    }

    catch(PDOException $e)
    {
    $sMsg = '<p>
        Regelnummer: '.$e->getLine().'<br />
        Bestand: '.$e->getFile().'<br />
        Foutmelding: '.$e->getMessage().'
        </p>';

         trigger_error($sMsg);
    }
    $db = null;
    ?>
  </body>

</html>

这是我们的搜索功能:

^\(([\d.]+)\)$
^    here    ^

4 个答案:

答案 0 :(得分:0)

您使用两种不同的形式,一种用于语言选择,另一种用于搜索。因此,当提交第二个表单时,无论您在第一个表单中选择了什么,都会被完全忽略。 (另外,第一个表单是使用$ _GET,你正在寻找$ _POST中的语言)

快速修复将您的语言选择元素移动到第二种形式,因此所选语言将与搜索短语一起发送。

答案 1 :(得分:0)

switch ($_POST['lang'])更改为switch ($_GET['lang'])您将POST和GET与两个表单混为一谈

答案 2 :(得分:0)

您应该使用 $ _ GET ['lang'] 而不是 $ _ POST ['lang'] 。或者您可以使用 $ _ REQUEST ['zoek'] $ _ REQUEST ['lang']

如果表单类型为 GET ,则表单数据可以使用 $ _ GET $ _ REQUEST 。如果类型为 POST ,则应使用 $ _ POST $ _ REQUEST

Read this了解有关PHP中的GET,POST和REQUEST的更多信息

所以改变你的代码

$zoek = $_POST['zoek'];
switch ($_GET['lang']) {

$zoek = $_REQUEST['zoek'];
switch ($_REQUEST['lang']) {

更新代码

<html>
<head>
  <title>Welcome to Medispeak</title>
  <link rel=stylesheet href=Medi.css>
</head>
<body>
<?php
if(!empty($_REQUEST['zoek'])) {
    $zoek = $_REQUEST['zoek'];
    include 'db.php';
    $lang = $_REQUEST['lang'];

    if ( empty ( $lang ) ) { $lang = "1"; } 

    switch ($lang) {
        case "1":
          echo 'case1';
          try
          {
             $sQuery= "SELECT Medibijsluiter FROM Medispeak WHERE Medinaam LIKE ?";
         $oStmt = $db->prepare($sQuery);
         $oStmt->bindValue(1, "%$zoek%", PDO::PARAM_STR);
         $oStmt->execute();
            if($oStmt->rowCount()>0)
            {
                echo '<table border="2"><thead><td>Medibijsluiter</td></thead>';

                while($aRow = $oStmt->fetch(PDO::FETCH_ASSOC))
                {
               echo '<tr><td>'.$aRow['Medibijsluiter'].'</td></tr>';
                }

                echo '</table>';
            } else {
            echo 'Helaas,geen gegevens bekend';
            }

         break;
       }

       catch(PDOException $e) {
        $sMsg = '<p>
            Regelnummer: '.$e->getLine().'<br />
            Bestand: '.$e->getFile().'<br />
            Foutmelding: '.$e->getMessage().'
            </p>';
            trigger_error($sMsg);
        }
    }

    $db = null;
}
?>
<header>
  <div class="lang">
    <form method="GET" action="?set=lang">
      <input id="vlag" name="lang" class="nl" type="submit" value="1">
      <input id="vlag" name="lang" class="en" type="submit" value="2">
      <input id="vlag" name="lang" class="du" type="submit" value="3">
      <input id="vlag" name="lang" class="es" type="submit" value="4">
      <input id="vlag" name="lang" class="pt" type="submit" value="5">
      <input id="vlag" name="lang" class="fr" type="submit" value="6">
    </form>
  </div>
</header>
    <h1>Zoeken op Medicijn</h1>
  <form method="post" action="" target="Mediframe">
    Voer medicijn in:
    <input type="text" name="zoek">
    <br/>
    <input type="submit" value="zoeken">
    <input type="reset" value="wissen">
  </form>
  <div id="outer">
    <div id="inner">
      <iframe name="Mediframe" width="800" height="600" frameborder=0>
      </iframe>
    </div>
  </div>
</body>
</html>
  

在索引文件中更新此代码。 tabel.php内容也在此添加   文件。因此表单将提交到同一页面,但不会   请参阅tabel.php。

答案 3 :(得分:0)

<html>
<head>
    <title>Welcome to Medispeak</title>
    <link rel=stylesheet href=Medi.css>
</head>


<body>
<header>
    <div class="lang">
        <form method="GET" action="?set=lang">
            <input id="vlag" name="lang" class="nl" type="submit" value="1">
        <input id="vlag" name="lang" class="en" type="submit" value="2">
        <input id="vlag" name="lang" class="du" type="submit" value="3">
        <input id="vlag" name="lang" class="es" type="submit" value="4">
        <input id="vlag" name="lang" class="pt" type="submit" value="5">
        <input id="vlag" name="lang" class="fr" type="submit" value="6">
    </form>
</div>
</header>
    <form method="post" action="tabel.php" target="Mediframe">
    <h1>Zoeken op Medicijn</h1>
Voer medicijn in:
   <input type="text" name="zoek">
   <br/>
    <input type="submit" value="zoeken">
<input type="reset" value="wissen">
<input id="vlag"  type="hidden" name="lang" class="nl" value="<?=$_GET["lang"]?>">
</form>
<div id="outer">
<div id="inner">
    <iframe name="Mediframe" width="800" height="600" frameborder=0>
    </iframe>
</div>
</div>
</body>

</html>

tabel.php

<html>

<head>
    <title>Medispeak</title>
    <link rel=stylesheet href=ProjectCSS.css>
</head>

$zoek = $_POST['zoek'];

switch ($_POST['lang']) {
case "1":
    try {
        $sQuery = "SELECT Medibijsluiter
    FROM Medispeak
    WHERE Medinaam LIKE ?";

        $oStmt = $db->prepare($sQuery);
        $oStmt->bindValue(1, "%$zoek%", PDO::PARAM_STR);
        $oStmt->execute();
        if ($oStmt->rowCount() > 0) {
            echo '<table border="2">';
            echo '<thead>';
            echo '<td>Medibijsluiter</td>';
            echo '</thead>';
            while ($aRow = $oStmt->fetch(PDO::FETCH_ASSOC)) {
                echo '<tr>';
                echo '<td>' . $aRow['Medibijsluiter'] . '</td>';
                echo '</tr>';
            }
            echo '</table>';
        } else {
            echo 'Helaas,geen gegevens bekend';
        }

    } catch
    (PDOException $e) {
        $sMsg = '<p>
    Regelnummer: ' . $e->getLine() . '<br />
    Bestand: ' . $e->getFile() . '<br />
    Foutmelding: ' . $e->getMessage() . '
    </p>';

        trigger_error($sMsg);
    }
    $db = null;
    break;
}
?>
</body>
</html>

但你可以做得更干净。你应该在你的第二种形式中使用选择输入:)