Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

jquery et thickbox

4 réponses
Avatar
karpediem
Bonjour @ toutezéatous,

Je suis en train de développer une application avec jquery et voila le 1er problème que je rencontre :

J'ai une page avec une liste de livres dans un tableau livres.php. Pour avoir plus d'informations sur 1 livre en particulier, j'utilise thickbox avec un appel à une page detail.php. Le pb que je rencontre c'est que je ne sais pas comment envoyer mon information "identifiant_livre" par $_GET (j'ai vu un autre message avec un $_POST).

Voici globalement mon code (je vous le fais en simplifié) :

Dans livres.php
// Une requete pour récupérer mes livres :

$sql = "SELECT * FROM livres";
mysql_select_db($sql_bdd, $bdd_link) or die(mysql_error());
$result = mysql_query($sql, $bdd_link) or die(mysql_error());
$nb_pg = mysql_num_rows($result) ;
if ( $nb_pg == 0) {
$_POST['mess'] ='que dalle !!.';
}
else { // génère la liste
$no_pg = 1 ;
while ( $recherche = mysql_fetch_array($result) )
{
echo $no_pg.'/'.$nb_pg.'<br />' ;
echo ($recherche['nom_livre'] != '') ? $recherche['nom_livre'].'<br />' : '' ;
$id = $recherche['id_livre'];

// je génère un lien vers le détail => appel de thickbox conformément à la doc.
echo '<br /><a href="detail.php?keepThis=true&TB_iframe=true&height=300&width=500&id_livre='.$id.'" title="titre" class="thickbox">Detail</a>';
// ça ne fonctionne pas, enfin si, la thickbox s'affiche, mais le $_GET est vide dans detail.php

$no_pg++ ;
}
}

Dans détail.php

Il n'y a rien de sorcier, juste une requete avec un SELECT * FROM livre WHERE id_livre = $_GET['id_livre']
Si je mets une valeur en dure à $_GET['id_livre'], j'obtiens bien ce que je veux.
Lorsque je demande print_r($_GET) c'est vide

Quelqu'un aurait-il une idée sur comment faire pour passer ma valeur à thickbox ?

Merci et bonne année @ toutezéatous

4 réponses

Avatar
Bruno Desthuilliers
karpediem a écrit :
Bonjour @ toutezéatous,

Je suis en train de développer une application avec jquery et voila le 1er
problème que je rencontre :

J'ai une page avec une liste de livres dans un tableau livres.php. Pour avoir
plus d'informations sur 1 livre en particulier, j'utilise thickbox



Pas forcément le meilleur choix. Tu devrais regarder du côté de nyromodal.

avec un appel
à une page detail.php. Le pb que je rencontre c'est que je ne sais pas comment
envoyer mon information "identifiant_livre" par $_GET (j'ai vu un autre message
avec un $_POST).

Voici globalement mon code (je vous le fais en simplifié) :

Dans livres.php
// Une requete pour récupérer mes livres :

$sql = "SELECT * FROM livres";
mysql_select_db($sql_bdd, $bdd_link) or die(mysql_error());
$result = mysql_query($sql, $bdd_link) or die(mysql_error());
$nb_pg = mysql_num_rows($result) ;
if ( $nb_pg == 0) {
$_POST['mess'] ='que dalle !!.';
}
else { // génère la liste
$no_pg = 1 ;
while ( $recherche = mysql_fetch_array($result) )
{
echo $no_pg.'/'.$nb_pg.'<br />' ;
echo ($recherche['nom_livre'] != '') ? $recherche['nom_livre'].'<br />' : '' ;
$id = $recherche['id_livre'];

// je génère un lien vers le détail => appel de thickbox conformément à la
doc.
echo '<br /><a
href="detail.php?keepThis=true&TB_iframe=true&height00&widthP0&id_livre='.$id.'"
title="titre" class="thickbox">Detail</a>';
// ça ne fonctionne pas, enfin si, la thickbox s'affiche, mais le $_GET est
vide dans detail.php



Essaie en mettant l'id_livre avant le TB_xxx. Je ne suis plus très sûr
mais il me semble me souvenir que thickbox bouffe les paramètres GET
situés après le premier TB_xxx.

Anyway: ce truc est codé avec les pieds, c'est une perte de temps.
Avatar
karpediem
Bruno Desthuilliers a écrit le 05/01/2009 à 09h17 :
karpediem a écrit :
Bonjour @ toutezéatous,

Je suis en train de développer une application avec jquery et voila le
1er
problème que je rencontre :

J'ai une page avec une liste de livres dans un tableau livres.php. Pour avoir
plus d'informations sur 1 livre en particulier, j'utilise thickbox




Pas forcément le meilleur choix. Tu devrais regarder du
côté de nyromodal.

avec un appel
à une page detail.php. Le pb que je rencontre c'est que je ne sais pas
comment
envoyer mon information "identifiant_livre" par $_GET (j'ai vu un
autre message
avec un $_POST).

Voici globalement mon code (je vous le fais en simplifié) :

Dans livres.php
// Une requete pour récupérer mes livres :

$sql = "SELECT * FROM livres";
mysql_select_db($sql_bdd, $bdd_link) or die(mysql_error());
$result = mysql_query($sql, $bdd_link) or die(mysql_error());
$nb_pg = mysql_num_rows($result) ;
if ( $nb_pg == 0) {
$_POST['mess'] ='que dalle !!.';
}
else { // génère la liste
$no_pg = 1 ;
while ( $recherche = mysql_fetch_array($result) )
{
echo $no_pg.'/'.$nb_pg.'<br />' ;
echo ($recherche['nom_livre'] != '') ? $recherche['nom_livre'].'<br />'
: '' ;
$id = $recherche['id_livre'];

// je génère un lien vers le détail => appel de
thickbox conformément à la
doc.
echo '<br /><a
href="detail.php?keepThis=true&TB_iframe=true&height00&widthP0&id_livre='.$id.'"
title="titre" class="thickbox">Detail</a>';
// ça ne fonctionne pas, enfin si, la thickbox s'affiche, mais le $_GET
est
vide dans detail.php




Essaie en mettant l'id_livre avant le TB_xxx. Je ne suis plus très
sûr
mais il me semble me souvenir que thickbox bouffe les paramètres GET
situés après le premier TB_xxx.

Anyway: ce truc est codé avec les pieds, c'est une perte de temps.


Bonjour Bruno et merci pour cette première réponse,

Personnellement, je n'ai aucune préférence particulière, bien au contraire ;o)))

Si tu me dis qu'il y a mieux, moi je ne demande qu'à tester ! En fait j'ai choisi thickbox parce que ça semblait répondre à mon besoin et aussi par ignorance des autres solutions car je débute avec jquery.

En fait dans ma "boîte à détail", je souhaiterai juste afficher le détail du livre (injecter le résultat d'une requête php) et aussi un p'tit formulaire tout simple avec 2 à 3 champs (dont un textarea) qui viendrait alimenter une table mysql...

Je vais aller voir nyromodal pour vérifier que ça le fait aussi et je reviens te raconter ;o)) De toute façon, quitte à commencer avec un plugin, autant ne pas perdre de temps et prendre le meilleur dès le départ ;o))

A bientôt
Avatar
karpediem
karpediem a écrit le 05/01/2009 à 19h14 :
Bruno Desthuilliers a écrit le 05/01/2009 à 09h17 :
karpediem a écrit :
Bonjour @ toutezéatous,

Je suis en train de développer une application avec jquery et voila le
1er
problème que je rencontre :

J'ai une page avec une liste de livres dans un tableau livres.php. Pour avoir
plus d'informations sur 1 livre en particulier, j'utilise thickbox





Pas forcément le meilleur choix. Tu devrais regarder du
côté de nyromodal.

avec un appel
à une page detail.php. Le pb que je rencontre c'est que je ne sais pas
comment
envoyer mon information "identifiant_livre" par $_GET (j'ai vu un
autre message
avec un $_POST).

Voici globalement mon code (je vous le fais en simplifié) :

Dans livres.php
// Une requete pour récupérer mes livres :

$sql = "SELECT * FROM livres";
mysql_select_db($sql_bdd, $bdd_link) or die(mysql_error());
$result = mysql_query($sql, $bdd_link) or die(mysql_error());
$nb_pg = mysql_num_rows($result) ;
if ( $nb_pg == 0) {
$_POST['mess'] ='que dalle !!.';
}
else { // génère la liste
$no_pg = 1 ;
while ( $recherche = mysql_fetch_array($result) )
{
echo $no_pg.'/'.$nb_pg.'<br />' ;
echo ($recherche['nom_livre'] != '') ? $recherche['nom_livre'].'<br />'
: '' ;
$id = $recherche['id_livre'];

// je génère un lien vers le détail => appel de
thickbox conformément à la
doc.
echo '<br /><a
href="detail.php?keepThis=true&TB_iframe=true&height00&widthP0&id_livre='.$id.'"
title="titre" class="thickbox">Detail</a>';
// ça ne fonctionne pas, enfin si, la thickbox s'affiche, mais le
$_GET
est
vide dans detail.php





Essaie en mettant l'id_livre avant le TB_xxx. Je ne suis plus très
sûr
mais il me semble me souvenir que thickbox bouffe les paramètres GET
situés après le premier TB_xxx.

Anyway: ce truc est codé avec les pieds, c'est une perte de temps.



Bonjour Bruno et merci pour cette première réponse,

Personnellement, je n'ai aucune préférence particulière,
bien au contraire ;o)))

Si tu me dis qu'il y a mieux, moi je ne demande qu'à tester ! En fait
j'ai choisi thickbox parce que ça semblait répondre à mon
besoin et aussi par ignorance des autres solutions car je débute avec
jquery.

En fait dans ma "boîte à détail", je souhaiterai
juste afficher le détail du livre (injecter le résultat d'une
requête php) et aussi un p'tit formulaire tout simple avec 2 à 3
champs (dont un textarea) qui viendrait alimenter une table mysql...

Je vais aller voir nyromodal pour vérifier que ça le fait aussi
et je reviens te raconter ;o)) De toute façon, quitte à commencer
avec un plugin, autant ne pas perdre de temps et prendre le meilleur dès
le départ ;o))

