我们使用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 ^
答案 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>
但你可以做得更干净。你应该在你的第二种形式中使用选择输入:)