PHP & mySQL pour les nuls ...

Bonjour :)

soit je suis vraiment nul, soit il y a un blem dans leur bouquin, ils donnent un script (ci-dessous) dans lequel on est censé (sous IE) entrer les lignes de commandes pour créer et modifier une base SQL. J'ai vérifié trois fois et j'ai exactement la même chose que ce qui est imprimé sur les pages du bouquin ... sauf qu'au lieu (avec la commande show database) d'avoir une réponse avec un tableau me donnant le sbases de données présentes, j'ai ceci dans la barre d'adresse et c'est tout : http://localhost/mysql_envoi.php?form=yes

<!-- Nom du programme : mysql_envoi.php
Description : envoi d'une requète SQL au server SQL
et affichage des résultats -->
<html>
<head>
<title>Envois de Requêtes SQL</title>
</head>

<body>
<?php
$user="localhost";
$host="root";
$password="";

/* Section d'exécution de la requête */

if (@form == "yes")
{ mysql_connect($host,$user,$password);
mysql_select_db($database);
$query = stripSlashes($query) ;
$result = mysql_query($query);
echo "Base de données sélectionnée :
<b>$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 exécutée. Aucun résultat 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>";
}
echo "<hr><br>
<form action=$PHP_SELF method=post>
<input type=hidden name=query value=\"$query\">
<input type=hidden name=database value=$database>
<input type=submit name=\"queryButton\"
value=\Nouvelle requête\">
<input type=submit name=\"queryButton\"
value=\"Editer la requête\">
</form>";
unset($form);
exit();
}

/* Section demandant à l'utilisateur de formuler sa requête */
@$query = stripSlashes($query);
if (@$queryButton != "Edit Query")
{ $database = " ";
$query = " ";
}
?>

<form action=<?php echo $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 $database ?> >
</td>
</tr>
<tr>
<td align="right" valign="top"><b>Saisissez la requête</b>
</td>
<td><textarea name="query" cols="50" rows="10"><?php echo $query ?>
</textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Envoyez la requête"></td>
</tr>
</table>
</form>

</body>
</html>


alors si quelqu'una rrivait à m'expliquer ce qui cloche la dedans, je lui en serais gré :)

Gals - Nibelungen

14 réponses

Résumé de la discussion

Des utilisateurs rencontrent des difficultés avec un script PHP destiné à envoyer des requêtes SQL à un serveur MySQL et à afficher les résultats dans le navigateur. Plusieurs répondants expliquent que le code du livre présente des erreurs de syntaxe et des noms de variables mal employés, ce qui empêche la connexion et l'exécution des requêtes. Parmi les solutions proposées, remplacer les contrôles @form par $_GET ou $_POST, corriger les noms des variables (host, user, database) et définir explicitement la base avant l’appel mysql_select_db. D'autres précisent que le livre présente de nombreuses coquilles et que des conseils alternatifs existent pour apprendre PHP et MySQL, notamment en expérimentant des environnements locaux ou des ressources pédagogiques plus récentes.

