搜索结果未显示在 iframe 中(使用 switch 语句)
Results from search not shown in iframe (using switch statement)
我们正在使用 switch 语句在语言之间切换,但是当我们尝试使用案例 1(dutch/nl 标志)时,结果不再显示。但是,不使用 switch case 一切正常。
这是我们的索引
<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>
<h1>Zoeken op Medicijn</h1>
<form method="post" action="tabel.php" 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>
这是我们的搜索功能:
<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>
您使用了两种不同的表单,一种用于语言选择,一种用于搜索。因此,当提交第二个表单时,您在第一个表单中选择的任何内容都将被完全忽略。 (此外,第一种形式使用的是 $_GET,而您正在寻找 $_POST 中的语言)
一个快速的解决方法是将您的语言选择元素移动到第二种形式,这样所选的语言就会与搜索短语一起发送。
将 switch ($_POST['lang'])
更改为 switch ($_GET['lang'])
您混淆了 POST 和 GET 与您的两种形式
你应该使用 $_GET['lang'] 而不是 $_POST['lang']。或者您可以使用 $_REQUEST['zoek'] 和 $_REQUEST['lang'].
如果您的表单类型为 GET,则可以使用 $_GET[= 访问表单数据41=] 或 $_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>
Update this code in index file. tabel.php content also added in this
file. So the form will be submitted to the same page and it will not
refer tabel.php.
<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>
但你可以做得更干净。您应该在第二种形式中使用 select 输入 :)
我们正在使用 switch 语句在语言之间切换,但是当我们尝试使用案例 1(dutch/nl 标志)时,结果不再显示。但是,不使用 switch case 一切正常。
这是我们的索引
<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>
<h1>Zoeken op Medicijn</h1>
<form method="post" action="tabel.php" 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>
这是我们的搜索功能:
<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>
您使用了两种不同的表单,一种用于语言选择,一种用于搜索。因此,当提交第二个表单时,您在第一个表单中选择的任何内容都将被完全忽略。 (此外,第一种形式使用的是 $_GET,而您正在寻找 $_POST 中的语言)
一个快速的解决方法是将您的语言选择元素移动到第二种形式,这样所选的语言就会与搜索短语一起发送。
将 switch ($_POST['lang'])
更改为 switch ($_GET['lang'])
您混淆了 POST 和 GET 与您的两种形式
你应该使用 $_GET['lang'] 而不是 $_POST['lang']。或者您可以使用 $_REQUEST['zoek'] 和 $_REQUEST['lang'].
如果您的表单类型为 GET,则可以使用 $_GET[= 访问表单数据41=] 或 $_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>
Update this code in index file. tabel.php content also added in this file. So the form will be submitted to the same page and it will not refer tabel.php.
<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>
但你可以做得更干净。您应该在第二种形式中使用 select 输入 :)