php
  • mysql
  • 2011-06-03 60 views 1 likes 
    1

    我有6个不同的字段的表单来输入日期(day1day6)和6个不同的字段中输入该特定日期(dtls1dtls6)的细节。这些所有数据都将转到数据库。还有一个页面显示所有这些数据。选择是根据日期。代码如下:检索从同一个表相同的数据两次

    $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)". 
           ")"; 
    

    这可能

    +2

    请格式化您的文章。 – 2011-06-03 08:59:19

    +0

    你可以列出你的表结构 – ejrowley 2011-06-03 09:50:10

    +2

    其完全无法理解你在找什么 – dynamic 2011-06-03 10:00:18

    回答

    0

    如果我读这正确想要programdtls2到superseed 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.更好的在多个表的东西分裂,如:

    1. 数据(事件名称,主办单位,联系方式等)
    2. 日(日活动)
    3. 内容(活动内容)

    您可以组合的日期和内容,如果有,每天只有一个内容。此外,如果有多个活动的组织者,您可以考虑为这些活动添加一张表格(表格:组织者,其中包含联系信息)。这样,您可以将数据库大小保持在最小,并减少错误。

    最后一个脚注,请检查您的HTML标记。您的标记将强制所有浏览器进入怪异模式,这与PC的不一致。

    +0

    不...那不是那样...如果day1在那里它应该显示programdtls1 ...和day2在那里,显示programdtls2喜欢.. – Don 2011-06-03 13:02:57

    +0

    你的意思是你想同时显示? – KilZone 2011-06-03 13:59:31

    +0

    如果day1选择,则显示programdtls1。 day2选择programdtls2。 – Don 2011-06-03 16:26:17

    相关问题