popup généré automatiquement selon lien

Eléphant du PHP | 72 Messages

20 févr. 2006, 17:43

Re-salut tout le monde !

Hé oui encore des questions ! :D

J'ai une bdd avec différents champs : titre, descriptif, photo, adresse... Dans une page j'affiche un tableau avec tous mes enregistrements, avec quelques uns de ces champs comme titre, descriptif, photo, sur descriptif je voudrais faire un lien dynamique qui m'ouvre une fenêtre (popup), et je voudrais que cette fenêtre se regénére automatiquement à chaque lien. Ainsi si je clique sur le 3ème enregistrement cela m'affiche son propre descriptif. Je ne sais pas comment m'y prendre.

Merci d'avance à ceux qui pourront m'aider !
y a un début à tout !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

20 févr. 2006, 17:46

Qu'entends-tu par "fenêtre se regénére automatiquement" ? Je n'ai pas bien saisi.

Ce que je comprend à peu près c'est que quand tu cliques sur un lien tu désires mettre les infos correspondants à chaque fois.

Pour cela il te suffit de passer un paramètre URL l'id de l'enregistrement. Il te suffira ensuite qu'à le récupérer dans ta requête et d'afficher ce que tu veux en rapport à l'id récupéré.

Invité
Invité n'ayant pas de compte PHPfrance

20 févr. 2006, 17:53

A Charabia,

A chaque lien on affiche la même fenêtre mais son contenu change en fonction de l'enregistrement. Sinon pour ce que tu viens de m'expliquer, pourrais-tu me montrer le code à adopter (je n'y connais pas grand chose) ça serait sympa.
Encore merci !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

20 févr. 2006, 18:02

C'est bien ce que j'avais compris alors ;)

Donc pour ce que tu veux faire, il te faut la page des liens qui va ressembler à ceci :

Code : Tout sélectionner

<a href="javascript:;" onclick="javascript:void(window.open('openw.php?id=1','open','width=500,height=500,scrollbars=1));">lien 1</a><br /> <a href="javascript:;" onclick="javascript:void(window.open('openw.php?id=2','open','width=500,height=500,scrollbars=1));">lien 2</a>
Ensuite dans ta page openw.php, tu dois récupérer tes données en fonction du passage en paramètre. Pour interroger ta table, je te conseille d'aller voir ici : http://phpdebutant.org/article66.php, c'est très bien expliqué.

Une fois que tu sais comment récupérer des données de ta base, il te suffit de récupérer l'id grâce à $_GET['ta_variable'].

Donc dans ta requête tu auras quelque chose de ce genre :
$sql = 'SELECT * FROM ta_table WHERE id='.$_GET['id'];

Eléphant du PHP | 72 Messages

20 févr. 2006, 23:08

A Charabia,

Merci pour tout, je teste ça demain et je te redis si ça marche (de toute façon je te tiens au courant !). Comme tu as écris ça me parle un peu plus, ça ressemble un peu plus à ce que j'ai donc j'espère pouvoir m'en sortir.

Encore merci et à plus pour les news !
y a un début à tout !

Eléphant du PHP | 72 Messages

21 févr. 2006, 10:12

Charabia,

Y a un truc qui me chagrine, ça ne va pas plaire, mais je bosse sur dream, et le lien sur lequel je veux lier un popup est en région répétée, du coup ça change tout.

Code : Tout sélectionner

<td><div align="center"><font size="-1" face="Arial, Helvetica, sans-serif"><a href="javascript:;" onClick="MM_openBrWindow('popup.php?<?php echo $row_Recordset1['id_livre']; ?>=','popup','width=800,height=600')"><?php echo $row_Recordset1['descriptif']; ?></a></font></div></td>
Même dans ta requête je ne comprends pas trop :

Code : Tout sélectionner

$sql = 'SELECT * FROM ta_table WHERE id='.$_GET['id'];
les '. correspondent à quoi ? (avant $).

Ben encore merci pour ton aide, je suis actuellement en stage et je n'ai aucun support pour m'aider (ni personne) donc c'est un peu hard, du coup je cherche à gauche et à droite, mais les forums c'est vraiment bien pour trouver des explications.
y a un début à tout !

Mammouth du PHP | 19672 Messages

21 févr. 2006, 10:19

Tu devrais utiliser le bouton [php] au lieu de [code], la coloration syntaxique t'aurait indiqué une partie de la réponse :
$sql = 'SELECT * FROM ta_table WHERE id='.$_GET['id'];
Le point est en PHP l'opérateur de concaténation. Tu as donc une chaine de caractère : "SELECT .... id=" et ensuite une variable PHP "$_GET['id']" : pour coller les deux, on concatène et le point sert à ça.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

21 févr. 2006, 10:23

Houuuuuuu le mot à bannir :lol: Dream...? c'est quoi dream...lol Bon blague à part, revenons en à notre problème :)

Déjà pour commencer, pour ton lien je te recommande d'utiliser les CSS et non les <font>, c'est terminé depuis belle lurette :) Même dreamweaver te transforme les font en css maintenant.
Tu as de plus oublier de passer la variable ID après le "?". Tu dois donc avoir ceci à la place de ton code :
<td style="text-align: center;"><a href="javascript:;" onClick="MM_openBrWindow('popup.php?id=<?php echo $row_Recordset1['id_livre']; ?>','popup','width=800,height=600')"><?php echo $row_Recordset1['descriptif']; ?></a></td>
Remarques que j'ai viré ta font et rajouté le ID après le "?". Tu définiras le style pour les liens.

