从表中解析数据并使结果成为PHP变量

时间:2014-09-05 18:27:10

标签: php mysql html-table domdocument

请协助!我正在尝试构建一个可以执行多个功能的PHP脚本。我有2个mysql表(我不能发布图片,所以这里是描述):

PrimaryTable

ID    first    Last    phone              
1    Dan      Powers   5559876578         
2    Pete    Williams  5559023245

SecondaryTable

ID    user_id    First    Last      phone

1       2        Pete    Williams   5559023245

我需要一个PHP脚本,允许您从第一个(PrimaryTable)搜索手机#,从该表中获取所有数据,并在html表中回显它。我有这部分工作,请参阅下面的代码:

<?php

 require 'Admin_connect.php';

 $sql = 'SELECT * FROM PrimaryTable';


 mysql_select_db('PrimaryTableDatabase');
 $retval = mysql_query( $sql, $conn );

 if(! $retval )
 {
   die('Could not get data: ' . mysql_error());
 }
 if (!empty($_REQUEST['searchphone'])) {

   $searchphone = mysql_real_escape_string($_REQUEST['searchphone']);    
   $insert = mysql_real_escape_string($_REQUEST['insert']); 

   $sql = "SELECT * FROM PrimaryTable WHERE phone LIKE '%".$searchphone."%'"; 
   $r_query = mysql_query($sql); 

   while ($row = mysql_fetch_array($r_query)){  

     $searchresults = '<tr>' . '<td headers="first_name">' .$row['first_name'] . '</td>' .
     '<td headers="last_name">' .$row['last_name'] . '</td>' .   
     '<td id="phoneresult">' .$row['phone'] . '</td>' .  
     '<td headers="Birthday">' .$row['Birthday'] . '</td>' .   
     '<td headers="Gender">' .$row['Gender']. '</td>' .
     '<td id="zip">' .$row['zip'] . '</td>' .
     '<td>' . '<input type="submit" value="Scan" name="Scan" />' . '</form>' . '</td>' . '</tr>';   
    }  

  }
?>
---------HTML----------
<form action="" method="post">  
Search: <input type="text" name="searchphone" /><br />  
<input type="submit" value="Submit" />  
</form>  

<table width="200" border="1" cellspacing="1" cellpadding="1">
 <tr>
<td>First Name:</td>
<td>Last Name:</td>
<td>Phone:</td>
<td>Birthday:</td>
<td>Gender:</td>
<td>Zip:</td>
 </tr>
<?php echo $searchresults ?>
</table>

下一部分让我难过。我需要在表格中显示的每一行旁边都有一个“提交”按钮(如上面的php中所示)。当用户单击该提交按钮时,它会获取HTML表中显示的电话号码和用户名,从Mysql primaryTable(SELECT * FROM PrimaryTable WHERE phone=(variable) && Last = (variable))中选择所有信息,并将所有信息从PrimaryTable插入SecondaryTable 。

我想如果我能找到一种方法将表<td>内容转换为变量,我可以使用它们来SELECT和INSERT。但我不知道如何解析HTML表格,我可以将手机#和名称转换为自己的变量。我已经查看了DomDocument,但似乎无法让它与我需要的东西一起工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为如果您使用表中的ID会更容易(我假设ID列是主键。)如果您将表包装在表单(<form method="post"><table>...</table></form>)中,那么您可以添加一个每行<button>元素如下:

'<td><button name="id" value="' . $row['id'] . '">Submit</button></td>'

当您点击按钮时,它将提交带有相应ID的表单。然后,您可以从$_POST['id']获取ID,确保其已正确转义,并让您的数据库为您获取姓名和电话号码。

INSERT INTO SecondaryTable 
SELECT id AS user_id, first, last, phone 
FROM PrimaryTable
WHERE id = $id