par
dunbar » 16 sept. 2007, 09:53
Bonjour,
Je crée un script qui me permet de faire des requêtes sql à partir d'un formulaire.(pour un exercices par pour réinventer la roue

)
Mon code :
<?php
/*Va chercher les valeurs pour l'hôte, l'user, et le pass pour la connexion MySQL*/
include "mysql.php";
/*Affiche le titre de la page*/
echo "<html>
<head><Title>Envoie d'une requête SQL</Title></head>
<body>";
if(ini_get("magic_quotes_gpc") == "1")
{
$_POST['query'] = stripslashes($_POST['query']);
}
if(!empty($_POST['form']))
{
$cxn = mysqli_connect($host, $user, $password,
$_POST['database']);
$result = mysqli_query($cxn,$_POST['query']);
echo "Base de données sélectionnée :
<b>{$_POST['database']}</br><br>
Requête : <b>{$_POST['query']}</b>
<h3>Résultats : </h3><hr>";
if($result == false)
{
echo "<h4>Erreur SQL : ".mysqli_error($cxn)."</h4>";
}
elseif(mysqli_num_rows($result) == 0)
{
echo "<h4>Requête exécutée.
Aucun résultat envoyé.</h4>";
}
else
{
/*Affiche les résulstats*/
echo "<table border = '1'><thead><tr>";
$finfo = mysqli_fetch_fields($result);
foreach($finfo as $field)
{
echo "<th>".$field->name."</th>";
}
echo "</tr></thead>
<tbody>";
for ($i=0;$i < mysqli_num_rows($result);$i++)
{
echo "<tr>";
$row = mysqli_fetch_row($result);
foreach($row as $value)
{
echo "<td>".$value."</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
}
/*Affichage du formulaire avec les boutons après les résultats*/
$query = str_replace("'","%&%",$_POST['query']);
echo "<hr><br>
<form action='{$_SERVER['PHP_SELF']}' method='POST'>
<input type='hidden' name='query' value='$query'>
<input type='hidden' name='database' value={$_POST['database']}>
<input type='submit' name='queryButton' value='Nouvelle requête'>
<input type='submit' name='queryButton' value='Modifier la requête'>
</form>";
exit();
}
/*Affichage du formulaire de saisie*/
if ($_POST['queryButton'] != "Modifier la requête")
{
$query = " ";
}
else
{
$query = str_replace("%&%","'",$_POST['query']);
}
?>
<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="POST">
<fieldset>
<legend>Formulaire de saisie.</legend>
<table>
<tbody>
<tr>
<td style="text-align: right; font-weight: bold">Saisir le nom de la
base de données : </td>
<td>
<input type="text" name="database" value=<?php echo $_POST['database']; ?> ></td>
</tr>
<tr>
<td style="text-align: right; font-weight: bold" valign="top">Saisie
de la requête SQL : </td>
<td><textarea name="query" cols="60" rows="10"><?php echo $query ;?></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-align: center">
<input type="submit" value="Valider la requête" /></td>
</tr>
</tbody>
</table>
</fieldset> <input type="hidden" name="form" value="yes" />
</form>
</body>
</html>
Mon soucis est que chaque fois que je j'introduit une requête j'ai un message d'erreur.
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result
La ligne en question est ici :
elseif(mysqli_num_rows($result) == 0)
{
echo "<h4>Requête exécutée.
Aucun résultat envoyé.</h4>";
Par contre malgré le message d'erreur les requêtes s'éffectue
D'avance merci
Bonjour,
Je crée un script qui me permet de faire des requêtes sql à partir d'un formulaire.(pour un exercices par pour réinventer la roue :wink: )
Mon code :
[php]
<?php
/*Va chercher les valeurs pour l'hôte, l'user, et le pass pour la connexion MySQL*/
include "mysql.php";
/*Affiche le titre de la page*/
echo "<html>
<head><Title>Envoie d'une requête SQL</Title></head>
<body>";
if(ini_get("magic_quotes_gpc") == "1")
{
$_POST['query'] = stripslashes($_POST['query']);
}
if(!empty($_POST['form']))
{
$cxn = mysqli_connect($host, $user, $password,
$_POST['database']);
$result = mysqli_query($cxn,$_POST['query']);
echo "Base de données sélectionnée :
<b>{$_POST['database']}</br><br>
Requête : <b>{$_POST['query']}</b>
<h3>Résultats : </h3><hr>";
if($result == false)
{
echo "<h4>Erreur SQL : ".mysqli_error($cxn)."</h4>";
}
elseif(mysqli_num_rows($result) == 0)
{
echo "<h4>Requête exécutée.
Aucun résultat envoyé.</h4>";
}
else
{
/*Affiche les résulstats*/
echo "<table border = '1'><thead><tr>";
$finfo = mysqli_fetch_fields($result);
foreach($finfo as $field)
{
echo "<th>".$field->name."</th>";
}
echo "</tr></thead>
<tbody>";
for ($i=0;$i < mysqli_num_rows($result);$i++)
{
echo "<tr>";
$row = mysqli_fetch_row($result);
foreach($row as $value)
{
echo "<td>".$value."</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
}
/*Affichage du formulaire avec les boutons après les résultats*/
$query = str_replace("'","%&%",$_POST['query']);
echo "<hr><br>
<form action='{$_SERVER['PHP_SELF']}' method='POST'>
<input type='hidden' name='query' value='$query'>
<input type='hidden' name='database' value={$_POST['database']}>
<input type='submit' name='queryButton' value='Nouvelle requête'>
<input type='submit' name='queryButton' value='Modifier la requête'>
</form>";
exit();
}
/*Affichage du formulaire de saisie*/
if ($_POST['queryButton'] != "Modifier la requête")
{
$query = " ";
}
else
{
$query = str_replace("%&%","'",$_POST['query']);
}
?>
<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="POST">
<fieldset>
<legend>Formulaire de saisie.</legend>
<table>
<tbody>
<tr>
<td style="text-align: right; font-weight: bold">Saisir le nom de la
base de données : </td>
<td>
<input type="text" name="database" value=<?php echo $_POST['database']; ?> ></td>
</tr>
<tr>
<td style="text-align: right; font-weight: bold" valign="top">Saisie
de la requête SQL : </td>
<td><textarea name="query" cols="60" rows="10"><?php echo $query ;?></textarea></td>
</tr>
<tr>
<td colspan="2" style="text-align: center">
<input type="submit" value="Valider la requête" /></td>
</tr>
</tbody>
</table>
</fieldset> <input type="hidden" name="form" value="yes" />
</form>
</body>
</html>
[/php]
Mon soucis est que chaque fois que je j'introduit une requête j'ai un message d'erreur.
[quote]
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result[/quote]
La ligne en question est ici :
[php]
elseif(mysqli_num_rows($result) == 0)
{
echo "<h4>Requête exécutée.
Aucun résultat envoyé.</h4>";[/php]
Par contre malgré le message d'erreur les requêtes s'éffectue :wink:
D'avance merci