2

このコードを適用すると、次のようになります。これらの文字列が展開されているテキストエリアの場所$lines = explode("\n", $val);$val = $_POST['result'];場所は次のとおりです。$_POST['result'];

A-B-> 1:00

B-A-> 1:30

だから$lines[0] = "A - B -> 1:00"そして$lines[1] = "B - A -> 1:30"それぞれ。

foreach ($lines as $line)、私はすべての->会合のためにそれを再び爆発させます。このような:

    $fields = explode('->', $line);
    $loc = trim($fields[0]);
    $bltime = trim($fields[1]);

つまり、$loc="A--B"および$bltime="1:00"です。次に、これらの値を、セッションに保存した値、つまり$_SESSION[rno]別のテーブルの主キーである値と一緒にテーブルに保存し、同じテーブルから別の値をフェッチします。

    $e=mysql_query("select etd from reservation 
      where reservno = '$_SESSION[rno]'") or die(mysql_error());
    $f=mysql_fetch_array($e);
    $g=$f['etd'];
    mysql_query("insert into pdf(reservno, block, location, etd) 
      values ('$_SESSION[rno]', '".mysql_escape_string($bltime)."','".
      mysql_escape_string($loc)."', '$g')") or die(mysql_error()); 

etd次に、の値とblockの値を追加する必要があります。その後、テーブルの主キーであるeta最大値を持つテーブルを更新します。pdf_idpdf

    $a=mysql_query("select pdf_id as 'maxpdf' from pdf where pdf_id in 
      (select max(pdf_id) from pdf where reservno = '$_SESSION[rno]')") 
      or die(mysql_error());
    $b=mysql_fetch_array($a);
    $c=$b['maxpdf'];
    $h=mysql_query("select addtime(etd, block) as 'eta' from pdf 
      where pdf_id = '$c'") or die(mysql_error());
    $j=mysql_fetch_array($h);
    $k=$j['eta'];
    mysql_query("update pdf set eta = '$k' where pdf_id = '$c'") 
      or die(mysql_error());

したがってpdf、上記の値に基づいて、上記で投稿したコード全体を実行すると、次の値が表に表示されます$_POST['result'];

ここに画像の説明を入力してください

私がやりたいのは、これを可能にすることです。最初etaに次の値を計算してから、その値(+ )etdを計算します。そして、列は最初から次の値を引いた値を持つ必要があります。このようなもの:etaetdblockwaitingetaetd

ここに画像の説明を入力してください

ここで重要かつ重要なのは、最初etaから次への受け渡しetdと計算です。展開された値をループする必要がある場合、どうすればそれを実行できますか?私を助けてください。長い説明で申し訳ありませんが、私が何を達成しようとしているのかを皆さんに理解していただきたいと思います。ありがとう!

4

2 に答える 2

1
Where you insert into PDF, Before Inserting into PDF,

1) Get the Maximum Pdf_Id record, (i.e. the last inserted record)
2) Select the eta from this record and save it in a variable.
3) While inserting, insert the etd as the recorded variable.

それでおしまい。

次のようにコードを編集します。

次のコードの代わりに、

  $e=mysql_query("select etd from reservation 
      where reservno = '$_SESSION[rno]'") or die(mysql_error());
    $f=mysql_fetch_array($e);
    $g=$f['etd'];

使用、この交換

   $NextETD = "Some Dfault Value, you may set it to 12:00";
   $a=mysql_query("select * from pdf where pdf_id in 
      (select max(pdf_id) from pdf where reservno = '$_SESSION[rno]')") 
      or die(mysql_error());
    $b=mysql_fetch_array($a);
    $LastETA=$b['eta'];
    if($LastETA!=null){
        $NextETD = $LastETA;
    }
   mysql_query("insert into pdf(reservno, block, location, etd) 
      values ('$_SESSION[rno]', '".mysql_escape_string($bltime)."','".
      mysql_escape_string($loc)."', '$NextETD')") or die(mysql_error()); 
于 2012-11-08T06:56:16.703 に答える
0

eta1番目の値を2番目の値に渡す方法などを理解しましたetd。これが私が使用したループステートメント全体です。

$lines = explode("\n", $val);

foreach ($lines as $line) 
{
    $fields = explode('->', $line);
    $loc = trim($fields[0]);
    $bltime = trim($fields[1]);
    $e=mysql_query("select eta as 'etd' from pdf where pdf_id in (select max(pdf_id) from pdf where reservno = '$_SESSION[rno]')") or die(mysql_error());
    $f=mysql_fetch_array($e);
    $g=$f['etd'];
    if(empty($g))
    {
    $m=mysql_query("select etd from reservation where reservno = '$_SESSION[rno]'") or die(mysql_error());
    $o=mysql_fetch_array($m);
    $p=$o['etd'];
    $temp=$p;
    }
    else
    {
    $temp=$g;
    }
    mysql_query("insert into pdf(reservno, block, location, etd) values ('$_SESSION[rno]', '".mysql_escape_string($bltime)."','".mysql_escape_string($loc)."', '$temp')") or die(mysql_error());
    $a=mysql_query("select pdf_id as 'maxpdf' from pdf where pdf_id in (select max(pdf_id) from pdf where reservno = '$_SESSION[rno]')") or die(mysql_error());
    $b=mysql_fetch_array($a);
    $c=$b['maxpdf'];
    $h=mysql_query("select addtime(etd, block) as 'eta' from pdf where pdf_id = '$c'") or die(mysql_error());
    $j=mysql_fetch_array($h);
    $k=$j['eta'];
    mysql_query("update pdf set eta = '$k' where pdf_id = '$c'") or die(mysql_error());

}

このステートメントは、クエリの結果が空のセットであるif(empty($g))かどうかをチェックします。select eta as 'etd' from pdf where pdf_id in (select max(pdf_id) from pdf where reservno = '$_SESSION[rno]')クエリの結果が空の場合、それが最初に挿入されるデータであるため、$temp結果のクエリの値が保持されますselect etd from reservation where reservno = '$_SESSION[rno]'。それ以外の場合は、事前に入力されたデータがすでに存在するため、$temp変数は、によって保持される結果のクエリを保持することを意味します。つまり$g、単純に$temp = $g

于 2012-11-09T06:31:41.093 に答える