NB :
javascript:;
que tu vois est un bug dû au forum. tu devrais lire :

Code : Tout sélectionner

javascript:;

Maintenant pour
$sql = 'SELECT * FROM ta_table WHERE id='.$_GET['id'];
Le . avant $_GET['id'] sert à concaténer ta chaîne ;)

Eléphant du PHP | 72 Messages

21 févr. 2006, 12:30

Bah je dois être d'une nullité car ça ne marche pas ! J'ai pourtant bien modifier mon code, mais bon y a encore quelque chose qui ne colle pas !
j'ai ce message d'erreur :
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\ctredocumentation\popup.php on line 5
je remets le code pour la premiere page :
<td style="text-align: center;"><a href="javascript:;" onClick="MM_openBrWindow('popup.php?id=<?php echo $row_Recordset1['id_livre']; ?>','popup','width=800,height=600')"><?php echo $row_Recordset1['descriptif']; ?></a></td>
et celui de la page résultat :
mysql_select_db($database_connexion, $connexion);
$query_Recordset1 = "'SELECT * FROM tb_livre WHERE id='.$_GET['id_livre']";
$Recordset1 = mysql_query($query_Recordset1, $connexion) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
y a un début à tout !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

21 févr. 2006, 12:36

C'est normal que ça ne fonctionne pas :)

Dans l'URL tu as passé la variable id et tu tentes de récupérer la variable id_livre. Donc c'est logique qu'il ne trouve rien et te mette une erreur.

Tu dois donc choisir :
1. passer en paramètre id et récupérer avec $_GET['id']
popup.php?id=<?php echo $row_Recordset1['id']; etc...
ou
2. passer en paramètre id_livre et récupérer avec $_GET['id_livre']
popup.php?id_livre=<?php echo $row_Recordset1['id']; etc...
Et pour cette ligne :

$query_Recordset1 = "'SELECT * FROM tb_livre WHERE id='.$_GET['id_livre']";
mets
$query_Recordset1 = 'SELECT * FROM tb_livre WHERE id='.$_GET['id_livre'];

Eléphant du PHP | 72 Messages

21 févr. 2006, 15:12

Bon et ben y a encore quelque chose qui ne colle pas. Voilà j'ai corrigé mon code comme tu m'as montré, mais toujours des erreurs. Mais si je mets le code comme ceci (sans vouloir t'offenser, mais j'ai essayé dans tous les sens et ça ne marche pas !)
<td style="text-align: center;"><a href="javascript:;" onClick="MM_openBrWindow('popup.php?id=<?php echo $row_Recordset1['id_livre']; ?>','popup','width=800,height=600')"><?php echo $row_Recordset1['descriptif']; ?></a></td> 
et celui-ci pour la page résultat :
id=$_GET['id_livre'];
mysql_select_db($database_connexion, $connexion);
$query_Recordset1 = 'SELECT * FROM tb_livre WHERE id='.$_GET['id_livre'];
Bien sûr il m'affiche encore ce message d'erreur :
Parse error: parse error in c:\program files\easyphp1-8\www\ctredocumentation\popup.php on line 3

il faut bien que je récupère la variable id avant ? Je sents que j'ai tout faut !!! :cry:
Merci encore de m'accorder du temps !
y a un début à tout !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

21 févr. 2006, 15:16

Non tu as encore fait une erreur :)

Ton lien est ok.

Mais ta récupération est fausse.
id=$_GET['id_livre']; 
mysql_select_db($database_connexion, $connexion); 
$query_Recordset1 = 'SELECT * FROM tb_livre WHERE id='.$_GET['id_livre'];
doit être
$id=$_GET['id']; 
mysql_select_db($database_connexion, $connexion); 
$query_Recordset1 = 'SELECT * FROM tb_livre WHERE id='.$id; 

Eléphant du PHP | 72 Messages

21 févr. 2006, 15:31

J'ai corrigé mais j'ai maintenant ce message d'erreur :
Champ 'id' inconnu dans where clause

J'ai encore fait une boulette ?
y a un début à tout !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

21 févr. 2006, 15:32

Looooool !! Colles moi le code de ta page openw.php ici c'est plus simple :)

Dans ta base de données, le champs s'appelle bien id ?

Et si tu fais ça :
$query_Recordset1 = 'SELECT * FROM tb_livre WHERE id='.$_GET['id'];
Tu as quoi comme résultat ?

En fait je crois que tu te mélanges un peu les pinceaux dans tous ces paramètres.

Pour faire simple :
Dans ton SELECT, le id qui se trouve après le WHERE correspond au champ de ta base. Par contre le id qui se trouve dans $_GET['id'] est le paramètre que tu passes par l'url. Aussi, si tu passes id_livre à la place de id, ta requête deviendra :
$query_Recordset1 = 'SELECT * FROM tb_livre WHERE id='.$_GET['id_livre'];
C'est plus clair ?

Eléphant du PHP | 72 Messages

21 févr. 2006, 15:39

Bon avec correction ça marche pas. Mais mon champ se nomme id_livre j'aurais p'têtre pas du le nommer comme ça (car la table c'est tb_livre, oui je sais c'est pas très original !).

C'est vraiment très sympa de m'aider !
y a un début à tout !