Page 1 sur 2

[Mon premier script][Aide]

Posté : 25 oct. 2010, 21:30
par Necromoine
Bonjour, voila quelque temps que je me suis lancé dans le (x)HTML et le CSS.
Pensant bien maitriser ces deux langages, je me suis lancé dans le PHP.
J'ai trouvé de nombreux tutoriaux sur internet, mais tous parlaient de la methode PDO, que ne m'autorise pas mon hebergeur (gratuit...) j'ai donc essayé de "traduire" ces tutoriaux en Mysqli, mais je recontre actuellement quelques difficultées.
Je doit dire que le code de base est tiré du site du zéro, et la base de donné test que j'utilise aussi.
<?php 
$serveur = "segsg";   // serveur
$user= "26sgn";         // identifiant
$password = "esges3";         // mot de passe
$bdd = "tseg";      // Base de donnée
function my_error($errno, $error)
{
	$message = "Erreur MySQL $errno<br />$error";
	trigger_error($message, E_USER_ERROR);
}
$sql = new mysqli($serveur, $user, $password, $bdd) or my_error(mysqli_connect_errno(),mysqli_connect_error());
$result= $sql->query('SELECT nom, prix FROM jeux_video') or my_error($sql->errno, $sql->error);
while(($row = $result->fetch_assoc()) !== Null)
{


}
$result->free();

$stmt = $sql->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ?');
$stmt->bind_param('si', $possesseur, $prix_max);
$possesseur = $_GET['possesseur'];
$prix_max = $_GET['prix_max'];
$stmt->execute() or my_error($stmt->errno,$stmt->error);
//$result = $stmt->result_metadata();
$stmt->bind_result($nom, $prix);
echo '<ul>';
while($stmt->fetch())
{
echo '<li>' . $nom . ' (' . $prix . ' EUR)</li>';
}
echo '</ul>';

$stmt->free_result();
$sql->close();
?>
Mais cette page ne m'affiche rien.
De plus je ne comprend pas la 1ere boucle WHILE.
Pourriez vous m'aider ?

Merci beaucoup.
Necromoine

Re: [Mon premier script][Aide]

Posté : 25 oct. 2010, 22:41
par Castor Gaspard
Bonjour,

Je ne peux t'aider, parce que je ne connais que Pdo, d'un naturel paresseux.

Mais si tu veux juste apprendre, pourquoi ne pas installer Wamp en local ? Ainsi ne seras-tu pas limité par un hébergeur qui propose des fonctionnalités limitées. :mrgreen:

Cordialement,

Gaspard

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 10:03
par Cyrano
Mais si tu veux juste apprendre, pourquoi ne pas installer Wamp en local ? Ainsi ne seras-tu pas limité par un hébergeur qui propose des fonctionnalités limitées.
:shock: Ce n'est pas très futé comme suggestion : que fera-t-il une fois son site prêt en local lorsqu'il sera temps de le mettre en ligne ? S'il développe en local en utilisant PDO, ça ne fonctionnera pas une fois sur le serveur de son hébergeur...
Mais cette page ne m'affiche rien.
De plus je ne comprend pas la 1ere boucle WHILE.
Pourriez vous m'aider ?
La première boucle est vide d'instructions, elle ne sert donc strictement à rien. Sur quelle base es-tu donc parti ? Un tuto ? Il existe des tutos en ligne sur l'utilisation de MySQL, avec ou sans PDO, lesquels as-tu essayé de suivre ?

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 10:27
par stealth35
et pour gérer tes erreurs avec mysqli : sql-bases-donnees/gestion-des-erreurs-m ... 55306.html :wink:

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 12:37
par necromoine
Le code était "totalement " faux, je n'ai pas suivi un tuto et j'ai pris des infos un peu partout...
Pour ceux que sa interesse, le "bon" code est :
<?php 
$serveur = "segsgse";   // serveur
$user= "egsgegseg";         // identifiant
$password = "2esegs";         // mot de passe
$bdd = "qfqzfqzzf";      // Base de donnée
function my_error($errno, $error)
{
	$message = "Erreur MySQL $errno<br />$error";
	trigger_error($message, E_USER_ERROR);
}
$sql = new mysqli($serveur, $user, $password, $bdd) or my_error(mysqli_connect_errno(),mysqli_connect_error());
$result= $sql->query('SELECT nom, prix FROM jeux_video') or my_error($sql->errno, $sql->error);
while(($row = $result->fetch_assoc()) !== Null)
{

}
$result->free();

$stmt = $sql->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ?');
$stmt->bind_param('si', $possesseur, $prix_max);
$possesseur = $_GET['possesseur'];
$prix_max = $_GET['prix_max'];
$stmt->execute() or my_error($stmt->errno,$stmt->error);
$stmt->bind_result($nom, $prix);
echo '<ul>';
while($stmt->fetch())
{
echo '<li>' . $nom . ' (' . $prix . ' EUR)</li>';
}
echo '</ul>';

$stmt->free_result();
$sql->close();
?>
Merci a vous tout de meme (nottament le line vers la gestion d'erreur)

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 13:44
par stealth35
Merci a vous tout de meme (nottament le line vers la gestion d'erreur)
pourtant t'as pas du tout fait la gestion comme dans le lien...

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 14:29
par necromoine
Je n'ai pas eu le temps car j'ai essayer de refaire le code que j'ai poster mais en utilisant un formulaire et une methode POST, mais le probleme est qu'il m'affiche les resultats en ... triple.

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 14:35
par stealth35
y'a toujours ta boucle qui sert a rien, épure ton code :wink:

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 14:42
par Necromoine
function my_error($errno, $error)
{
	$message = "Erreur MySQL $errno<br />$error";
	trigger_error($message, E_USER_ERROR);
}
$sql = new mysqli($serveur, $user, $password, $bdd) or my_error(mysqli_connect_errno(),mysqli_connect_error());

$stmt = $sql->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ?');

$stmt->bind_param('si', $utilisateur, $prix_max);
$utilisateur = $_GET['possesseur'];
$prix_max = $_GET['prix'];
$stmt->bind_result($nom, $prix);
$stmt->execute() or my_error($stmt->errno,$stmt->error);

echo '<ul>';
while($stmt->fetch())
{
echo '<li>' . $nom . ' (' . $prix . ' EUR)</li>';
}
echo '</ul>';

$stmt->free_result();
$sql->close();
?>

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 14:45
par stealth35
et quand tu fais ta requête sous phpmyadmin c'est OK ?

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 14:50
par Necromoine
Oui, tout marche, le probleme du triple affichage venait de la BDD.
Reste un interrogation, comment verifié que le nom recupérer avec GET est bien dans la base de donnée ?

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 14:55
par stealth35
Oui, tout marche, le probleme du triple affichage venait de la BDD.
Reste un interrogation, comment verifié que le nom recupérer avec GET est bien dans la base de donnée ?
tu récupères pas de nom la ? (tu parles du processeur ?)

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 15:01
par necromoine
Oui, je parle bien de possesseur.

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 15:12
par stealth35
Oui, je parle bien de possesseur.
normalement il est sélectionner partir d'une liste créer en rapport avec la base non ?

Re: [Mon premier script][Aide]

Posté : 26 oct. 2010, 15:23
par necromoine
Oui normalement, mais il est possible de modifier la requete, ce qui pourrait faire apparaitre une faille typer injection Mysql.
Comment faire pour que si le nom (possesseur) indiqué dans l'URL n'est pas dans la BDD un message d'erreur apparaise.