Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2007, 13h45   #1
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
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 :
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.
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 14h09   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
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 :
1
2
 
$sql = mysql_query("SELECT id_titre, titre FROM titres ORDER BY titre");
par
Code :
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
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 14h14   #3
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
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'
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 14h48   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
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 :
1
2
 
for ($i = 0; $i < $nombreligne; $i++) {
Et ici la boucle se termine, tous les films remontés ont été parcouru

Code :
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
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 16h02   #5
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
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 :
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 :
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 :
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?
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 16h23   #6
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Ah ben oui c'est plus clair, c'est un probleme de javascript.

A la place de
Code :
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 :
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 :
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 :
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


@+
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 17h16   #7
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
J'ai fait ce que tu propose mais ça marche toujours pas !

quand j'affiche la source après avoir cliqué voilà le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<div id='div1' class='visible'>
		<table border='1'><tr><td><a href="#" style="text-decoration:none" onclick="hide('div1','div2','Amadeus')">Amadeus</a> de Martin Scorsese
					</td></tr><tr><td><a href="#" style="text-decoration:none" onclick="hide('div1','div2','Les ripoux')">Les ripoux</a> de Claude Zidi
					</td></tr>		</table>
		</div>
 
<form name="ajdvd" method="POST" action="index.php?page=ajout_dvd">
<input type='text' name='titre' value=''>
</form>		
<div id='div2' style='background-color:#00CCFF; margin-left:1%; width:98%' class='hidden'><form name='dvd' method='POST' action='index.php?page=ajout_dvd'><table border='1' style='font-size:11px' cellpadding='0' cellspacing='0' width='100%'><tr height='40px'>
			<td align='center' style='font-size:18px;' colspan = '8'><div id="title">Les ripoux</div>  </td>
		</tr>
donc ici j'ai cliqué sur le titre Amadeus et il me renvoie les ripoux
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h29.


 
 
 
 
Partenaires

Hébergement Web