IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Récupérer une variable


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Par défaut [PHP-JS] Récupérer une variable
    Bonjour.

    Sur une page j'ai 2 div.
    Le 1er div contient une liste de films. Quand je sélectionne un film, j'appelle une fonction javascript, j'écris le titre du film dans un input text, je cache le 1er div et j'affiche le 2me.

    Le problème est que $titre est toujour le dernier titre de ma liste quand j'affiche le 2me div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <script type="text/javascript">
    function hide(identifiant,identifiant1,id) {
    document.ajdvd.titre.value=id;
            if (document.getElementById(identifiant).className == "hidden") {
                document.getElementById(identifiant).className = "visible";
                document.getElementById(identifiant1).className = "hidden";
            } 
            else if (document.getElementById(identifiant).className == "visible") {
                document.getElementById(identifiant).className = "hidden";
                document.getElementById(identifiant1).className = "visible";
            } 
    }
    </script>
    <?php
    if (isset($_POST['titre'])) 	$titre=$_POST['titre'];
    else $titre="";
    echo "<div id='div1' class='visible'>
    	<table border='1'>";
    	$sql = mysql_query("SELECT id_titre, titre FROM titres ORDER BY titre");
    	$nombreligne = mysql_num_rows($sql);
    	for ($i = 0; $i < $nombreligne; $i++) { 
    		$idtitre = mysql_result($sql,$i,"id_titre");
    		$titre = stripslashes(htmlentities(trim(mysql_result($sql,$i,"titre"))));
    		$rsql = mysql_query("SELECT titres_realisateurs.*, realisateurs.* FROM titres_realisateurs, realisateurs WHERE realisateurs.id_realisateur = titres_realisateurs.id_realisateur AND titres_realisateurs.id_titre = $idtitre AND titres_realisateurs.rang_realisateur = 1");
    		if (mysql_num_rows($rsql) > 0){
    			$res = mysql_fetch_array($rsql);
    			$prenom = $res['prenom_real'];
    			$nom = $res['nom_real'];
    			echo "<tr><td>";?><a href="#" style="text-decoration:none" onclick="hide('div1','div2','<?php echo $titre;?>')"><?php echo "$titre</a> de $prenom $nom</td></tr>";
    		}
    	}
    	echo "</table>";
    echo "</div>";
    echo "<div id='div2' style='background-color:#00CCFF; margin-left:1%; width:98%' class='hidden'>";
    	echo "<form name='dvd' method='POST' action='index.php?page=ajout_dvd'>";
    	echo "<table border='1' style='font-size:11px' cellpadding='0' cellspacing='0' width='100%'>";
    		echo "<tr height='40px'>
    			<td align='center' style='font-size:18px;' colspan = '8'>";
    				  echo "$titre </td>
    		</tr>
    	</table>
    	</form>
    	</div>";
    ?>
    <form name="ajdvd" method="POST" action="index.php?page=ajout_dvd">
    <input type='text' name='titre' value=''> 
    </form>
    En espérant que je suis clair.
    Merci de me dire où est mon problème.

  2. #2
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Ouh la....

    Balancer un tas de requetes en boucle...
    C'est pas très clean surtout pour récupérer un prenom et un nom de réalisateur.

    Tu n'a jamais entendu parler des jointures ?

    Change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = mysql_query("SELECT id_titre, titre FROM titres ORDER BY titre");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $sql = mysql_query("SELECT titres.id_titre, titres.titre, realisateurs.prenom_real, realisateurs.nom_real FROM titres 
    JOIN titres_realisateurs ON titres_realisateurs.id_titre = titres.id_titre AND titres_realisateurs.rang_realisateur = 1
    JOIN realisateurs ON realisateurs.id_realisateur = titres_realisateurs.id_realisateur
    ORDER BY titre");
     
    $nombreligne = mysql_num_rows($sql);
     
    	for ($i = 0; $i < $nombreligne; $i++) {
     
            $idtitre = mysql_result($sql,$i,"id_titre");
            $titre = mysql_result($sql,$i,"titre");
            $prenom = mysql_result($sql,$i,"prenom_real");
            $nom = mysql_result($sql,$i,"nom_real");
     
            echo "<tr><td>";?><a href="#" style="text-decoration:none" onclick="hide('div1','div2','<?php echo $titre;?>')"><?php echo "$titre</a> de $prenom $nom</td></tr>";
    		}
    Ainsi tu auras tout ce que tu souhaites dans ta requete et cela evite d'éxécuter une requete

    @+
    cadou

  3. #3
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Par défaut
    Ca ok, mais mon problème n'est pas là.

    Dans le div id='div2', dans le tableau, $titre est toujours le dernier enregistrement des films affichés dans le div id='div1'

  4. #4
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Re,

    Ben oui, c'est tout a fait normal, tu est en dehors de ta boucle...

    Regarde bien ici tu demarres la boucle qui consiste a lire tous les titres de film

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($i = 0; $i < $nombreligne; $i++) {
    Et ici la boucle se termine, tous les films remontés ont été parcouru

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    }
    echo "</table>";
    Donc la valeur de $titre dans le tableau div2 est la derniere valeur qui a été attribué a cette variable, en l'occurence la valeur de la dernière ligne du tableau, donc le dernier titre

    Tu voulais quoi comme valeur en fait ?

    @+
    cadou

  5. #5
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Par défaut
    J'avais oublié : j'ai une boucle imbriqué car si le réalisateur n'est pas entré je ne récupère pas le titre du film.

    Ceci dit je veux récupérer la valeur de $titre pour mon 2 div quand je clique sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<tr><td>";?><a href="#" style="text-decoration:none" onclick="hide('div1','div2','<?php echo $titre;?>')"><?php echo "$titre</a> de $prenom $nom</td></tr>";
    Quand j'appelle la fonction javascript j'ai bien la valeur dans l'input text mais je la perds quand mon div 2 s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "$titre </td>"; 
    ici $titre est vide
    Sinon je pensais plutot réafficher ma page en passant par $_GET et j'aurais quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<tr><td>";?><a href="index.php?page=ajout_dvd&amp;titre=<?php echo $titre;?>"><?php echo "$titre</a> de $prenom $nom</td></tr>";
    et en haut de ma page : if (isset($_GET['titre'])) $titre= $_GET['titre'];

    J'ai pas essayé, est ce que ça peut marcher?

  6. #6
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Ah ben oui c'est plus clair, c'est un probleme de javascript.

    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<tr height='40px'>
    <td align='center' style='font-size:18px;' colspan = '8'>";
    echo "$titre </td></tr></table></form></div>";
    Tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<tr height='40px'>
    <td align='center' style='font-size:18px;' colspan = '8'>";
    echo "<div id=\"title\">$titre</div> </td></tr></table></form></div>";
    Et ensuite dans ton script javascript tu rajoutes un élément qui demande de remplir la DIV title comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    <script type="text/javascript">
    function hide(identifiant,identifiant1,id) {
    document.ajdvd.titre.value=id;
     
    document.title.innerHTML = id;
     
            if (document.getElementById(identifiant).className == "hidden") {
                document.getElementById(identifiant).className = "visible";
                document.getElementById(identifiant1).className = "hidden";
            } 
            else if (document.getElementById(identifiant).className == "visible") {
                document.getElementById(identifiant).className = "hidden";
                document.getElementById(identifiant1).className = "visible";
            } 
    }
    </script>
    Maintenant si document.title.innerHTML = id; ne fonctionne pas, essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GetId("title").innerHTML = id;
    Je pense que cela devrait résoudre ton probleme
    En tout cas pas la peine de recharger la page, javascript peut résoudre ton probleme


    @+

Discussions similaires

  1. [PHP-JS] Récupérer une variable Javascript en PHP
    Par Gamil dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2007, 13h40
  2. Réponses: 1
    Dernier message: 09/11/2007, 01h19
  3. [PHP-JS] Récupérer une variable javascript
    Par -Neo- dans le forum Langage
    Réponses: 1
    Dernier message: 01/06/2007, 16h52
  4. Réponses: 2
    Dernier message: 05/05/2007, 23h11
  5. [PHP-JS] Récupérer une variable php dans un fichier javascript
    Par zoom61 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/11/2006, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo