Rechercher : dans
Par :

Afficher une url en .php?id=

Dernière réponse le 4 aoû 2008 à 02:09:29 Magnus3D, le 18 mar 2008 à 23:24:38 
 Signaler ce message aux modérateurs

Bonjour,

Je démarre dans le php quel galére et tourne en rond sur ce forum sans succés,

Je cherche à afficher une url en .php?id= avec un numéro qui affiche une information différente,
en prennant par exemple une image dont le nom est dans la base de données.

<html>
<head>
<title>Galerie</title>
</head>

<?php

//connection au serveur test:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "ma_base" ) ;

//récupération de la variable d'URL,
$id = $_GET["IdPeinture"] ;

//requête SQL:
$sql = "SELECT * FROM Tableau ORDER BY IdPeinture = ".$id ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
?>
<img src="<?php echo($result->Image) ;?>.jpg" border="0" width="100" height="300">
<p>Nom </p>
<?php echo($result->NomArtiste) ;?>
<?php }//fin if ?>

</body>
</html>

Je tape : Fichier.php ce qui affiche l'image et le nom du premier de la base
et avec Fichier.php?IdPeinture=0 ou 1 ou 2 affiche une erreur

Je voudrais juste afficher chaque page en tappant Fichier.php?Peinture=son id.
Est-ce une erreur ou un oubli .

Configuration: Windows XP
Internet Explorer 7.0

1

sly-bzh, le 19 mar 2008 à 00:33:05
  • +1

Qu'est ce que tu obtiens comme message d'erreur ?

essaye ça :

//requête SQL:
$sql = "SELECT * FROM Tableau WHERE IdPeinture = ".$id." ORDER BY ce_que_tu_veux" ;
Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh

2

Magnus3D, le 19 mar 2008 à 06:44:52

J'ai une erreur avant la modification

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\php\Fichier.php on line 24

avec la modifacation le lien Fichier.php?IdPeinture=1 ou 2 s'affiche correctement Merci,
mais pour faire la même chose avec Fichier.php?Peinture=1 ou 2 faut-il que je change
IdPeinture en peinture dans la base ?

Répondre à Magnus3D

3

sly-bzh, le 19 mar 2008 à 13:02:30
  • +1

Non, tout ce que tu as à faire c'est :

//récupération de la variable d'URL,
$id = $_GET["Peinture"] ; 

Et ça devrait marcher Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh

4

chantaussel, le 19 mar 2008 à 17:57:07
  • +1

Je viens de faire un script un peu similaire, qui marche bien, et la partie php donne :


<?php

$i = $_GET['i'];

mysql_connect("localhost", "root", "");
mysql_select_db("nom_de_la_bdd");
$reponse = mysql_query("SELECT * FROM nom_de_la_table WHERE id='$i'"); // c'est là que c'est intéressant pour toi
$donnees = mysql_fetch_array($reponse);
echo $donnees['nom_du_champ'];
mysql_close();
?>


Ça doit être un problème de point et de guillemets... Je crois que le .$variable. c'est pour écrire la valeur d'une variable dans une chaîne de caractères, toi tu veux qu'il s'en serve dans la requête (je sais pas si je suis très claire...)
Quelques bases en javascript, débute en php/mySQL
J'essaie de mettre en ligne mon arbre généalogique.

Répondre à chantaussel

5

sly-bzh, le 19 mar 2008 à 18:42:27

En fait étant donné que les id sont, ici, des chiffres, ".$id." et '$id' fonctionneront.
Mais c'est vrai que dans le cas de chaines de caractère il faut mieux mettre '$chaine', voir même ' ".$chaine." ' (sans les espaces entre ' et " mais c'est pour bien les voir que je les met) Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh

6

chico200987, le 19 mar 2008 à 19:04:02

Exact sly-bzh.

Cependant, pour le script en lui même, je te conseil de faire très attention au script que tu es en train de faire. Même si on voit que tu es en local, si tu comptes mette en production ton travail et donc y insérer des données plus sensibles, ta requête est très faillible.

Si tu fais un echo de ta requête n'importe où dans ton code, tu as :

avec index.php?idPeinture=2

SELECT * FROM Tableau WHERE IdPeinture = 2 ORDER BY idPeinture

Il suffit de remplacer le 2 de l'url pour avoir d'autre données plus sensible, mais nous nous égarons de ton problème.

Pour info, celà s'appelle de l'injection SQL. Je te conseil de filtrer ce que tu récupères donc au lieu d'un simple :

$id = $_GET['idPeinture'];

Essaie : $id = htmlspecialchars($id);

;o)

Répondre à chico200987

7

Magnus3D, le 19 mar 2008 à 19:38:59

Merci sly-bzh pour la solution :

//récupération de la variable d'URL,
$id = $_GET["Peinture"] ;

L'url s'affiche bien en Fichier.php?Peinture=nombre de l'IdPeinture.

Et pour chico200987: Essaie : $id = htmlspecialchars($id); là j'ai une erreur.

donc la solution récapituler :

Pour afficher une url en .php?id= avec un numéro qui affiche une information différente,
en prennant par exemple une image dont le nom est dans la base de données.

<html>
<head>
<title>Galerie</title>
</head>

<?php

//connection au serveur test:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "ma_base" ) ;

//récupération de la variable d'URL,
$id = $_GET["Peinture"] ;

//requête SQL:
$sql = "SELECT * FROM Tableau WHERE IdPeinture = ".$id." ORDER BY IdPeinture " ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
?>
<img src="<?php echo($result->Image) ;?>.jpg" border="0" width="100" height="300">
<p>Nom </p>
<?php echo($result->NomArtiste) ;?>
<?php }//fin if ?>

</body>
</html>

Répondre à Magnus3D

9

sly-bzh, le 19 mar 2008 à 19:57:04

Juste une toute dernière chose : dans la requête SQL le ORDER BY ne sert absolument à rien, étant donné que tu n'as qu'une seule id. Je ne sais pas pourquoi je te l'ai mise, faute d'innatention surement...

Evidemment Chico a raison, dès qu'un utilisateur distant peut rentrer des données, faire des recherches, entrer un nom d'utilisateur, etc en gros dès que t'as un formulaire ou que tu appelles des variabes via $_GET ou $_POST, il faut protéger à fond
Par contre tu ne devrais pas avoir d'erreur. Tu as bien rentré la ligne après :

//récupération de la variable d'URL,
$id = $_GET["Peinture"] ;

? Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh

8

chico200987, le 19 mar 2008 à 19:45:08

Une erreur du type ?

Tu as une tonne de fonction pour t'en protéger :

htmlentities
htmlspecialchars
str_replace
str_ireplace
strtr
eregi_replace
preg_replace
stripcslashes
stripslashes
addcslashes
addslashes


C'est juste à titre informatif ;p

Répondre à chico200987

10

Magnus3D, le 19 mar 2008 à 20:55:21

Je n'ai plus d'erreur et je test sans ORDER BY IdPeinture ce qui reste :

//requête SQL:
$sql = "SELECT * FROM Tableau WHERE IdPeinture = ".$id." " ;

ça fonctionne aussi, je commence à voir plus claire.

Répondre à Magnus3D

11

chico200987, le 19 mar 2008 à 22:35:44

Effectivement l'Order By est inutil vu que par défaut il sera trié par l'id.. ^^

Répondre à chico200987

12

Magnus3D, le 23 mar 2008 à 15:37:48

Je rajoute un autre problème avec :

<?php
//connection au serveur test:
$cnx = mysql_connect( "localhost", "root", "" ) ;
//sélection de la base de données:
$db = mysql_select_db( "ma_base" ) ;
//récupération de la variable d'URL,
$id = htmlspecialchars($_GET["peinture"]) ;
//requête SQL:
$sql = "SELECT * FROM Tableau WHERE IdPeinture = ".$id." " ;
//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;
//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
?>
<html>
<head>
<title>Galerie</title>
</head>
<img src="<?php echo($result->Image) ;?>.jpg" border="0" width="100" height="300">
<p>Nom </p>
<?php echo($result->NomArtiste) ;?>
<?php }//fin if ?>
</body>
</html>

Comment fait-on pour afficher Fichier.php avec le même affichage que Fichier.php?peinture=0 sans avoir le message :

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\php\Fichier.php on line 13

Pour l'intant je chercher à insérer htmlspecialchars que chico200987 à conseillé ce qui marche dans cette forme mais
je ne sais pas si je l'ai bien placé.

Répondre à Magnus3D

13

sly-bzh, le 24 mar 2008 à 23:15:13

Un conseil, quand tu as un noueau problème, essaye plutôt d'ouvrir un nouveau sujet, t'auras plus de réponses.
D'autre part, tu devrais mettre == au lieu de = dans ton if.
Et désolé, mais je ne connais pas bien la fonction mysql_fetch_object. Cependant, il est évident que tu ne l'utilises pas bien, va voir la doc et tu trouveras surement ta réponse Proverbes breton :
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh

14

 Sasukeman, le 3 aoû 2008 à 15:03:34

Lu pourquoi sa marque sa

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/sasukeman/web/www/fiew.php on line 26

alor que jai tou comme il faut <?php

//connection au serveur test:
$cnx = mysql_connect( "localhost", "psedo", "mdp" ) ;

//sélection de la base de données:
$db = mysql_select_db( "bdd" ) ;

//récupération de la variable d'URL,
$id = $_GET["image"] ;

//requête SQL:
$sql = "SELECT * FROM streaming_anime WHERE id = ".$id." ORDER BY image " ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
?>
<img src="<?php echo($result->Image) ;?>.jpg" border="0" width="100" height="300">
<p>Nom </p>
<?php echo($result->NomArtiste) ;?>
<?php }//fin if ?>

Répondre à Sasukeman