[php]script requête SQL

Fermé
aloneInTheDark - 21 oct. 2005 à 11:28
 cricri - 5 avril 2007 à 04:57
Bonjour à tous,

Je suis un gros débutant en php, et j'essaie d'apprendre avec le bouquin php pour les nuls, mais j'ai déjà un petit problème, j'ai recopié ce script et mon éditeur m'indique qu'il y a des erreurs.

J'ai eu beau vérifier plusieurs fois sur le livre en question, mais j'ai tout fait à l'identique.
Voici le script en question :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
  <title></title>
  </head>
  <body>
  <?php
  $host="localhost";
  $user="mysqlaccountname";
  $password="mysqlpassword";
  
  /* section d'éxecution de la requête */
  if(@$_get['form'] == "yes")
  {
    mysql_connect($host,$user,$password);
    mysql_select_db($_post['database']);
    $qery = stripSlashes($_post['query']);
    echo "base de données sélectionnées : <b>{$_post['database']}</b><br>
          Requête : <b>$query</b><h3>Résultats</h3><hr>";
  if($result == 0)
    echo "<b>Erreur ".mysql_error().": ".mysql_error().
          "</b>";
  elseif  (@mysql_num_rows($result) == 0)
    echo ("<b>Requete executee0. Aucun resultat envoyé.
          </b><br>");
  else
  {
    echo "<table border='1'>
      <thead>
        <tr>";
        for($i = 0;$i <mysql_num_fields($result);$i++)
        {
          echo "<th>".mysql_field_name($result.$i).
                "</th>";
                }
    echo " </tr>
          </thead>
        <tbody>";
          for ($i = 0; $i < mysql_num_rows($result); $i++)
          {
            echo "<tr>";
              $rows =mysql_fetch_row($result);
              for ($j = 0; $j<mysql_num_fields($result); $j++)
              {
                echo("<td>" . $rows[$j] . "</td>");
              }
            echo "</tr>";
          }
      echo "</tbody>
          </table>";
    }  // end else
    echo "
      <hr><br>
        <form action=\"{$_server['php_self']}\" method=\"post\">
        <input type='hidden' name='querty' value='$querty'>
        <input type='hidden' name='database' value={$_post['database']}>
        <input type='submit' name=\"queryButton\" value=\"Editer la requête\">
        </form>";
      unset($form);
      exit();
    } // endif form=yes
    
    /* Section that request user input of query */
    @$query=stripslashes($_POST['query']);
    if (@$_post['queryButton'] != "Editer la requête")
    {
      $query = " ";
    }
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF'] ?>?form=yes" method="POST">
      <table>
        <tr>
          <td align="right"><b>Indiquez le nom<br>de la base de données</b></td>
          <td><input type="text" name="database" value=<?php echo @$_POST['database'] ?></td>
        </tr>
        <tr>
          <td align="right" valign="top"><b>Saisissez la requête SQL</b></td>
          <td><textarea name="query" cols="60" rows="10"><?php echo $query ?></textarea></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" value="Envoyer la requête"></td>
        </tr>
      </table>
    </form>
  </body>
</html>

Tout est affiché sur la page, sauf que dans le champ apparaît une balise </td>.
Et lorsque j'essai de tester ce script, en tapant SHOW DATABASES, une deuxième balise </td> apparaît.

Quelqu'un pourrait-il me dire où ce situe l'erreur dans ce code ?

Merci d'avance.
A voir également:

4 réponses

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
21 oct. 2005 à 12:17
JE ne sais pas mais tu as des variables
$query
$qery
$querty

T'as du te mélanger quelque part.
0
aloneInTheDark
21 oct. 2005 à 17:21
Oui, en effet wiwimagique il y avait quelques erreurs (énormes), j'ai donc vérifié caractère par caractère :-)

Mais j'ai de nouveau un souci, j'utilise EasyPHP1-8 (config par défaut), et je ne sais pas quoi mettre comme host, user et password dans ce script j'ai essayé en ne mettant rien mais cela m'affiche un message d'erreur :


Warning: mysql_connect(): Unknown MySQL Server Host 'hostname' (11001) in d:\siteinternet_i\php\essai1.php on line 16

Warning: mysql_select_db(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in d:\siteinternet_i\php\essai1.php on line 17

Warning: mysql_select_db(): A link to the server could not be established in d:\siteinternet_i\php\essai1.php on line 17

Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in d:\siteinternet_i\php\essai1.php on line 19

Warning: mysql_query(): A link to the server could not be established in d:\siteinternet_i\php\essai1.php on line 19
base de données sélectionnée :
Requête : show databases
Résultats
Erreur 1045: Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON)


Revoici le code qui semble être bon :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
  <title></title>
  </head>
  <body>
  <?php
  $host="";
  $user="";
  $password="";
  
  /* section d'éxecution de la requête */
  if(@$_GET['form'] == "yes")
  {
    mysql_connect($host,$user,$password);
    mysql_select_db($_POST['database']);
    $query = stripSlashes($_POST['query']);
    $result = mysql_query($query);
    echo "base de données sélectionnée : <b>{$_POST['database']}</b><br>
          Requête : <b>$query</b><h3>Résultats</h3><hr>";
  if($result == 0)
    echo "<b>Erreur ".mysql_errno().": ".mysql_error().
          "</b>";
  elseif  (@mysql_num_rows($result) == 0)
    echo ("<b>Requête executée. Aucun resultat envoyé.
          </b><br>");
  else
  {
    echo "<table border='1'>
      <thead>
        <tr>";
        for($i = 0;$i <mysql_num_fields($result);$i++)
        {
          echo "<th>".mysql_field_name($result.$i).
                "</th>";
        }
    echo " </tr>
          </thead>
        <tbody>";
          for ($i = 0; $i < mysql_num_rows($result); $i++)
          {
            echo "<tr>";
              $row = mysql_fetch_row($result);
              for($j = 0; $j<mysql_num_fields($result); $j++)
              {
                echo("<td>" . $row[$j] . "</td>");
              }
            echo "</tr>";
          }
      echo "</tbody>
          </table>";
    }  // end else
    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=\"Editer la requête\">
        </form>";
      unset($form);
      exit();
    } // endif form=yes
    
    /* Section that request user input of query */
    
    @$query=stripSlashes($_POST['query']);
    if (@$_POST['queryButton'] != "Editer la requête")
    {
      $query = " ";
    }
    ?>
    
    <form action="<?php echo $_SERVER['PHP_SELF'] ?>?form=yes" method="POST">
      <table>
        <tr>
          <td align="right"><b>Indiquez le nom<br>de la base de données</b></td>
          <td><input type="text" name="database" value=<?php echo @$_POST['database'] ?></td>
        </tr>
        <tr>
          <td align="right" valign="top"><b>Saisissez la requête SQL</b></td>
          <td><textarea name="query" cols="60" rows="10"><?php echo $query ?></textarea></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" value="Envoyer la requête"></td>
        </tr>
      </table>
    </form>
  </body>
</html>

Ma question est que dois-je mettre à ces lignes :
$host="???";
  $user="???";
  $password="???";


Merci.
0
aloneInTheDark
21 oct. 2005 à 17:57
Ca y est j'ai trouvé !!
Faut dire que j'ai pas trop réfléchi avant ...

$host="localhost";
$user="root";
$password="";

Tout simplement.
0
et non il n'est pas bon ce script : remplacer le . par , entre la variable result et la variable i
          echo "<th>".mysql_field_name($result.$i).
                "</th>";
ça fonctionne mieux. je pensais comme certain que php pour les nuls était bourré de faute, et bien jusqu'à maintenant toutes les fautes trouvées était mes erreurs perso de frappes alors pourvu que ca dure!
0
oui, pour enlever /td dans le formulaire il suffit de ne pas oublier un petit >. tu le mets dans la ligne suivante (tout à la fin du script), après database et le ? il y a deux >> et non pas un seul>.
 <input type="text" name="database" value=<?php echo @$_POST['database'] ?> ></td>
        </tr>
et ca marche.
mais moi par contre qui apprends aussi avec php pour les nuls, avec localhost , root et "" en mot de passe easy m'affiche la même page: refus , mais pourquoi?, rrrr.
0