Essayer de construire une base de données simple à partir d'une base de données mySQL.php clone ne fonctionnait pas comme prévu
La classe de base de données que j'utilise pour se connecter renvoie l'ensemble de résultats en tant qu'objet. Je veux cloner cet objet afin que je puisse utiliser la méthode getNext() pour obtenir les en-têtes de la table sans déplacer le pointeur vers l'avant pour supprimer la première ligne renvoyée. Je m'attends à ce que ce soit simple comme clonage du jeu de résultats de sorte que j'ai maintenant 2 objets qui sont identiques. puis renvoyer les en-têtes dans un objet tout en laissant l'autre objet intact.
Cependant, cela s'est avéré plus difficile que je pensais. Peut-être que je n'utilise pas correctement le clone, donc si vous pouvez m'aider, dites-moi ce que je fais de mal.
est Ci-dessous le code:
function gethtmlTable($database, $table)
{
$db = new DB_Connection();
$sql = "SELECT * FROM $table;";
$result = $db->query($sql,$database);
$tabelheader = clone $result;
$tablerows = clone $result;
if (!$result) die($db->getError());
if ($result->getNumRows() == 0) die('No Results');
$count = $tabelheader->getNumRows();
$html = "<table><th>Select</th>";
// echo "<pre>".var_dump($result)."</pre>";
foreach($tabelheader->getNext() as $k => $v){
$html .="<th>".$k."</th>";
}
while($count > 0){
$row = $tablerows->getNext();
$html .= "<tr>";
$html .= "<td><input type='checkbox' id='checkbox".$count."' name=checkbox".$count." class ='styled' value='checked'></td>";
foreach($row as $k => $v){
$html .="<td>".$v."</td>";
}
//foreach($result->getNext() as $k => $v){
// $html .="<td>".$v."</td>";
//}
$html .="</tr>";
$count--;
}
$html .="</table>";
echo $html;
}
Quand je lance cette fonction je reviens d'une table avec les en-têtes et une boîte de sélection, mais la première ligne est toujours manquant. :(
Cela a fonctionné, je vous remercie de la suggestion . Je n'ai même pas pensé à utiliser un do - while au lieu de le compliquer avec le clone :) – TheSnooker