NewbieContest

Programmation => Langages Web => Discussion démarrée par: Snake046 le 29 Juillet 2006 à 16:42:11



Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 29 Juillet 2006 à 16:42:11
Salutations ! C'est The-Snake (j'ai perdu mon mdp je crois :rolleyes:) !

Alors, je suis sur un jeu par navigateur... j'ai fait la base de donnée, mais je ne comprend pas comment on peut aller chercher les données dans la base de donnée... mon livre sur PHP & MySQL reste très flou là dessus.

Comment fait-on pour se connecter à la base de donnée et écrire ou retirer des données de la bdd à partir d'un script PHP ?


Titre: [MySQL] Connexion a la base de donnée
Posté par: Gardel le 29 Juillet 2006 à 18:08:44
Alors pour ton pseudo, je te conseille de le redemander en mail :p

Pour ton problème, je te conseille d'apprendre PHP/MySql sur le Site du Zéro (http://www.siteduzero.com/index.php), c'est très bien expliqué ;) Plus précisement voici ce que tu cherches (http://www.siteduzero.com/tuto-3-4-0-un-site-dynamique-avec-php.html#part_20).

Tout t'expliquer sur un forum c'est pas trop réalisable :)


Titre: [MySQL] Connexion a la base de donnée
Posté par: Nebelmann le 30 Juillet 2006 à 08:49:23
Citation
mon livre sur PHP & MySQL reste très flou là dessus.
tu t'es fait avoir alors... si ton bouquin de PHP/MySQL ne parle pas de PHP/MySQL, c'est vraiment pas normal


Titre: [MySQL] Connexion a la base de donnée
Posté par: Folcan le 30 Juillet 2006 à 11:47:31
Tu m'etonne, un bouquin PHP/Mysql qui ne dit pas comment interroger une base mysql via du php...

A mon avis il faudrait que tu retourne voir le sommaire de ton livre !


Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 01 Août 2006 à 09:27:32
Ben avec ça j'arrive pas à faire marcher mon script et je vois pas pourquoi il rate...


Voilà ce que j'ai fait (pour les identifiants, je travail pour le moment sur EasyPHP...) :

Code:
	<?php
mysql_connect("localhost""root""");
mysql_select_db("bdunivers");

$NomEmpire mysql_query("SELECT NomEmpire FROM ref_joueurs WHERE Pseudo='snake046'");
$Avatar mysql_query("SELECT Adresse_Avatar FROM joueurs_avatar WHERE Pseudo='snake046'");
$Credits mysql_query("SELECT Credits FROM joueurs_credits WHERE Pseudo='snake046'");

?>


        <img border="0" src="<?php echo $Avatar?>" width="99" height="99" align="left"></font></td>
        <td width=50% valign=top><font size=2 face=Arial><?php echo $NomEmpire?><br />
        <font color=#FFFF00><?php echo $Credits?> Crédits<br /></font>

<?php     
mysql_close();
?>
Mais à la place de ce qui devait être écrit, il m'écrit Resource id #3 et Resource id #4 ! Et pour $Credits, mieux encore il ne m'écrit rien.
Au niveau de la base de donnée, le type des colonnes sont pour NomEmpire varchar(30), pour Credits Int(11) et pour Avatar c'est text.


Titre: [MySQL] Connexion a la base de donnée
Posté par: Perfect Slayer le 01 Août 2006 à 12:44:19
Bah tu récupères des ressources comme il te l'indique avec mysql_query().. Pour exploiter ces ressources (qui apparement ne contiennent qu'une donnée), il faut que tu utilises mysql_result().

P.S. : Attention : mysql_result() est loin d'etre la meilleur fonction lorsque tu recupères plusieurs valeurs dans plusieurs enregistrements. :wink:


Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 01 Août 2006 à 14:53:42
Hum euh éhéh... bien que Google ait tenté de m'aidé, je comprend pas comment elle marche cette fonction !

Initialement, j'ai mis la variable qui contenait la fonction mysql_query, et ça m'a raconté des bétises...
Ensuite sur google, j'ai vu qu'il fallait mettre un chiffre après, mais j'ai pas bien compris ce qu'il devait désigner ?? J'ai cru comprendre que ce chiffre correspondait au paragraphe "row" dans php.net, soit "Le numéro de la ligne à récupérer. Les numéros de lignes commencent à 0."
Le numéro de la ligne ? De quelle ligne ils parlent ?

===

Pendant que j'écrivais ce message, j'ai quand même réussi à faire afficher $Avatar et $NomEmpire, mais toujours pas $Credits !


Titre: [MySQL] Connexion a la base de donnée
Posté par: Perfect Slayer le 01 Août 2006 à 15:45:42
bah des résultats de la ressource..

Je vais tenter qqchose..
IdNomPrenom
1DupondJean
2RenardThierry

