2012-01-13 3 views
-1

У меня есть страница php, отображающая данные из базы данных mysql на основе списка выпадающего списка, также из базы данных mysql. Это, очевидно, использует Java Script.Отображать данные, полученные из удаленного php (mysql) в таблице html

Интеграция php и mysql работает отлично, но мне нужно изменить способ отображения данных.

В настоящее время возвращенные данные mysql отображаются в одной ячейке таблицы, я хочу, чтобы каждое возвращаемое поле mysql отображалось в его собственной ячейке таблицы.

Я добавил фотографию вывода, я хочу, чтобы она отображалась в каждой ячейке таблицы, а не в одном.

Я прикрепил код как от моего php-файла, так и от php-файла, запрашивающего базу данных.

Любая помощь была бы принята с благодарностью!

index.php

<html> 
<head> 
<script type="text/javascript"> 
function showUser(str) 
{ 
    if (str=="") 
    { 
     document.getElementById("txtHint").innerHTML=""; 
     return; 
    } 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","getdata.php?q="+str,true); 
    xmlhttp.send(); 
} 
</script> 
</head> 
<body> 
<?php 

$con = mysql_connect('localhost', 'unilever_root', 'Unilever2011'); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("unilever_unilever", $con);  

$skusql="SELECT packcode from skudata"; 
$resultsku=mysql_query($skusql); 

$optionssku=""; 

while ($row=mysql_fetch_array($resultsku)) 
{ 
    $sku=$row["packcode"]; 
    $optionssku.="<OPTION VALUE=\"$sku\">".$sku; 
} 

?> 

<table border=1> 
<tr> 
    <td>SKU</td> 
    <td>Description</td> 
    <td>SU</td> 
    <td>Points</td> 
    <td>Category</td> 
    <td>Grouping</td> 
</tr> 
<tr> 
    <td> 
     <select name="users" onchange="showUser(this.value)"> 
      <OPTION VALUE=0> 
      <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 
</table> 
</body> 
</html> 

GetData страница

<?php 
$q=$_GET["q"]; 

$con = mysql_connect('localhost', 'dbuser', 'password'); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("unilever_unilever", $con); 

$sql="SELECT * FROM skudata WHERE packcode = '".$q."'"; 

$result = mysql_query($sql); 

while($row = mysql_fetch_array($result)) 
{  
    echo "<td>" . $row['Description'] . "</td>"; 
    echo "<td>" . $row['SellingUnits'] . "</td>"; 
    echo "<td>" . $row['EOTTPoints'] . "</td>"; 
    echo "<td>" . $row['Category'] . "</td>"; 
    echo "<td>" . $row['Grouping'] . "</td>"; 
} 


mysql_close($con); 
?> 

enter image description here

+1

привет, мне пришлось отложить 'java' на' javascript' – ianace

+0

Добро пожаловать в Stack Overflow! SO не предназначен для того, чтобы быть сайтом «напишите мой код для меня» - если это то, что вы ищете, вы должны, вероятно, нанять специалиста, чтобы сделать это за вас. Если у вас есть * конкретный * технический вопрос, возникающий из-за вашей работы над проблемой, не стесняйтесь редактировать вопрос соответствующим образом. –

+0

Привет @Pekka, я на 100% с вами в том, что это не письмо для меня на сайте. Я написал этот код в вопросе на основе примеров, которые я нашел в сети.он работает хорошо, у меня есть только одна проблема, с которой я не могу работать, следовательно, мой вопрос. Я провел исследование! – Smudger

ответ

1

Проблема здесь состоит в том, что вы использовали две идеи, которые не совсем работают вместе , Эта строка: document.getElementById("txtHint").innerHTML=xmlhttp.responseText; устанавливает содержимое тега с идентификатором «txtHint» на то, что возвращает ваш PHP-скрипт. Это означает, что когда РНР возвращает, например: <td>blah</td><td>blah</td><td>blah</td>
тогда ваша страница заканчивается:

<div id="txtHint"> 
    <td>blah</td> 
    <td>blah</td> 
    <td>blah</td> 
</div> 

Вы видите, что здесь происходит? Вы не добавляете больше ячеек в существующую строку, вы создаете другую таблицу в ячейке, которую у вас уже есть (и плохая в ней, без <table> или <tr> тегов ...).

Чтобы обойти эту проблему, измените элемент с идентификатором «txtHint» в <tr> тега для строки вы редактируете, и обновить PHP, чтобы вернуть первую ячейку этой строки, а также, например:

HTML :

<table border=1> 
    <tr> 
     <td>SKU</td> 
     <td>Description</td> 
     <td>SU</td> 
     <td>Points</td> 
     <td>Category</td> 
     <td>Grouping</td> 
    </tr> 
    <tr id="txtHint"> 
      <td> 
       <select name="users" onchange="showUser(this.value)"> 
       <OPTION VALUE=0> 
       <?=$optionssku?> 
       </SELECT> 
      </td> 
     <td colspan="5">SKU Details will be seen here</td> 
    </tr> 

PHP:

while($row = mysql_fetch_array($result)) 
{ 
    echo "<td><select name='users' onchange='showUser(this.value)'><OPTION VALUE=0>"; 
    echo $optionssku; //Not sure where this variable comes from, so I'll leave getting it from wherever necessary to you 
    echo "</SELECT></td>"; 
    echo "<td>" . $row['Description'] . "</td>"; 
    echo "<td>" . $row['SellingUnits'] . "</td>"; 
    echo "<td>" . $row['EOTTPoints'] . "</td>"; 
    echo "<td>" . $row['Category'] . "</td>"; 
    echo "<td>" . $row['Grouping'] . "</td>"; 
} 

(код не проверял, но это будет что-то вроде этого).

Есть, конечно, другие способы обойти эту проблему, почти наверняка лучшие, но это первая идея, которая пришла ко мне.

+0

Спасибо, миллион! – Smudger