Pb : display par javascript en php...
Fermé
Jean_2
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
-
22 oct. 2007 à 18:04
Jean_2 Messages postés 245 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 13 septembre 2013 - 23 oct. 2007 à 19:58
Jean_2 Messages postés 245 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 13 septembre 2013 - 23 oct. 2007 à 19:58
8 réponses
Jean_2
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
23 oct. 2007 à 11:56
23 oct. 2007 à 11:56
et c'est bien normal...
phédra60
Messages postés
30
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
24 mai 2008
17
23 oct. 2007 à 16:02
23 oct. 2007 à 16:02
Salut Jean_2!
Je vois un truc bizarre dans ton code:
Ca m'étonnerait que tu puisses mettre un echo dans une autre instruction, ici dans l'indice du tableau $données. J'ai pas très bien compris pourquoi t'as mis un echo, mais si $donnees est bien la variable contenant les données de ta base de données, tu dois utiliser le nom du champ de ta base de données contenant l'id que tu veux utiliser en indice du tableau $donnees. Par contre, je ne pense pas que niveau sécurité c'est très indiqué de mettre tes id présents dans ta base de données en clair dans ton site. Sauf si ce sont de simples entiers incrémentés à chaque occurence (ou ligne) de ta base de données. "echo" est une instruction qui sert à afficher des données à l'écran.
Tu as ici le manuel officiel du PHP:
https://www.php.net/
Tu cliques ensuite sur documentation, tu choisis la langue, et ensuite tu peux chercher des fonctions. Tu as un champ de recherche exprès pour. Tu peux aussi lire le manuel chapitre par chapitre.
Voici aussi un site qui m'a fait démarrer:
http://www.phpdebutant.org
Encore une fois, dis-moi si tout fonctionne dans ton script!
Vivien.
Je vois un truc bizarre dans ton code:
$donnees['echo id_dans_ma_table']
Ca m'étonnerait que tu puisses mettre un echo dans une autre instruction, ici dans l'indice du tableau $données. J'ai pas très bien compris pourquoi t'as mis un echo, mais si $donnees est bien la variable contenant les données de ta base de données, tu dois utiliser le nom du champ de ta base de données contenant l'id que tu veux utiliser en indice du tableau $donnees. Par contre, je ne pense pas que niveau sécurité c'est très indiqué de mettre tes id présents dans ta base de données en clair dans ton site. Sauf si ce sont de simples entiers incrémentés à chaque occurence (ou ligne) de ta base de données. "echo" est une instruction qui sert à afficher des données à l'écran.
Tu as ici le manuel officiel du PHP:
https://www.php.net/
Tu cliques ensuite sur documentation, tu choisis la langue, et ensuite tu peux chercher des fonctions. Tu as un champ de recherche exprès pour. Tu peux aussi lire le manuel chapitre par chapitre.
Voici aussi un site qui m'a fait démarrer:
http://www.phpdebutant.org
Encore une fois, dis-moi si tout fonctionne dans ton script!
Vivien.
phédra60
Messages postés
30
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
24 mai 2008
17
22 oct. 2007 à 18:51
22 oct. 2007 à 18:51
Salut Jean_2!
Tes div ont bien toutes des id différents? Sinon je crois que c'est de là dont vient le problème. "id" est censé ,n'être utilisé que pour un seul élément. Si elles ont toutes le même nom, ton script ne va voir que la première. De plus, si ton script fonctionnait et que tes div ont toutes le même id, à chaque fois toutes les lignes seraient affichées! Tu dois donc donner par exemple le nom "divid1" à ta première div, "divid2" à ta deuxième, etc...
Pour pouvoir formater plusieurs éléments en CSS, il me semble que id fonctionne, mais pour le javascript, id représente un identificateur pour un élément.
Voici un lien pour t'aider:
http://fr.selfhtml.org/css/formats/global.htm
Dis-moi si ça fonctionne!
Vivien.
Tes div ont bien toutes des id différents? Sinon je crois que c'est de là dont vient le problème. "id" est censé ,n'être utilisé que pour un seul élément. Si elles ont toutes le même nom, ton script ne va voir que la première. De plus, si ton script fonctionnait et que tes div ont toutes le même id, à chaque fois toutes les lignes seraient affichées! Tu dois donc donner par exemple le nom "divid1" à ta première div, "divid2" à ta deuxième, etc...
Pour pouvoir formater plusieurs éléments en CSS, il me semble que id fonctionne, mais pour le javascript, id représente un identificateur pour un élément.
Voici un lien pour t'aider:
http://fr.selfhtml.org/css/formats/global.htm
Dis-moi si ça fonctionne!
Vivien.
Jean_2
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
23 oct. 2007 à 11:06
23 oct. 2007 à 11:06
j'ai remplacé divid par echo id_dans_ma_table (afin que mon id de div soit celui de ma table)
par
<a href="javascript:visibilite('<?php $donnees['echo id_dans_ma_table'] ?>');">Accès</a>
<div id="<?php $donnees['echo id_dans_ma_table'] ?>" style="display:none;"><?php echo $donnees['autoroute'] . " sortie " . $donnees['sortie']; ?></div>
mais maintenant, plus rien ne marche...
par
<a href="javascript:visibilite('<?php $donnees['echo id_dans_ma_table'] ?>');">Accès</a>
<div id="<?php $donnees['echo id_dans_ma_table'] ?>" style="display:none;"><?php echo $donnees['autoroute'] . " sortie " . $donnees['sortie']; ?></div>
mais maintenant, plus rien ne marche...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Jean_2
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
23 oct. 2007 à 17:38
23 oct. 2007 à 17:38
oups, ah oui, j'avais oublié de le retirer (j'ai fais +ieurs tests...)
mais c'est pas ça qui fait foirer...
en fait, la fonction visibilite fonctionne (je l'ai trouvé sur le net et testé), avec ce code html :
<a href="javascript:visibilite('divid');">afficher/masquer</a><div id="divid" style="display:none;">contenu</div>
ce code je voudrai l'adapter pour que ça m'affiche un "contenu" spécifique (correspondant à la valeur d'un champ de ma table, "autoroute") pour chaque ligne de ma requete...
je dois donc remplacer divid par qqchose en rapport avec id_de_ma_table...
voilà merci pour votre aide
ps : je vous remet la fonction :
function visibilite(thingId)
{
var targetElement;
targetElement = document.getElementById(thingId) ;
if (targetElement.style.display == "none")
{targetElement.style.display = "" ;}
else
{targetElement.style.display = "none" ;}
}
mais c'est pas ça qui fait foirer...
en fait, la fonction visibilite fonctionne (je l'ai trouvé sur le net et testé), avec ce code html :
<a href="javascript:visibilite('divid');">afficher/masquer</a><div id="divid" style="display:none;">contenu</div>
ce code je voudrai l'adapter pour que ça m'affiche un "contenu" spécifique (correspondant à la valeur d'un champ de ma table, "autoroute") pour chaque ligne de ma requete...
je dois donc remplacer divid par qqchose en rapport avec id_de_ma_table...
voilà merci pour votre aide
ps : je vous remet la fonction :
function visibilite(thingId)
{
var targetElement;
targetElement = document.getElementById(thingId) ;
if (targetElement.style.display == "none")
{targetElement.style.display = "" ;}
else
{targetElement.style.display = "none" ;}
}
phédra60
Messages postés
30
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
24 mai 2008
17
23 oct. 2007 à 19:36
23 oct. 2007 à 19:36
Bon, Jean_2, j'te propose un script. Je pense que pour chaque div contenant "accès", lorsque tu cliques sur ce lien, ça t'affiche un contenu... Voici donc le script que je te propose:
Vivien.
<?php $sql="SELECT autoroute FROM maTable"; // $sql contient ta requête SQL. Attention à la casse (majuscules ou minuscules), ça peut être important selon ton SGBD. $req=mysql_query($sql) or die ('Erreur SQL! <br/> requete: '.$sql.'<br/> erreur: '.mysql_error()); // Ici tu exêcutes la requête sur ta BDD (ici sur MySQL) et là, et si elle échoue ( "or die" en anglais), elle effectue ce qui est entre les parenthèses de " or die()". mysql_error() permet d'afficher (en français si j'me souviens bien!) l'erreur. C'est une aide vraiment précieuse. //Si tout fonctionne comme il faut, alors le résultat de la requête est mis dans la variable $req. //Ensuite tu fais ta boucle: while ($donnees=mysql_fetch_array($req)) // mysql_fetch_array est ce que l'on appelle un "curseur". C'est comme un curseur graphique, comme celui de la souris par exemple. Celui-ci se positionne sur la première ligne du tableau au premier appel, puis avance d'une ligne à chaque appel (sauf si tu lui demandes autrechose). { //Et là (si j'ai bien compris ce que tu voulais faire), tu affiches une div, avec l'identifiant de ton champ en id de la div. Bon, si tes identifiants n'ont aucune signification particulière (informations personnelles d'un utilisateurs, ou informations confidentielle), je ne pense pas que ça pose un problème. Faudrait voir avec les autres utilisateurs qui s'y connaissent en sécurité. Au pire, tu peux rajouter un champ en clé primaire, champ contenant un integer, avec incrémentation automatique. echo "<a href='javascript:visibilite(\"$donnees['echo id_dans_ma_table']\");'>Accès</a>"; echo "<div id='".$donnees['champ_identifiant']."' style='display:none;'>"; echo $donnees['autoroute']; // Accents à éviter en indces de tableau et noms de champs. echo "</div>"; } ?> Ta fonction javascript: function visibilite(thingId) { var targetElement; targetElement = document.getElementById(thingId) ; if (targetElement.style.display == "none") { targetElement.style.display = "inline"; // ou block, ça dépend... Ca marchera ptète avec ça. } else { targetElement.style.display = "none" ; } }
Vivien.
Jean_2
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
23 oct. 2007 à 19:44
23 oct. 2007 à 19:44
merci, je teste de suite...
Jean_2
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
23 oct. 2007 à 19:58
23 oct. 2007 à 19:58
en fait, chez moi, ma requete fonctionne et mon soucis, c'est juste l'affichage...
j'ai donc collé tes echo (en rajoutant ou retirant quelques éléments en gras... (PS: le echo en gras, je l'ai retiré. j'ai bien eu raison ???)
j'ai mis 2 fois mon champ identifiant normal aussi ? oui je penses...
{
<?php> echo "<a href='javascript:visibilite(\"$donnees['echo mon_champ_identifiant']\");'>Accès</a>";
echo "<div id='".$donnees['mon_champ_identifiant']."' style='display:none;'>";
echo $donnees['autoroute'];
echo "</div>";
}
?>
}
la page ne s'affiche plus :
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\...monsite...
pourtant, je suis sur que la solution est toute proche...
merci pour ton aide..
j'ai donc collé tes echo (en rajoutant ou retirant quelques éléments en gras... (PS: le echo en gras, je l'ai retiré. j'ai bien eu raison ???)
j'ai mis 2 fois mon champ identifiant normal aussi ? oui je penses...
{
<?php> echo "<a href='javascript:visibilite(\"$donnees['echo mon_champ_identifiant']\");'>Accès</a>";
echo "<div id='".$donnees['mon_champ_identifiant']."' style='display:none;'>";
echo $donnees['autoroute'];
echo "</div>";
}
?>
}
la page ne s'affiche plus :
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\...monsite...
pourtant, je suis sur que la solution est toute proche...
merci pour ton aide..