Bobot (l’IA à votre service)
  1. Contributeur
    salut

    Le mieux reste le site du zer0 :p

    mais joli le pull de post d il y a 6 mois :p

    1. mysql_select_db($database);
      $query = stripSlashes($query) ;


      Est ce que $database et $query sont bien initialisées ?
      Si oui, est ce que $databsae correspond bien à une base existante ?
      Est ce que tu as testé la requete $query directement dans PhpMyAdmin ?

      --
      Jérémy
      1. Heu, et pis, c'est quoi cette ligne:

        if (@form == "yes")

        Kalamit,
        Parle à ma culasse, mon carter est malade. :)
        1. Contributeur
          je sais pas, j'ai recopié le code du livre comme il l'explique dedans :/

          je n'y connais rien, c'est le début du bouquin pour apprendre, donc pour le moment je me contente de recopier ce qu'ils me disent.

          je me suis renseigné auprès d'une autre personne ayant le même ouvrage, elle a abandonné à cet endroit car rien ne fonctionnait dans les codes donnés :/

          Gals - Nibelungen
        2. Ben déja remplace le @ par un $ (voir meme par $_GET['form'] )... Ca sera déja beaucoup plus logique. J'ai pas regardé plus loin.

          Kalamit,
          Parle à ma culasse, mon carter est malade. :)
        3. Contributeur
          @kalamitj'ai suivi ton conseil kalamit et au moins ca change, j'ai ca maintenant :

          Warning: Unknown MySQL Server Host 'root' (0) in e:\easyphp\www\mysql_envoi2.php on line 18

          Warning: MySQL Connection Failed: Unknown MySQL Server Host 'root' (0) in e:\easyphp\www\mysql_envoi2.php on line 18

          Warning: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in e:\easyphp\www\mysql_envoi2.php on line 19

          Warning: MySQL Connection Failed: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in e:\easyphp\www\mysql_envoi2.php on line 19

          Warning: MySQL: A link to the server could not be established in e:\easyphp\www\mysql_envoi2.php on line 19

          Warning: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in e:\easyphp\www\mysql_envoi2.php on line 21

          Warning: MySQL Connection Failed: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON) in e:\easyphp\www\mysql_envoi2.php on line 21

          Warning: MySQL: A link to the server could not be established in e:\easyphp\www\mysql_envoi2.php on line 21
          Base de données sélectionnée :
          Requête : show database
          Résultats

          --------------------------------------------------------------------------------
          Erreur 1045: Accès refusé pour l'utilisateur: 'ODBC@localhost' (mot de passe: NON)

          pourtant easyPHP fonctionne et il me dit que tout est actif :/

          Gals - Nibelungen
        4. Modérateur
          @GalsungenSalut,

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


          par :

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


          Ca ne résoudra pas tout mais c'est déjà ça..

          Kilian, débutant en tâche de fond.....
        5. Modérateur
          @GalsungenAh bah d'accord je réponds trois mille ans après moi..... :-s

          Kilian, débutant en tâche de fond.....
      2. salut,

        je confirme que ce livre pourrit est vraient nul je l'ai acheté et g rien compris bizarement j'en ai acheté un autre PEDAGOGIQUE et en deux semaine g su maitriser tres bien le php
        1. salut,

          Tu parles d'un bouquin pédagogique qui t'as permis de maîtriser le PHP en deux semaines, pourrais-tu nous fournir un peu plus d'informations sur ce bouquin, ça serait vraiment cool ?

          J'ai l'intention de m'y mettre mais il y a tellement de truc sur le PHP que je sais pas où donner de la tête et j'ai pas trop envie de perdre du temps sur des trucs qui fonctionnent pas, normal quoi ;)

          Merci d'avance !!!
      3. ESSAYE PHP ET MYSQL VERSIONS 4 ET 5 EN SUPER POCHE CHEZ MICRO APPLICATION POUR 7€89
        1. Bonjour,
          Oyez, Oyez, braves gens !
          Je vais sous vos yeux vous révéler le VRAI script de "MySQL et PHP pour les nuls" (Oui, oui, c'est bourré d'erreur)

          Voici les erreurs et les corrcetions dans l'ordre :

          à la ligne 10
          Ajouer "root" dans le texte ($user="";) de façon à ce que ça donne ---> $user="root";
          Pourquoi ? Sans le login, impossible de se connecter. Mais pour le nom "Root", je n'en sais rien.

          à la ligne 13
          à (mysqli_connect) enlever la lettre " i " pour donner ---> $cxn = mysql_connect($host,$user,$password);
          Pourquoi ? Allez comprendre pourquoi ils ont mis un " i ".
          Note Importante : Faite cette même manoeuvre sur tous les "mysqli" (Enlevez les " i ")

          à la ligne 15
          Enlevez ($cxn) pour donner ---> $result = mysql_query($sql);
          Pourquoi ? Cette fonction est inutile et pose un problème pour le message d'erreur qui se trouve en-dessous.

          Et voilà, le tableau devient exactement comme ils l'ont décris dans le livre.
          Si ça marche toujours pas, envoyez moi une réponse avec les données.
          1. J'arrive un peut en retard ^^ J'ai le bouquin egalement et j'ai aucun soucis, j'ai verifié ton code et il y a déjç des fautes de recopiage ^^

            Exemple, tu as mis:
            if (@form == "yes")

            Au lieu de:
            if(@$_GET['form'] == "yes")

            Avant de poster sur les forum, pense a relir ton code ;)
            Bonne chance pour la suite.
            1. Juste pour confirmer que ce livre est une véritable bouze. J'en suis à la page 67 et pas une page sans coquilles. Merci pour le coup de main du forum sans quoi je le jetai.
              1. "Root" c'est le nom du serveur ou ce trouve la base de donnée quand vous mettre votre site en marche ( dans un serveur xD ) vous devriez changer ça le nom de la base l'adresse ect ...
                ps : pour bien commencer je conseil le site du zéro ( recherche sur google ^^ ) vous aprennez vraiment ce qu'il faut savoir en php et leur forum permet d'optimiser vos connaissances et le livre en plus ( je ne les pas mets vu le code qu'il donne ) vous devenais incollable sur le php
                enfin ce n'est que mon avis
                1. Salut , j'ai exactement les meme probleme que toi sur ce livre j'ai abondonné et pris php 5 avancé ché eyroll c'est le must
                  1. Pareil j'ai acheté PHP5 avancé et j'en suis super super content !

                    ++
                    1. Je poste un peu tard, mais cet homme (qu'il soit béni par le Dieu de l'informatique) qui est un vrai geek dans tous les domaines, se nommant M@teo21 sur le https://openclassrooms.com/fr/ a écrit un livre sur

                      "Réussir son site web avec XHTML et CSS"
                      Le livre du Site du Zéro
                      Réussir son site web avec XHTML et CSS

                      Le Site du Zéro enfin en livre !
                      Vous avez été nombreux à réclamer la parution d'un ouvrage dans le style "Site du Zéro" : c'est désormais chose faite !

                      Oubliez tous les livres confus et complexes que vous avez pu lire jusqu'à présent.
                      Désormais, les débutants ont leur livre. Enfin un livre qui part du début, qui explique pas à pas sans sauter d'étapes, et qui vous permet d'arriver à un résultat concret à la fin... le tout sans prise de tête !

                      Ce livre est paru aux éditions Eyrolles dans la collection Accès Libre.
                      Il a été écrit par Mathieu Nebra, alias M@teo21, fondateur du Site du Zéro et auteur entre autres du cours de C / C++, de site web, de PHP, etc.

                      Voila. Moi aussi j'utilise ce bouquin (pour les Nuls), et je m'enlise pas trop profondément dedans (il faut dire que je n'ai pas essayé les scripts :p). D'après tout ce que vous avez dit au sujet des scripts, imaginez un peu comment cela doit être avec la bibliothèque de scripts qui se trouve à la fin... Enfin bon. Je vais le finir afin de pouvoir donner un véritable avis.

                      Codiralement,

                      Barto.
                    2. @bartoRebonjour,

                      Je suis d'accord, cependant, il n'approfondit pas autant que php5 avancé de Eyrolles, il n'y a pas photo.

                      ++
                    3. @bartoBon salut à tous voilà pour les perdus et pressés A+

                      http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/design_css

                      Si tu comprend pas n'insiste pas mon gars...
                  2. Salut,

                    j'ai le même type de problème :

                    une erreur lors de ma requête de bdd :

                    voici le code php :

                    ligne 25_ _ _ _ _ _ _ _ _mysql_connect("localhost", "mon_identifiant_FTP", "mon_mot_de_passe_FTP");

                    voici ce qu'affiche le navigateur :

                    Warning: mysql_connect(): Accès refusé pour l'utilisateur: 'mon_identifiant_FTP@localhost' (mot de passe: OUI) in 'chemin_vers_la_page' on line 25

                    Question : Pourquoi ????????

                    PS : page web et bdd sont sur un serveur auquel j'accède via client ftp (filezilla)
                    1. mon_identifiant_FTP doit-être remplacé par ton identifiant réel.

                      Si en local, normalement on laisse vide user et password, enfin si tu n'as rien spécifié à l'install ou par la suite.
                      1. mon_identifiant_FTP, c'est JUSTEMENT pour signaler qu'ici, je mettais mon identifiant, mais sans le dévoiler .... :-p

                        Sinon, c'est peut-être un problème de CHMOD de la bdd mysql...
                        je vais voir ça.
                    2. Salut, je t'invite à regarder la réponse officiel à ta question.
                      Rendez-vous sur le message N°14.