erreur de script mysql

Petit nouveau ! | 2 Messages

09 avr. 2013, 15:42

salut,
Je suis novice et j'aimerais envoyer une requete SQL et en récupéré le résultat via ce code (ex: CREATE DATABASE AniCat )
mais je reçois ce message;


( ! ) Notice: Undefined index: database in C:\wamp\www\PHP\mysql_envoi2.php on line 22
Call Stack
# Time Memory Function Location
1 0.0009 697624 {main}( ) ..\mysql_envoi2.php:0

( ! ) Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: [2002] Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée. (trying to connect via tcp://localhost:3306) in C:\wamp\www\PHP\mysql_envoi2.php on line 22
Call Stack
# Time Memory Function Location
1 0.0009 697624 {main}( ) ..\mysql_envoi2.php:0
2 0.0013 698416 mysqli_connect ( ) ..\mysql_envoi2.php:22

( ! ) Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2002): Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée. in C:\wamp\www\PHP\mysql_envoi2.php on line 22
Call Stack
# Time Memory Function Location
1 0.0009 697624 {main}( ) ..\mysql_envoi2.php:0
2 0.0013 698416 mysqli_connect ( ) ..\mysql_envoi2.php:22

( ! ) Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\PHP\mysql_envoi2.php on line 22
Call Stack
# Time Memory Function Location
1 0.0009 697624 {main}( ) ..\mysql_envoi2.php:0





Adresse :
Je sais que je pourrais utilisé easyPHP ou autre pour Construction de base de donnée mais pas trop intéresser.
j'utilise : WampServer Version 2.2 sous Vista 64Bit




<?php
/*Programe   :   mysql_envoi.php
 *Description   :   Envoi d'une requetes SQL au serveur SDL
 *                  et affichage des résultats.
 *
 */
 echo "<html>
         <head><title>Envoi de requete SQL </title></head>
		 <body>
		 ";
if(ini_get("magic_quotes_gpc") == "1")
 {
   $_POST['query'] =  stripslashes($_POST['query']);
 }
 $host="localhost";
 $user="root";
 $password="";
 /*Selection d'exécution de la requete et de laffichage des résultats*/
 if(!empty($_POST['form']))
   {
        $cxn = mysqli_connect($host,$user,$password,
		$_POST['database']);
        $result =  mysqli_query($cxn,$_POST['query']);
		echo "Base de donnée séléctionnée : <b>{$_POST['database']}</b><br>
		Requete : <b>{$_POST['query']}</b>
		<h3>Résultat</h3><hr>"; 
		if($result == FALSE )
	       {
	             echo "<h4>ERREUR SQL : " .mysqli_error($cxn) ."</h4>";
	       }
	   elseif(@mysqli_num_rows($result) == 0)
	       {
	          echo "<h4>Requete éxécutée.
	         Aucun résultat envoyé.</h4>";
	       }
	   else
	       {
/*Affiche les résultat */
	           echo "<table border ='1'><thead><tr>";
	           $finfo = mysqli_fetch_fields($result);
	   foreach($info 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 "</body></table>";
	}
	/*Affiche le formulaire avec des boutons après le résultat */
	$query = str_replace("'","%&%",$_POST['query']);
	echo "<hr><br>
	<form action='{$_SERVER['PHP_SELF']}' method='POST'>
	<input type='hidden' name='query' value='$query'>
	<input  type='hiden' name ='database'
	   value={$_POST['database']}>
	   <input type = 'submit' name='queryButton'
	   value='nouvelle requete'>
	   <input type='submit' name='queryButton'
	   value ='Modiffier la requete'>
	</form>";
  exit();
  }
  /*Affiche le formulaire de saisie de requète */
  if (@$_POST['queryButton'] != "modifier la requete")
  {
     $query = " ";
  }
  else
  {
      $query = str_replace("%&%","'",$_POST['query']);
  }
  ?>
  <form action ="<?php echo $_SERVER['PHP_SELF'] ?>"
           method="POST">
  <table>
    <tr><td style='text-align:right ; font-weight:bold'>
	    Saisir le nom de la base de donnée</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">Saisir la requete 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="Validé la requète"></td>
	</tr>
	</table>
	<input type="hidden" name="form" value="yes">
	</form>
	</body></html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 avr. 2013, 22:37

salut,


Dans un tel cas il est nécessaire de déboguer le code. http://phpdebutant.org/article52.php

Je ne sais pas pourquoi mais il semble que le navigateur envoie dataBase et pas database :)

