Passer de "sql 'select " à $query = 'SELECT pour espace membres

Répondre
jackbocar
le 10/11/2006 à 08:39
jackbocar
Bonjour,

Je n'arrive pas à modifier le script du "comment faire" un espace membres de

$sql = 'SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();


En :

$query ='ELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';

if( $result = $link->query($query) )
{
while ($row = mysqli_fetch_row($result)) {
printf ("XXXXXXXXXXXXXXXXXXXXn", $row[0], $row[1], $row[2], $row[3]);
}

}
}
else
echo mysqli_error();
$result->close();
$link->close();


Ne peut-on pas modifier ce script ?
Quelqu'un peut-il me dire comment faire ?
Quelqu'un peut-il me faire une ébauche avec les fonctions "mysqli" ?

Merci de votre aide

Jack Bocar
jackbocar
le 10/11/2006 à 16:03
jackbocar
Bonjour,

Je te donne l'exemple que j'ai trouvé sur le net :

http://www.manuelphp.com/php/function.mysqli-fetch-row.php

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Echec de la connexion : %sn", mysqli_connect_error());
exit();
}

$query = "SELECT Nom, CodePays FROM Ville ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

/* Récupération du tableau d'objet */
while ($row = $result->fetch_row()) {
printf ("%s (%s)n", $row[0], $row[1]);
}

/* Libération du jeu de résultats */
$result->close();
}

/* Fermeture de la connexion */
$mysqli->close();
?>


Et celui-ci :

<?php

// ICI : http://www.manuelphp.com/php/function.mysqli-fetch-row.php


$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
printf("Echec de la connexion : %sn", mysqli_connect_error());
exit();
}

$query = "SELECT Nom, CodePays FROM Ville ORDER by ID DESC LIMIT 50,5";

if ($result = mysqli_query($link, $query)) {

/* Récupération du tableau associatif */
while ($row = mysqli_fetch_row($result)) {
printf ("%s (%s)n", $row[0], $row[1]);
}

/* Libération du jeu de résultats */
mysqli_free_result($result);
}

/* Fermeture de la connexion */
mysqli_close($link);
?>


Pour lire les données, il fonctionne parfaitement bien, pour enregistrer des données dans mon espace membres tout va bien.

Là où ça ne va plus, c'est que mes pages protégées ne le sont plus du tout, de plus je crois que le script qui doit vérifier les bons mots de passes et les bons logins, ne fonctionne pas non plus avec ce mysqli ?

Merci de te pencher sur ce problème

Je me demande si je n'ai pas fait des erreurs de frappes à la construction de mon script ?

Jack Bocar
jackbocar
le 10/11/2006 à 17:10
jackbocar
Nom script et mes erreurs :

<?php
/* ------------------------------------------ */
define('PATH_HTTP', 'http://localhost/membres/register');
define('PATH_INCLUDE', 'e:/www/membres/register');
/* ------------------------------------------ */
define('dbHost', 'localhost');
define('dbUsername', 'root');
define('dbPassword', 'password');
define('dbDatabase', 'membres');
/* ------------------------------------------ */
define('SITE_NOM', 'users-membres');
define('SITE_EMAIL', 'users-membres@yahoo.fr');
/* ------------------------------------------ */
?>

<?php

if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {

if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {

if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$link = mysqli_connect(dbHost, dbUsername, dbPassword, dbDatabase);
if (mysqli_connect_errno()) {
printf("Connexion &eacute;chou&eacute;e : %sn", mysqli_connect_error());
exit();
}

$query = 'SELECT count(*) FROM users_membres WHERE login="'.addslashes($_POST['login']).'"';

// ci-dessous : ligne 37

$query = mysqli_query($sql) or die('Erreur SQL !'.$sql.''.mysqli_error());
$data = mysqli_fetch_array($query);

if ($data[0] == 0) {
$query = 'INSERT INTO users_membres VALUES("", "'.addslashes($_POST['login']).'", "'.md5(addslashes($_POST['pass'])).'")';
$query = mysqli_query($sql) or die('Erreur SQL !'.$sql.''.mysqli_error());

session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: ../membres/page_1.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Inscription</title>
</head>

<body>
Inscription à l'espace membre :
<form action="register.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo stripslashes(htmlentities(trim($_POST['login']))); ?>">
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo stripslashes(htmlentities(trim($_POST['pass']))); ?>">
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo stripslashes(htmlentities(trim($_POST['pass_confirm']))); ?>">
<input type="submit" name="inscription" value="Inscription">
</form>
<?php
if (isset($erreur)) echo '',$erreur;
?>
</body>
</html>


Les erreurs :

Warning: mysqli_query() expects at least 2 parameters, 1 given in E:wwwmembresregisterregister.php on line 37

Warning: mysqli_error() expects exactly 1 parameter, 0 given in E:wwwmembresregisterregister.php on line 37
Erreur SQL !
moogli
le 10/11/2006 à 17:14
moogli
salut,

essai de revoir tes script un par un, requete par requete.

a priori y pas de soucis (j'ai regardé vite fait).

le debug pas a pas y a que sa de vrai :)

@+
Il en faut peu pour être heureux !!!!!
LA GLOBULE
le 10/11/2006 à 21:21
LA GLOBULE
Warning: mysqli_query() expects at least 2 parameters, 1 given in E:wwwmembresregisterregister.php on line 37

Warning: mysqli_error() expects exactly 1 parameter, 0 given in E:wwwmembresregisterregister.php on line 37

Les erreurs sont clairs : tu ne fournis pas le bon nombre d'arguments requis par ces instructions.
jackbocar
le 11/11/2006 à 07:40
jackbocar
Bonjour,

J'ai tyrouvé les erreurs dans le script, la seule chose qui me dérange c'est les : $result à la place des req.

Est-ce normal ?

<?PHP
$query = 'SELECT count(*) FROM users_membres WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
$result = mysqli_query or die('Erreur SQL !'.$sql.''.mysql_error($link, $sql));
$result = mysqli_query($link, $query);
$data = mysqli_fetch_array($result);
?>


Jack Bocar
Koboneil
le 11/11/2006 à 10:28
Koboneil
Bah c'est le nom de la variable, si tu veux l'appeler $req ou $ilfaitbeaudehors, tu peux :)

Par contre le code au-dessus est faux, ca devrait être ca non :

<?PHP
$query = 'SELECT count(*) FROM users_membres WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
$result = mysqli_query($link, $query) or die('Erreur SQL !'.$sql.''.mysql_error($link, $sql));
$data = mysqli_fetch_array($result);
?>


?
Koboneil
jackbocar
le 11/11/2006 à 16:19
jackbocar
Bonjour,

Merci,

C'est très possible, je n'y connais rien ou presque rien, je fais ligne à ligne.

On peut dire au pif, je n'ai même pas de livre, je pioche des exemples sur le net et je les assemble.

Je vais tester ta correction et je te dirais.

Il faudrait que LA GLOBULE nous fasse un comment faire un script de news pour PHP5 avec MYSQLI, qui va être un jour utilisé par les serveurs.

Encore merci

Jack Bocar
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours