2011-10-05 2 views
0

Je veux créer une sorte de page de comparaison. J'ai actuellement deux tables avec l'information, mais je veux qu'elle soit sur la table ou joignez les deux ensemble. La première rangée montrerait le nom de la marque, la seconde montrerait le coût, etc ... Je saisis les valeurs des cases à cocher sélectionnées et en fonction de ce qu'elles ont sélectionné, je les compare.Comment puis-je joindre ces deux tables html ensemble?

$testName = $_POST['testCompare']; 
$rpl = str_replace("_", " ", $testName); 
$firstOne = "$rpl[0]"; 
$secondOne = "$rpl[1]"; 
echo "$firstOne"; 
echo "<br/>"; 
echo "$secondOne"; 

$query = "SELECT * FROM test_table WHERE test_name = '$firstOne'"; 
$query2 = "SELECT * FROM test_table WHERE test_name = '$secondOne'"; 
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error()); 
$result2 = mysql_query($query2) or die ("Error in query: $query2. " . mysql_error()); 

if (mysql_num_rows($result) > 0 && mysql_num_rows($result2) > 0) { 

//if (mysql_num_rows($result) > 0) { 

    while($row = mysql_fetch_row($result)) {    
     if ($firstOne == $row[1]) { 
     { 
      echo "<table border=1>";    
      echo "<tr>"; 
      echo "<td>" . $row[0] . "</td>"; 
      echo "<tr>"; 
      echo "<td>" . $row[1] . "</td>"; 
      echo "</tr>"; 
      echo "<tr>"; 
      echo "<td>" . $row[2] . "</td>"; 
      echo "</tr>"; 
      echo "<tr>"; 
      echo "<td>" . $row[3] . "</td>"; 
      echo "</tr>"; 
      echo "<tr>"; 
      echo "<td>" . $row[4] . "</td>"; 
      echo "</tr>"; 
      } 
     } 
     }echo "</table>"; 

    while($row2 = mysql_fetch_row($result2)) {   
     if ($secondOne == $row2[1]) { 
     { echo "<table border=1>";   
      echo "<tr>"; 
      echo "<td>" . $row2[0] . "</td>"; 
      echo "</tr>"; 
      echo "<tr>"; 
      echo "<td>" . $row2[1] . "</td>"; 
      echo "</tr>"; 
      echo "<tr>"; 
      echo "<td>" . $row2[2] . "</td>"; 
      echo "</tr>"; 
      echo "<tr>"; 
      echo "<td>" . $row2[3] . "</td>"; 
      echo "</tr>"; 
      echo "<td>" . $row2[4] . "</td>"; 
      echo "</tr>"; 
      } 
     } 
     } 
     echo "</table>"; 
    } 
else { 
     echo "No Results"; 
    }[/CODE] 

Merci

+0

Pourriez-vous éventuellement afficher le schéma de votre table de base de données? En outre, avant que quelqu'un d'autre ne vous en parle, vous avez une vulnérabilité d'injection SQL car vous n'échappez pas à l'entrée de l'utilisateur, c'est-à-dire en passant la variable '$ _POST' sans la désinfecter. –

+0

Sans rapport avec votre question, mais votre code est incroyablement peu sûr. Non seulement vous ne nettoyez pas vos entrées, mais vous n'utilisez pas d'espace réservé dans vos requêtes. – CanSpice

Répondre

2
  1. Retirez le </table> après la première boucle.
  2. Supprimer <table border=1> de les deux boucles.
  3. Ajouter <table border=1 avant la première boucle.

Actuellement, vous définissez un nouveau <table border=1> chaque fois que vous entrez dans la boucle. Cela se traduira par ce code HTML:

<table ..> 
<tr>... 
<table ..> 
.. 
<table> 
.. 
Et cetera 
</table> 
<table ..> 
Et cetera 
</table> 
+0

Si vous voulez avoir les deux tables côte à côte (horizontalement), déplacez $ row2 = mysql_fetch_row ($ result2) 'de la deuxième boucle à la première boucle, et ajoutez un' 'pour chaque élément, afin que le HTML ressemble à ''. ** Les deux résultats doivent avoir le même nombre d'éléments **, si vous voulez utiliser cette méthode. –