par
moogli » 26 sept. 2012, 14:06
salut,
ceci
if($result = $mysqliconnec->query($query))
{
est inutile, il y a même doublon avec celui d'en dessous.
donc simplement
$result = $mysqliconnec->query($query)
La méthode
$result->free();
permet de "libérer" le jeux de résultat, donc après l'utilisation de cette méthode tu n'auras plus la possibilité d'utiliser les données.
Cette ligne doit être après l'utilisation des données, donc du while.
<?php
$nbrfield = $result->field_count;
for($i=0; $i<$nbrfield; $i++ ){
echo $nbrfield;
$champs = $result->fetch_field_direct($i);
$render .= '<tr><td>';
$render .= $champs->name.'</td><td>';
$row = $result->fetch_row();
$render .= $row[$i];
$render .='</td></tr>';
}
la tu compte le nombre de champs dans le jeux de résultats (donc de colonne dans la table dbBuilding avec ta requête).
ensuite tu affiche une nouvelle ligne de tableau qui va contenir le nom du champ indiqué par l'index courant, et la valeur d'un champ correspondant à l'index courant.
et ceci autant de fois qu'il y a de champ dans ta table dbBuilding.
en clair tu ne va pas afficher toutes les infos à chaque fois mais une seule, pire tu vas tenter autant de "tour" que de champs dans la table et si ton jeux de résultat à moins de lignes que de champs $row va vite être égale à false et la ligne suivant ($render .= $row[$i]

va donc fournir une erreur (false n'est pas un tableau).
si tu ne veux pas afficher les noms de colonnes à la main pourquoi pas mais les données c'est après.
au final ton code devrait ressembler à ceci (si j'ai bien pigé ce que tu veux)
<?php
if (!empty($_GET['target']))
$nam = mysqli_real_escape_string($_GET['target']);
else
$nam = "";
?>
<h3>
<?php echo $nam;?>
</h3>
<?php
//connexion db
$mysqliconnec = mysqli_connect("xxx", "xxx", "xxx", "xxx");
if (mysqli_connect_errno($mysqliconnec)) {
echo 'erreur de connexion:'.mysqli_connect_error().'<br>';
}
else {
//interrogation db et affichage des immeubles
$query = 'SELECT * FROM dbBuilding WHERE Name = \''.$nam.'\'';
// Execute Query
$result = $mysqliconnec->query($query);
//controle erreur
if($result === false){
echo 'Erreur Requête : '. $mysqliconnec->error;
}
else {
$render .= '<table>';
$nbrfield = $result->field_count;
$render .= '<tr>';
for($i=0; $i<$nbrfield; $i++ ){
$champs = $result->fetch_field_direct($i);
$render .= '<td>'.$champs->name.'</td>';
}
$render .= '</tr>';
while ($row = $result->fetch_row()){
echo '<tr>';
echo '<td>'.$row["batID"].'</td>';
echo '<td>'.$row["Name"].'</td>';
echo '<td>'.$row["Address "].'</td>';
echo '<td>'.$row["Chinese"].'</td>';
echo '<td>'.$row["dateStart "].'</td>';
echo '<td>'.$row["dateEnd"].'</td>';
echo '<td>'.$row["Notes"].'</td>';
echo '<td>'.$row["TYP01 "].'</td>';
echo '</tr>';
}
echo '</table>';
$result->free();
$result->close();
$mysqliconnec->close();
}
}
?>
@+