Oublie la 1ere ligne qui serait le nom de tes champs (ici, ref_joueurs, joueur_avatar).. si jamais tu fais un SELECT * FROM ma_table, il te sortirait tout.. Avec mysql_result, apres tu peux aller chercher une donnée. Par exemple :
mysql_result(#ressource#,0,0) -> 1
mysql_result(#ressource#,0,1) -> Dupond
mysql_result(#ressource#,0,2) -> Jean
mysql_result(#ressource#,1,0) -> 2
mysql_result(#ressource#,1,1) -> Renard
mysql_result(#ressource#,1,2) -> Thierry

Je sais pas si tu vois un peu mieux comment ca fonctionne maintenant..


Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 01 Août 2006 à 16:46:53
Mais alors c'est pas vraiment ce que je cherche : en fait là ou j'ai écrit Snake046 c'était juste pour simplifier, pour que je n'ai pas à faire de formulaires tout de suite. En fait c'est un espace membre qui dois pouvoir contenir au moins une bonne centaine de personnes.


Titre: [MySQL] Connexion a la base de donnée
Posté par: Perfect Slayer le 01 Août 2006 à 16:53:21
Ce que je voulais te montrer c'est la synthaxe de mysql_result().. Dans ton cas, tu auras certainement que mysql_result(#ressource, 0, 0) à faire pour récupérer ta valeur..


Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 01 Août 2006 à 22:17:24
Ah je crois comprendre...

Sinon, je tombe très souvent sur des "parse error" et je ne sais pas ce que c'est, alors je n'arrive pas à réparer...
J'ai essayé de faire un formulaire pour me connecter, ça donne ça :

identification.htm
Code:
<form method="post" action="verif.php">

<input type="text" name="Pseudo" /><br />
<input type="password" name="Password" /><br />
<input type="submit" value="Valider" /><br />

</form>
verif.php
Code:
<?php

$_POST
['Pseudo'] = $Pseudo;
$_POST['Password'] = $Password;

mysql_connect("localhost""root""");
mysql_select_db("bdunivers");

$CorrectPass mysql_query("SELECT Password FROM Ref_Joueurs WHERE Pseudo=$Pseudo)

if (
$Password == $CorrectPass)
{
    header(location:index.php);
}
elseif (
$Password != $CorrectPass)
{
    [color=red]echo("
Message qu'il dit que le mdp il est pas correct";[/color]
}

mysql_close;

?>
Sur verif.php, il me renvois une "Parse error" ! Et je comprend pas d'où elle viens !
J'ai mis en rouge la ligne d'où il me dit qu'il y a une "Parse error", enfin bon...

Enfin, je voudrais que la variable $Pseudo subsiste si l'individu est redirigé vers index.php, comment dois-je faire pour cela svp ?


Titre: [MySQL] Connexion a la base de donnée
Posté par: Perfect Slayer le 02 Août 2006 à 07:37:48
echo("Message qu'il dit que le mdp il est pas correct";
---> echo "Message qu'il dit que le mdp il est pas correct";
Pas de parenthèses avec echo (encore moins une ouvrante toute seule)
Pour garder la variable, tu peux la faire correspondre d'une page à l'autre avec les sessions, les cookies, l'url..


Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 02 Août 2006 à 13:40:14
ah ? curieux, j'ai vu parfois des echo et le message entre parenthèse, mais effctivement ça m'avait semblé bizarbe ! Bon ben maintenant je comprend !
Je vais essayer !

Et pour qu'une variable soit valide même après que j'ai passé la page verif.php, ya une fonction ou quelque chose comme ça ?


Titre: [MySQL] Connexion a la base de donnée
Posté par: Perfect Slayer le 02 Août 2006 à 16:27:43
Citation de: Perfect Slayer
Pour garder la variable, tu peux la faire correspondre d'une page à l'autre avec les sessions, les cookies, l'url..
:wink:


Titre: [MySQL] Connexion a la base de donnée
Posté par: the lsd le 03 Août 2006 à 07:46:04
je pense que tu peux aller jeter ton livre...


Titre: [MySQL] Connexion a la base de donnée
Posté par: Snake046 le 03 Août 2006 à 17:19:32
Ben pour l'echo, il me dit toujours qu'il y a une Parse Error, bien que j'ai essayé toutes les solution (guillemets simple, double guillemets, ou même rien du tout), mais à la ligne 20, qui est une ligne vide qui se trouve entre l'accolade signifiant la fin de la fonction else et le ?> qui fini le script !

Sinon je suis interessé par l'idée de session... ça consiste en quoi ? Ya une page internet ou on peut apprendre à gérer ça ?


Titre: [MySQL] Connexion a la base de donnée
Posté par: SeVeN le 04 Août 2006 à 09:44:38
echo fonctionne bien avec des parentheses, c'est pas le probleme. Le probleme c'est plutot que tu es distraits et que tu fermes pas souvent tes chaines de caracteres. J'ai corrigé -sans tester- ton script, il reste peut etre des erreurs.

<?php

// c'etait inversé...


$Pseudo = $_POST['Pseudo'];
$Password = $_POST['Password'];


// ici tu dois nettoyer les variables envoyées, verifier si elles existent ou non, et agir en consequence
// pour eviter les connexions inutiles a la base SQL et les injections SQL. Je te laisse decouvrir ça par
// toi meme

@mysql_connect("localhost", "root", "") or die("Connexion impossible");
@mysql_select_db("bdunivers") or die("Base non disponible");

// y'a plus élegant mais c'est pour rester dans l'esprit de ton script

$req = mysql_query("SELECT Password FROM Ref_Joueurs WHERE Pseudo='$Pseudo'");
$CorrectPass = mysql_result($req, 0, 0);

if ($Password == $CorrectPass)
{
    header("location:index.php");
}
else
{
    echo("Message qu'il dit que le mdp il est pas correct");
}

@mysql_close();

?>


Titre: [MySQL] Connexion a la base de donnée
Posté par: lordzak le 09 Août 2006 à 19:04:42
hum...et les addslashes ? =)

Edit pardon, mal lu...