Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 02/07/2011, 10h02   #1
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Par défaut Transmettre variable sur une page?

Bonjour,
J'ai une page php qui affiche entre deux balises html, le résultat d'une requête :
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
 
<div class="Article">
<?php
// on se connecte à MySQL
$db = mysql_connect('ADRESS', 'USER', 'PASSWORD');
 
// on sélectionne la base
mysql_select_db('test',$db);
 
// on crée la requête SQL
$sql = 'SELECT titre,contenu FROM Test';
 
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
    echo $data['titre'].' '.$data['contenu'];
    }
 
// on ferme la connexion à mysql
mysql_close();
?> 
</div>
Reste du code HTML...
Ca fonctionne plutôt pas mal !
Mais je voudrais créer un lien vers une autre page et je dois transmettre à cette nouvelle page, le contenu de la variable $data['contenu']
Comment puis-je faire?

Je pense que ce n'est pas compliqué...
Merci de votre aide,
Cordialement,
Jojo
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 10h38   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
je vois au moins 3 méthodes :

1/ enregistrer dans une session (la variable sera alors accessible de partout, tant que la session est ouverte)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php session_start(); // OBLIGATOIRE (tout en haut de page)
// ... (blablabla ... requete) ...
// enregistrement en session
$_SESSION['contenu-a-transmettre'] = $data['contenu'];
// lien vers la page
?>
	<a href="la-page.php">aller ici</a>
 
----- la-page.php : -----
<?php session_start(); // OBLIGATOIRE (tout en haut de page)
// recuperation :
$contenu_recup = $_SESSION['contenu-a-transmettre'];
// [...] suite du traitement
?>
2/ envoyer par $_GET (dans l'URL) :
(ATTENTION cependant a ne pas transmettre de données sensible qui seront visibles dans l'URL)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// ... (blablabla ... requete) ...
// lien vers la page
?>
	<a href="la-page.php?get-contenu=<?php echo urlencode($data['contenu']); ?>">aller ici</a>
 
----- la-page.php : -----
<?php
// recuperation :
$contenu_recup = urldecode($_GET['get-contenu']);
// [...] suite du traitement
?>
Voir :
- urlencode()
- urldecode()

3/ envoyer par $_POST (avec un bouton par exemple) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// ... (blablabla ... requete) ...
// lien vers la page (sous forme de formulaire / bouton)
?>
	<form method="post" action="la-page.php">
		<input type="hidden" name="contenu-a-transmettre" value="<?php echo addslashes($data['contenu']); ?>" />
		<button name="lienpage" type="submit">aller ici</button>
	</form>
 
----- la-page.php : -----
<?php
// recuperation :
$contenu_recup = stripslashes($_POST['contenu-a-transmettre']);
// [...] suite du traitement
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 10h44   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Cela dit (voir ci-dessus) ...
DANS TON CAS, il s'agit de transmettre à la page suivante une infos contenues dans ta BdD.

Pourquoi ne pas lui transmettre plutot simplement ... l'ID de l'enregistrement ?
=> envoyer par $_GET (dans l'URL) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// REQUETE
$sql = "SELECT id,titre,contenu FROM Test"; // on veut aussi l'id
// ... (blablabla) ...
// lien vers la page
?>
	<a href="la-page.php?getid=<?php echo $data['id']); ?>">aller ici</a>
 
----- la-page.php : -----
<?php
// recuperation :
$id_recup = mysql_real_escape_string($_GET['getid']);
$sql = "SELECT contenu FROM Test WHERE id = '".$id_recup."';"; // on recupere le contenu
// ...
$contenu_recup = $data['contenu'];
// [...] suite du traitement
?>
voir : mysql_real_escape_string()
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 10h51   #4
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Merci de ton aide, concernant ce que je veux faire j'ai trouvé une méthode... mais ça marche pas je dois avoir un soucis ce caractères " ou '...
J'ai ajouté un echo dans ma requete :
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
<?php
// on se connecte à MySQL
$db = mysql_connect('SITE', 'USER', 'PWD');

// on sélectionne la base
mysql_select_db('test',$db);

// on crée la requête SQL
$sql = 'SELECT titre,contenu FROM Test';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
    echo $data['titre'].' '.$data['contenu'];

	$var = $data['contenu'];
    echo "<Div class="Administrer"><a href='full.php?variable=$var'>Administrer</a></div>";

    }
// on ferme la connexion à mysql
mysql_close();
?>
J'ai un problème sur la ligne en gras... je pense que sa doit être un problème de "QUOTE" avec les guillemets...

Cette méthode te parait-elle correcte? (pour moi c'est plus simple que ce que tu m'a donné ! je débute !!!)
Merci.
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 10h56   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
C'est la méthode 2/ !
remplace :
Code :
1
2
3
4
5
6
<?php
// ...
	$var = $data['contenu'];
    echo "<Div class="Administrer"><a href='full.php?variable=$var'>Administrer</a></div>";
// ...
?>
par :
Code :
1
2
3
4
5
6
7
<?php
// ...
?>
    <div class="Administrer"><a href="full.php?variable=<?php echo urlencode($data['contenu']); ?>">Administrer</a></div>
<?php
// ...
?>
note : il est préférable de "sortir" le code html du code php (comme je l'ai fait)
c'est une bonne habitude à prendre,
et ca évite les cafouillages de quotes (')/ double-quotes (")
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 11h13   #6
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
Merci beaucoup !
Par contre je vais transmettre l'index et j’exécuterais de nouveau la requête dans le nouveau formulaire php...
Par contre, je n'arrive pas à récupérer la variable pour la placer dans un text area... j'ai essayé :
Code :
1
2
3
4
5
 
<?php				 
$contenu_recup = urldecode($_GET['variable']);
echo $contenu_recup;
?>
Je galère !

Merci de ton aide.
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 11h19   #7
Membre actif
 
Inscription : janvier 2007
Messages : 915
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 915
Points : 185
Points : 185
J'ai trouvé !
Il fallait rajouter des " !
Code :
1
2
3
4
5
 
<?php				 
$contenu_recup = urldecode($_GET['variable']);
echo "$contenu_recup";
?>
Comme je te le disais, je vais transmettre le N° d'index...
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 11h20   #8
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Qu'y a-t-il de compliqué ?
je t'ai donné 4 méthodes : NE LES MELANGE PAS !

Récupérer l'index : c'est la méthode 4 (celle de mon 2eme post)

Remets-nous le code de tes 2 pages, qu'on y voit plus clair
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web