0
  1. 以下のコードでは、$ AAをエコーするまで機能します!エコーは、$ rec ['totsb']から1を引いた値を正しく示し、データベース内の既存の値から1を減算します。次に、コードが間違いなく間違っているデータベースに1つ減らした後に生成された新しい番号を保存する必要があります。私はそれを修正するために多くの代替案を試しましたが、うまくいきませんでした。新しい番号をデータベースに保存する方法を教えてもらえますか?

info:私のデータベースは以下のようになります。そして、間にあるように、ユーザーが選択するためにドロップダウンに数字が入力されます(データベースには302で始まり、309で終わるだけで、ドロップダウンにはすべて302,303,304 ... 309があります)。開始番号306と終了番号306がどの間に収まるかを自動的に識別し、必要に応じて新しい番号をtotsbに保存する必要があります。

+--------+---------+------+
|sbstart |sbend    | totsb|
+--------+---------+------+
|302     |309      | 8    |
|200     |208      | 9    |
|405     |409      | 5    |
+--------+---------+------+

コード:

<?php
$con=mysql_connect('localhost','root') or die ("Server connection failure!");
$db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the database");
$SQL="SELECT * FROM newchk";
$run=mysql_query($SQL,$con) or die ("SQL Error");
$nor=mysql_num_rows($run);

while ($rec = mysql_fetch_array($run))
{
for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++)
    {
    $opt=$_POST['options'];
    if($i = $opt)
     {
        if($rec['totsb'] <= "0")
        {
        echo "You have already entred this cheque number."; 
        return false;
        } else {
        echo "You can proceed with this entry";
        $AA = $rec['totsb']-1;
        $BB=$rec['sbstart'];
        echo $AA;
        $con=mysql_connect('localhost','root') or die ("Server connection      failure!");
        $db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the     database");
        $SQL="UPDATE newchk SET totsb='$AA'";   
        return false;
        }
     }
     else 
     { echo "Error: Cant find choosen in the databse"; 
      return false;
     }
    }
}
?>
4

2 に答える 2

1

この行を変更してみてください

$SQL="UPDATE newchk SET totsb='$AA'";

$SQL="UPDATE newchk SET totsb=".$AA;
于 2012-09-10T14:55:31.237 に答える
0

コードが欠落していない限り...

1)最初のステートメントとは異なり、SQLステートメントで何もしていません(実際に実行する必要があります)。
2)テーブルケマで指定されているように金額が数値の場合、その前後に引用符は必要ありません
。3)レコードを更新するための修飾子としてsbstartを使用することもお勧めします。そうしないと、すべてが更新されます。

$SQL2="UPDATE newchk SET totsb=$AA where sbstart=$BB"; 
$run2=mysql_query($SQL2,$con) or die ("SQL Error"); 

それでも問題が解決しない場合は、データベーススキーマに関する詳細情報を送信してください

追加されたコード

$matches=0;
$opt=$_POST['options'];
while ($rec = mysql_fetch_array($run)){
    if($opt>=$rec['sbstart'] && $opt<=$rec['sbend']){
        # we have a match, run your code

        if($rec['totsb'] <= "0") 
        { 
        echo "You have already entred this cheque number.";  
        return false; 
        } else { 
        echo "You can proceed with this entry"; 
        $AA = $rec['totsb']-1; 
        $BB=$rec['sbstart']; 
        echo $AA; 
        $con=mysql_connect('localhost','root') or die ("Server connection      failure!"); 
        $db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the     database"); 
# fixed lines
        $SQL2="UPDATE newchk SET totsb=$AA where sbstart=$BB"; 
        $run2=mysql_query($SQL2,$con) or die ("SQL Error"); 
# end fixed lines
        return false; 
        } 
        # end your code
        $matches++
    }else{
        # no match
    }
} # while loop through records

if($matches==0){
    echo "Error: Cant find choosen in the databse";  
    return false; 
}else{
    return true;
}

コードをもう少しクリーンアップすることもできますが、それで正しい方向に進むはずです。

于 2012-09-10T14:48:48.817 に答える