A bientôt


Re-bonjour, c'est encore moi ;o)))

Je suis allée voir la doc de nyromodal, ça a l'air super fort ! en plus, ça fait du bien d'avoir des développeurs qui parlent français, ça aide à comprendre la doc, vu mon niveau en anglais ;o))

Puisque je t'ai sous la main, j'aimerai bien te demander ton avis sur 2 autres points :

- Le 1er : j'ai besoin d'avoir un zoom image au rollover d'une vignette. J'ai installé tooltips... Ne penses-tu pas que c'est un peu démesuré pour un simple zoom ? Je précise que je suis une truffe en jquery (pas qu'en anglais ;o)), j'aurai donc du mal à le faire avec mes mimines (d'où l'utilisation d'un plugin), mais j'imagine qu'un $(img .vignette).hover(function() devrait le faire non ?

- Mon 2eme point, c'est que j'ai mis dans ma page une gestion d'onglets. J'ai 2 onglets : un pour "ma selection de livres" et un autre pour "ma selection de dvd".
En ce qui concerne l'affichage, j'ai réussi à faire un truc qui tient à peu près la route grace aux différents tutos que j'ai lus. En revanche, j'ai du mal avec la gestion du contenu car on ne doit afficher dans la zone prévue à cet effet (200px par 200px) qu'1 seule et unique valeur de sélection (enregistrement) à la fois, avec des flèches pour aller au suivant et au précédent...

Je ne sais pas si je m'y prends correctement, en tout cas, mon raisonnement ne me semble pas très optimal...

Voila ce que je fais :
- Si l'utilisateur est identifié, on a son identifiant (son mail) et sa sélection s'affiche => au load, une requête SELECT sur la table "mes_livres" et une autre sur la table "mes_dvd" avec l'email en parametre et j'obtiens la liste de ses sélections. Au load, je prends le 1er.

$("div#onglet_1").load("affiche_selection.php?selection=livre&sel_livre=1") ;
$("div#onglet_2").load("affiche_annonce.php?selection=dvd&sel_dvd=1") ;

$(function(){
$("#onglets .onglet").not(":first").hide();
$("#onglets li:first").addClass("actif");
$("#onglets ul a").click(function(){
$_GET['selection'] = $(this).html() ; // pour récupérer le libellé de l'onglet ?
$("#onglets ul a").parent("li").removeClass("actif");
$("#onglets .onglet").hide();
$(this.hash).show();
$(this).blur().parent("li").addClass("actif");
return false;
});
});

Sauf que comme on n'affiche qu'une sélection à la fois, il faudrait que je gère des boutons "sélection suivante" et "sélection précédente" (bien évidemment si le nombre de sélections sauvegardées le permet)...

La seule solution que je vois pour l'instant c'est de créer 2 images, une qui irait au "+1" et l'autre au "-1" avec une fonction définie au click de ces images de navigation qui utliserait la même requête que au load mais avec le n° de sélection qui va bien avec un truc du genre :

$("im.nav_prec").click(function(){
//là je ne sais pas encore comment faire, mais il faudrait que je rappelle la même fonction que au load avec en GET une valeur +/-1

N'y aurait-il pas un moyen pour ne pas être obligé de renvoyer une requête PHP pour récupérer l'enregistrement suivant/précédent à chaque fois en mettant des ancres ou je ne sais quoi...

J'ai un peu regardé les plugins de type tableau, mais je crains de mettre en place une usine à gaz pour pas grand chose... Et puis l'enregistrement à visualiser n'est pas sous forme de "ligne de tableau" mais dans un espace carré...

Aurais-tu une piste plus optimale sur le comment faire et quoi mettre en oeuvre ?

Encore un grand MERCI à tous ceux qui ont eu le courage de me lire ;o)
Avatar
karpediem
karpediem a écrit le 05/01/2009 à 20h17 :
karpediem a écrit le 05/01/2009 à 19h14 :
Bruno Desthuilliers a écrit le 05/01/2009 à 09h17 :
karpediem a écrit :
Bonjour @ toutezéatous,

Je suis en train de développer une application avec jquery et voila
le
1er
problème que je rencontre :

J'ai une page avec une liste de livres dans un tableau livres.php. Pour
avoir
plus d'informations sur 1 livre en particulier, j'utilise thickbox






Pas forcément le meilleur choix. Tu devrais regarder du
côté de nyromodal.

avec un appel
à une page detail.php. Le pb que je rencontre c'est que je ne sais
pas
comment
envoyer mon information "identifiant_livre" par $_GET (j'ai vu un
autre message
avec un $_POST).

Voici globalement mon code (je vous le fais en simplifié) :

Dans livres.php
// Une requete pour récupérer mes livres :

$sql = "SELECT * FROM livres";
mysql_select_db($sql_bdd, $bdd_link) or die(mysql_error());
$result = mysql_query($sql, $bdd_link) or die(mysql_error());
$nb_pg = mysql_num_rows($result) ;
if ( $nb_pg == 0) {
$_POST['mess'] ='que dalle !!.';
}
else { // génère la liste
$no_pg = 1 ;
while ( $recherche = mysql_fetch_array($result) )
{
echo $no_pg.'/'.$nb_pg.'<br />' ;
echo ($recherche['nom_livre'] != '') ? $recherche['nom_livre'].'<br
/>'
: '' ;
$id = $recherche['id_livre'];

// je génère un lien vers le détail => appel de
thickbox conformément à la
doc.
echo '<br /><a
href="detail.php?keepThis=true&TB_iframe=true&height00&widthP0&id_livre='.$id.'"
title="titre" class="thickbox">Detail</a>';
// ça ne fonctionne pas, enfin si, la thickbox s'affiche, mais le
$_GET
est
vide dans detail.php






Essaie en mettant l'id_livre avant le TB_xxx. Je ne suis plus très
sûr
mais il me semble me souvenir que thickbox bouffe les paramètres GET
situés après le premier TB_xxx.

Anyway: ce truc est codé avec les pieds, c'est une perte de temps.




Bonjour Bruno et merci pour cette première réponse,

Personnellement, je n'ai aucune préférence particulière,
bien au contraire ;o)))

Si tu me dis qu'il y a mieux, moi je ne demande qu'à tester ! En fait
j'ai choisi thickbox parce que ça semblait répondre à mon
besoin et aussi par ignorance des autres solutions car je débute avec
jquery.

En fait dans ma "boîte à détail", je souhaiterai
juste afficher le détail du livre (injecter le résultat d'une
requête php) et aussi un p'tit formulaire tout simple avec 2 à 3
champs (dont un textarea) qui viendrait alimenter une table mysql...

Je vais aller voir nyromodal pour vérifier que ça le fait aussi
et je reviens te raconter ;o)) De toute façon, quitte à
commencer
avec un plugin, autant ne pas perdre de temps et prendre le meilleur
dès
le départ ;o))

A bientôt



Re-bonjour, c'est encore moi ;o)))

Je suis allée voir la doc de nyromodal, ça a l'air super fort !
en plus, ça fait du bien d'avoir des développeurs qui parlent
français, ça aide à comprendre la doc, vu mon niveau en
anglais ;o))

Puisque je t'ai sous la main, j'aimerai bien te demander ton avis sur 2 autres
points :

- Le 1er : j'ai besoin d'avoir un zoom image au rollover d'une vignette. J'ai
installé tooltips... Ne penses-tu pas que c'est un peu
démesuré pour un simple zoom ? Je précise que je suis une
truffe en jquery (pas qu'en anglais ;o)), j'aurai donc du mal à le faire
avec mes mimines (d'où l'utilisation d'un plugin), mais j'imagine qu'un
$(img .vignette).hover(function() devrait le faire non ?

- Mon 2eme point, c'est que j'ai mis dans ma page une gestion d'onglets. J'ai 2
onglets : un pour "ma selection de livres" et un autre pour "ma
selection de dvd".
En ce qui concerne l'affichage, j'ai réussi à faire un truc qui
tient à peu près la route grace aux différents tutos que
j'ai lus. En revanche, j'ai du mal avec la gestion du contenu car on ne doit
afficher dans la zone prévue à cet effet (200px par 200px) qu'1
seule et unique valeur de sélection (enregistrement) à la fois,
avec des flèches pour aller au suivant et au précédent...

Je ne sais pas si je m'y prends correctement, en tout cas, mon raisonnement ne
me semble pas très optimal...

Voila ce que je fais :
- Si l'utilisateur est identifié, on a son identifiant (son mail) et sa
sélection s'affiche => au load, une requête SELECT sur la table
"mes_livres" et une autre sur la table "mes_dvd" avec
l'email en parametre et j'obtiens la liste de ses sélections. Au load,
je prends le 1er.

$("div#onglet_1").load("affiche_selection.php?selection=livre&sel_livre=1")
;
$("div#onglet_2").load("affiche_annonce.php?selection=dvd&sel_dvd=1")
;

$(function(){
$("#onglets .onglet").not(":first").hide();
$("#onglets li:first").addClass("actif");
$("#onglets ul a").click(function(){
$_GET['selection'] = $(this).html() ; // pour récupérer le
libellé de l'onglet ?
$("#onglets ul
a").parent("li").removeClass("actif");
$("#onglets .onglet").hide();
$(this.hash).show();
$(this).blur().parent("li").addClass("actif");
return false;
});
});

Sauf que comme on n'affiche qu'une sélection à la fois, il
faudrait que je gère des boutons "sélection suivante"
et "sélection précédente" (bien
évidemment si le nombre de sélections sauvegardées le
permet)...

La seule solution que je vois pour l'instant c'est de créer 2 images,
une qui irait au "+1" et l'autre au "-1" avec une fonction
définie au click de ces images de navigation qui utliserait la
même requête que au load mais avec le n° de sélection
qui va bien avec un truc du genre :

$("im.nav_prec").click(function(){
//là je ne sais pas encore comment faire, mais il faudrait que je
rappelle la même fonction que au load avec en GET une valeur +/-1

N'y aurait-il pas un moyen pour ne pas être obligé de renvoyer une
requête PHP pour récupérer l'enregistrement
suivant/précédent à chaque fois en mettant des ancres ou
je ne sais quoi...

J'ai un peu regardé les plugins de type tableau, mais je crains de
mettre en place une usine à gaz pour pas grand chose... Et puis
l'enregistrement à visualiser n'est pas sous forme de "ligne de
tableau" mais dans un espace carré...

Aurais-tu une piste plus optimale sur le comment faire et quoi mettre en oeuvre
?

Encore un grand MERCI à tous ceux qui ont eu le courage de me lire ;o)


Bonjour @ toutezéatoutes,

Après réflexion, je me rends compte que je sous-estime la puissance de jquery et que je continue à raisonner comme un développeur basique de php ;o))

Je vais poster mon pb sur un nouveau message car c'est un sujet différent de celui-là et le raisonner "pur jquery".

Merci pour cet échange, ça m'a fait avancer dans ma réflexion et puis on se sens moins seule au monde ;o))

A bientôt et encore MERCI !