-2

私はindex.phpとindex2.phpを持っています

ここにindex.phpがあります:

ここに画像の説明を入力

この値を送信すると、index2.php が表示されます。index2.php は次のとおりです。

ここに画像の説明を入力

このエラーメッセージが表示される理由がわかりません。

とにかく、これらの選択された値 (index2.php) を送信すると、データベースから病名が表示されます。送信をクリックすると、このテキストが表示されます(以下):

ここに画像の説明を入力

私はここに自分のコードをペストしています:

index.php

<?php 
$con = mysql_connect("localhost","root","");
mysql_select_db("symptomchecker",$con) or die(mysql_error());

$q = "select dtid,diseasetype from disease_type";

$result = mysql_query($q,$con) or die(mysql_error());

$numRB = mysql_num_rows($result);

echo "<html><head><title>Disease Type</title></head><body><h1>Disease List</h1></br><form action='index2.php' method='post'>";

$i=0;
while($row = mysql_fetch_array($result)){
    echo $row['diseasetype'];
    echo "<input type='radio' name='diseasetype' id='pet1' value='$row[dtid]' />" ;
    echo "<br />";
    $i++;
}
echo " <input type='submit' value='submit' name='submit'></form></body></html>";
?>

index2.php:

$diseasetypeid = "$_POST[diseasetype]";

$j=0;$i=0;
$query = "select did from disty_dis_rel where dtid = ".$diseasetypeid."";
$result1 = mysql_query($query,$con) or die(mysql_error());
echo "<html><head><title>symptom</title></head><body><h1>symptom List</h1></br><form action='' method='post'>";

while($row =  mysql_fetch_array($result1))
{
  $z=$row['did'];
  $query2 = "select sid,symptomname from symptom where sid = ".$z."";
  $result2 =  mysql_query($query2,$con) or die(mysql_error());
  while($row2 = mysql_fetch_array($result2))
  {
      echo $row2['symptomname'];
      echo "<input type='checkbox' name='pets[$i]' id='pet1' value='$row[sid]' />" ;
      echo "<br />";
      $i++;
      }
  $j++;
  }
echo " <input type='submit' value='submit' name='submit'></form></body></html>";


if(isset($_REQUEST[submit]))
{
  **foreach ($_REQUEST[pets] as $key=>$values)**
  {
      $yy.=$values."-";
  }
  $yy=rtrim($yy,"-");

  $xx = "select did,sids from dis_sym_rel where sids=".$yy."";
  $result3 = mysql_query($xx,$con) or die(mysql_error());

  while($row = mysql_fetch_array($result3)){
      $p=$row[did];
      $xxx = "select did,diseasename from disease where did=".$p."";
      $result4 = mysql_query($xxx,$con) or die(mysql_error());
      while($row4 = mysql_fetch_array($result4))
      {
          echo $row4[diseasename];    
      }
  }
}
?>

###doublestar### の間の行はエラー行 (49) です。

4

2 に答える 2

0

このコード:

foreach ($_REQUEST[pets] as $key=>$values)

次のように変更する必要があります。

foreach ($_REQUEST['pets'] as $key=>$values)

引用符で囲む必要があります(文字列の場合は、配列キーの前後にアポストロフィまたは二重引用符を付けます)。

次に、次のようなフォームが必要です(index.phpファイルで見つかりません)。

<input type="text" name="pets[]" />
<input type="text" name="pets[]" />
<input type="text" name="pets[]" />
<input type="text" name="pets[]" />
<input type="text" name="pets[]" />

配列キー「pets」は入力の名前です。[]は配列を示します。foreach($ something as ...)では、$ somethingは配列(またはオブジェクト)である必要があります。

于 2012-04-18T14:20:54.107 に答える
0

ちょうど内index2.php

$diseasetypeid = "$_POST[diseasetype]";

する必要があります

$diseasetypeid = $_POST["diseasetype"];

if(isset($_REQUEST[submit]))

本当にこれである必要があります:

if($_SERVER['REQUEST_METHOD'] == 'POST')

これにより、フォーム値ではなくREQUEST_METHODがチェックされます。と

foreach ($_REQUEST[pets] as $key=>$values)

する必要があります

foreach ($_REQUEST['pets'] as $key=>$values)

SQLインジェクションについて読むことをお勧めします

于 2012-04-17T10:41:06.767 に答える