tu aura le même problème ligne 24.

Il faut toujours vérifier la présence d'un champs dans le tableau POST, même si l'un est là ce n'est pas forcément le cas pour les autres :)

ensuite tu aura un problème ligne 51 vu que tu utilise $info au lieu de $finfo

autre chose utiliser l'arobase c'est une très très mauvaise idée, de mon avis cet opérateur ne devrais pas exister, c'est pas beaucoup plus complexe de tester correctement :)

Tu peux facilement utiliser du html correctement formé en utiliser des ' pour délimiter les chaines de caractère et la concaténation, qui permet de bien voir où sont les variables et de séparer la chaîne de la variable.

code fonctionnel, avec quelque correction de syntaxe et l’orthographe :mrgreen:
<?php
/*Programe   :   mysql_envoi.php
 *Description   :   Envoi d'une requetes SQL au serveur SDL
 *                  et affichage des résultats.
 *
 */
echo "<html>
         <head><title>Envoi de requete SQL </title></head>
                 <body>
                 ";
if (ini_get("magic_quotes_gpc") == "1") {
    $_POST['query'] = stripslashes($_POST['query']);
}
$host = "localhost";
$user = "root";
$password = "";
/*Selection d'exécution de la requete et de laffichage des résultats*/
if (!empty($_POST['form']) && !empty($_POST['dataBase'])) {
    $cxn = mysqli_connect($host, $user, $password,
        $_POST['dataBase']);
    $result = mysqli_query($cxn, $_POST['query']);
    echo "Base de donnée séléctionnée : <b>{$_POST['dataBase']}</b><br>
                Requete : <b>{$_POST['query']}</b>
                <h3>Résultat</h3><hr>";
    if ($result == FALSE) {
        echo "<h4>ERREUR SQL : " . mysqli_error($cxn) . "</h4>";
    } elseif (mysqli_num_rows($result) == 0) {
        echo "<h4>Requete éxécutée.
                 Aucun résultat envoyé.</h4>";
    } else {
        /*Affiche les résultat */
        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 "</body></table>";
    }
    /*Affiche le formulaire avec des boutons après le résultat */
    $query = str_replace("'", "%&%", $_POST['query']);
    echo '<hr><br>
        <form action="' . $_SERVER['PHP_SELF'] . '" method="POST">
        <input type="hidden" name="query" value="' . $query . '">
        <input  type="hiden" name ="database"
           value="' . $_POST['dataBase'] . '">
           <input type = "submit" name="queryButton"
           value="nouvelle requete">
           <input type="submit" name="queryButton"
           value ="Modiffier la requete">
        </form>';
    exit();
}
/*Affiche le formulaire de saisie de requète */
if (empty($_POST['queryButton']) || $_POST['queryButton'] != "modifier la requete") {
    $query = " ";
} else {
    $query = str_replace("%&%", "'", $_POST['query']);
}
?>
<form method="post">
    <table>
        <tr>
            <td style="text-align:right ; font-weight:bold">
                Saisir le nom de la base de donnée
            </td>
            <td><input type="text" name="dataBase"
                       value=<?php
                    if (!empty($_POST['dataBase'])) {
                        echo $_POST['dataBase'];
                    }
                    ?>></td>
        </tr>
        <tr>
            <td style="text-align: right; font-weight: bold "
                valign="top">Saisir la requete 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>
    </table>
    <input type="hidden" name="form" value="yes">
</form>
</body></html>
@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

09 avr. 2013, 22:57

Je vous remercie de votre réponse moongli , je vais revoir ma procédure et suivre vos conseil .
Bonne soirée à vous ;)