2012-11-08 279 views
2

在施加这样的代码:$lines = explode("\n", $val);其中$val = $_POST['result'];$_POST['result'];是从那里这些字符串被分解一个textarea:PHP循环语句

A - B - > 1:00

乙 - 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()); 

然后我需要添加的etdblock的值的eta值然后只更新具有最大pdf_id其中pdf表的主键之后是表。

$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()); 

所以我会在运行整个代码我张贴上面仍然基于的$_POST['result'];上述值必须在pdf表以下值:

enter image description here

我想要做什么是使这成为可能:具有第一个计算的eta下一个etd的值然后计算它的etaetd + block)。然后waiting列的值应该是第一个eta减去下一个etd。事情是这样的:

enter image description here

什么是至关重要的,这里重要的是第一eta的传递到下一个etd和计算。当我需要循环展开的值时,我怎么能完成它?请帮帮我。对于长时间的解释我很抱歉,但我希望你们所有人都明白我想要达到的目标。谢谢!

+0

** note **'mysql_ *'的弃用过程已经开始。改为使用[pdo](http://php.net/manual/en/book.pdo.php)。 – itachi

+0

您绘制的表格是“预订还是PDF”? –

+0

@SHAKIRSHABBIR,第一个表格是表格PDF。第二个是我想要的表格PDF的样子。谢谢。 – xjshiya

回答

0

我已经想通了如何在第一个eta值传递给第二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

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()); 
+0

如何使其在循环语句内工作?请参阅编辑。谢谢。 – xjshiya

+0

在第一个惰性语句之前,请确保您检查至少有一条记录被返回 –

+0

我应该从查询'select etd from reservation where reservno ='$ _SESSION [rno]''插入第一个eta。如果该查询在循环语句下,那么如何更改第二个etd?我很抱歉我缺乏,但我没有那么多。 – xjshiya