我有一个包含6个不同字段的表单,用于输入日期(day1
到day6
),6个不同的字段输入特定日期的详细信息(dtls1
到dtls6
) 。这些所有数据都将转到数据库。并且有一个页面显示所有这些数据。选择是根据日期。代码如下......
$today = date('D, d M, Y');
$sql = "SELECT * FROM tables WHERE day1 = '$today' AND org = 'green'";
if($_POST!=""){
$mydate = mysql_real_escape_string($_POST['datepicker']);
if($mydate!=""){
$sql = "SELECT * FROM tables WHERE day1 = '$mydate' AND org = 'green'";
}
}
$string = nl2br($string);
$num_results_per_page = 2;
$num_page_links_per_page = 5;
$pg_param1 = ""; // Ex: &q=value
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
pagination($sql, $num_results_per_page, $num_page_links_per_page, $pg_param);
if($pg_error == '')
{
if(mysql_num_rows($pg_result) > 0)
{
while($data = mysql_fetch_assoc($pg_result))
{
echo "<table width=585 height=203>
<tr>
<td height=10 colspan=3 align=left valign=top></td>
</tr>
<tr>
<td height=17 colspan=3 align=center valign=middle class=text6>". $data['pgmtitle'] .".</td>
</tr>
<tr>
<td height=17 colspan=3 align=center valign=middle class=text8>". $data['org'] .".</td>
</tr>
<tr>
<td height=21 colspan=3 align=center valign=middle class=text19>". $data['programdtls1'] ." OR</td>
</tr>
<tr>
<td width=190 height=32 align=left valign=top class=text3>". $data['venue'] ."</td>
<td width=11 rowspan=2 align=left valign=top><div class=box2></div></td>
<td width=368 rowspan=2 align=left valign=top class=text7>
<b>Contact:</b> ". $data['contactperson'] ."
<br/><b>Phone:</b> ". $data['contactnumber'] ."
<br/><b>E-mail ID:</b> ". $data['email'] ."
<br/><b>Website:</b> ". $data['website'] ."</td>
</tr></table><br/>"
echo "</br>". $pagination_output;
}
else
{
echo '<p class="text11">No events listed for this day.</p>';
}
}
else
{
echo $pg_error; //display any errors, you can remove this if you want.
}
?>
此代码工作正常。问题是我想显示是否有任何东西(programdtls2到programdtls6)。事情是,使用programdtls2,我想显示场地,联系人,联系电话等,与programdtls1相同。像...
echo "<table width=585 height=203>
<tr>
<td height=10 colspan=3 align=left valign=top></td>
</tr>
<tr>
<td height=17 colspan=3 align=center valign=middle class=text6>". $data['pgmtitle'] .".</td>
</tr>
<tr>
<td height=17 colspan=3 align=center valign=middle class=text8>". $data['org'] .".</td>
</tr>
<tr>
<td height=21 colspan=3 align=center valign=middle class=text19>". $data['programdtls2'] ."</td>
</tr>
<tr>
<td width=190 height=32 align=left valign=top class=text3>". $data['venue'] ."</td>
<td width=11 rowspan=2 align=left valign=top><div class=box2></div></td>
<td width=368 rowspan=2 align=left valign=top class=text7>
<b>Contact:</b> ". $data['contactperson'] ."
<br/><b>Phone:</b> ". $data['contactnumber'] ."
<br/><b>E-mail ID:</b> ". $data['email'] ."
<br/><b>Website:</b> ". $data['website'] ."</td>
</tr></table><br/>"
表格结构
"id_user INT NOT NULL AUTO_INCREMENT ,".
"org VARCHAR( 100 ) NOT NULL ,".
"pgmtitle VARCHAR( 100 ) NOT NULL ,".
"category VARCHAR( 32 ) NOT NULL ,".
"relation VARCHAR( 75 ) NOT NULL ,".
"venue VARCHAR( 75 ) NOT NULL ,".
"hr VARCHAR( 30 ) NOT NULL ,".
"min VARCHAR( 30 ) NOT NULL ,".
"time VARCHAR( 30 ) NOT NULL ,".
"day1 VARCHAR( 30 ) NOT NULL ,".
"day2 VARCHAR( 30 ) NOT NULL ,".
"day3 VARCHAR( 30 ) NOT NULL ,".
"day4 VARCHAR( 30 ) NOT NULL ,".
"day5 VARCHAR( 30 ) NOT NULL ,".
"day6 VARCHAR( 30 ) NOT NULL ,".
"city VARCHAR( 35 ) NOT NULL ,".
"others VARCHAR( 35 ) NOT NULL ,".
"contactperson VARCHAR( 128 ) NOT NULL ,".
"contactnumber VARCHAR( 128 ) NOT NULL ,".
"email VARCHAR( 64 ) NOT NULL ,".
"programdtls1 VARCHAR( 150 ) NOT NULL ,".
"programdtls2 VARCHAR( 150 ) NOT NULL ,".
"programdtls3 VARCHAR( 150 ) NOT NULL ,".
"programdtls4 VARCHAR( 150 ) NOT NULL ,".
"programdtls5 VARCHAR( 150 ) NOT NULL ,".
"programdtls6 VARCHAR( 150 ) NOT NULL ,".
"nature VARCHAR( 50 ) NOT NULL ,".
"resentry VARCHAR( 50 ) NOT NULL ,".
"confirmcode VARCHAR(32) ,".
"PRIMARY KEY ( id_user )".
")";
这可能吗
答案 0 :(得分:0)
如果我正确阅读此内容,您希望 programdtls2
取代 programdtls1
(如果已设置),可以使用简单的方法完成的if-else语句。
if($data['programdtls2'] != '')
{
// programdtls2 is NOT empty, so superseed programdtls1:
echo $data['programdtls2'];
}
else
{
echo $data['programdtls1'];
}
上面的代码只是我认为你想要和应该做的一个简单的例子。您也可以进行内联检查,如下所示:
(($data['programdtls2'] != '') ? $data['programdtls2'] : $data['programdtls1'])
这意味着如果不是空的,请执行 dtls2
否则执行 dtls1
如果您将其与您已有的代码结合使用,则可以获得此功能。 请注意,此代码是从原始代码中复制的,因此包含相同的错误,例如缺少分号(;
)。
echo "<table width=585 height=203>
<tr>
<td height=10 colspan=3 align=left valign=top></td>
</tr>
<tr>
<td height=17 colspan=3 align=center valign=middle class=text6>
". $data['pgmtitle'] .".
</td>
</tr>
<tr>
<td height=17 colspan=3 align=center valign=middle class=text8>
". $data['org'] .".
</td>
</tr>
<tr>
<td height=21 colspan=3 align=center valign=middle class=text19>
". (($data['programdtls2'] != '') ?
$data['programdtls2'] : $data['programdtls1']) ." OR
</td>
</tr>
<tr>
<td width=190 height=32 align=left valign=top class=text3>
". $data['venue'] ."
</td>
<td width=11 rowspan=2 align=left valign=top><div class=box2></div></td>
<td width=368 rowspan=2 align=left valign=top class=text7>
<b>Contact:</b> ". $data['contactperson'] ."<br/>
<b>Phone:</b> ". $data['contactnumber'] ."<br/>
<b>E-mail ID:</b> ". $data['email'] ."<br/>
<b>Website:</b> ". $data['website'] ."</td>
</tr>
</table>
<br/>";
echo "</br>". $pagination_output;
此外,我不会在这里进行太多的数据库设计,但初看起来你的设计是次优的。例如,您为数据库中的所有行保留了6天和6个事件,但有些只有1个,而其他行则有6个。最好在多个表中拆分,例如:
如果每天只有一个内容,您可以合并日期和内容。此外,如果有多个活动的组织者,您可以考虑为这些组织者添加一个额外的表格(表格:组织者,其中包含联系信息)。这样可以将数据库大小降至最低,同时减少错误。
最后一个旁注,请检查您的HTML标记。您的标记将强制所有浏览器进入Quirks-Mode,这与PC的不一致。