Page 1 sur 1

lien vers une nouvelle page avec récupération d'un ID

Posté : 09 juin 2007, 16:56
par wik
Bonjour,

J'ai une liste d'artistes (dans tableau à 3 colonnes).
Je souhaite, en cliquant sur un artiste, afficher dans une nouvelle page un formulaire de modification de cet artiste, dans lequel s'affiche dans les champs "input" les valeurs de l'artiste en question.

dans la barre d'adresse, j'ai bien l'id de l'artiste sélectionné, par contre dans la page de formulaire, le contenu est vierge...

dans la 1ere page, j'ai donc :
<?php 
 $requete = mysql_query ("SELECT * FROM artiste_dico ORDER BY artiste_nom"); 
  
 $n = mysql_num_rows($requete); // compte le nbre d'enregistrement  
 $compteur = 0;  
 $valeur = $n/3; // divise le nbre d'enregistrement par 3  
 $valeur = ceil($valeur); // arrondi  
 echo '<table width="630"><tr valign="top"><td width="203" class="menuTitreNG">' ; 

while 
 ($resultat = mysql_fetch_array($requete)) { 

if ($compteur == $valeur) { echo '</td><td width="10"></td><td width="204" class="menuTitreNG">'; // tu changes de colonne  
$compteur = 0; // tu remet le compteur a zéro  
}  

$artiste = $resultat[artiste_prenom]. " " .$resultat[artiste_nom]; 
$artiste_id = $resultat[dico_id]; 

echo '<a href="maj_artiste_modif.php?id='.$artiste_id.'">'. $artiste .'</a>' ;  
echo '<br>';  

$compteur++; // ajoute 1 au compteur a chaque passage  
}  

echo '</td></tr></table>';  
?> 
dans mage d'activation du formulaire :
<?php 
     require ("include/connect.php"); 
      
     $_GET['artiste_id'] = $artiste_id; 
      
     $requete = mysql_query ("SELECT artiste_prenom, artiste_nom FROM artiste_dico WHERE dico_id = '".$_GET['artiste_id']."'") or die('Erreur : ' . mysql_error()); 

     $modif = mysql_fetch_array($requete); 
      echo'<form method="post" action="maj_artiste.php"> 
        <span class="txt10grasBleu">pr&eacute;nom</span>  
        <input type="text" name="artiste_prenom" value="'.$modif[artiste_prenom].'" size="30"> 
        <br> 
        <span class="txt10grasBleu">nom</span>  
        <input type="text" name="artiste_nom" value="'.$modif[artiste_nom].'" size="30"> 
        <br> 
        <input type="submit" name="modif" value="OK"> 
      </form>';?> 
Merci d'avance de votre réponse.

Posté : 09 juin 2007, 18:39
par iclo
$_GET['artiste_id'] = $artiste_id;  
C'est ligne est inutile (et honnetement un peu farfelue) normalement (j'en suis pas sûr j'ai jamais tester un truc du genre) elle efface la variable que tu récuperes du lien, et que tu utilises plus bas dans ta requête.

Posté : 09 juin 2007, 18:50
par lux
$_GET['artiste_id'] = $artiste_id;  
C'est ligne est inutile (et honnetement un peu farfelue) normalement (j'en suis pas sûr j'ai jamais tester un truc du genre) elle efface la variable que tu récuperes du lien, et que tu utilises plus bas dans ta requête.
Ben oui il doit le faire dans l'autre sens pour que ça marche :
$artiste_id = $_GET['artiste_id'];
Et je ferais aussi un contrôle :if (isset($_GET['artiste_id'])) ou qqch comme ça, si qqn se connecte directement à la page sans envoyer de valeur, il ne lance pas le script.

Posté : 09 juin 2007, 19:20
par Invité
$artiste_id = $_GET['artiste_id']; 
Ca ne marche pas non plus...
Je ne m'y connais pas beaucoup en php, mais il me semble que les variable "POST" ou "GET" concernent l'utilisation de formulaires, or là il n'y en a pas...

Merci quand même !
D'autres idées sont les bienvenues, je sèche totalement, malgré mes recherches...

Posté : 09 juin 2007, 19:48
par lux
Si si GET c'est pour récupérer ce que tu passes en URL (genre index.php?lien=1), et tu peux récupérer le 1 pex.
C'est ce que tu fais lorsque tu clique sur le lien :
echo '<a href="maj_artiste_modif.php?id='.$artiste_id.'">'. $artiste .'</a>'
Donc vérifie déja que tu as bien qqch dans ton URL qui ressemble a mon exemple, mais donc avec :

?id=iddel'artiste

Ensuite normalement tu récupères cette valeur :
$artiste_id = $_GET['id'];
Remplace donc dans le GET, il faut qu'il y ait écrit id, c'est logique c'est ce que tu veux récupérer.

Et ensuite tu fais ta requète SQL, que j'écrirais alors plutot comme ça :
$requete = "SELECT artiste_prenom, artiste_nom FROM artiste_dico WHERE dico_id='$artiste_id'";
$sql = mysql_query($requete) or die ('Erreur : '.mysql_error());


Posté : 09 juin 2007, 20:15
par Invité
Merci ça marche !!!

J'avais bien dans l'URL l'id de l'artiste qui s'affichait...
Par contre, je ne trouve pas logique le $_GET['id'] : je n'ai rien qui s'appelle 'id' tout seul...

Alors revoici le code qui fonctionne, pour ceux que ça intéresserait :

page avec les éléments à modifier :
<?php
 $requete = mysql_query ("SELECT * FROM artiste_dico ORDER BY artiste_nom");
 
 $n = mysql_num_rows($requete); // compte le nbre d'enregistrement 
 $compteur = 0; 
 $valeur = $n/3; // divise le nbre d'enregistrement par 3 
 $valeur = ceil($valeur); // arrondi 
 echo '<table width="630"><tr valign="top"><td width="203" class="menuTitreNG">' ;

while
 ($resultat = mysql_fetch_array($requete)) {

if ($compteur == $valeur) { echo '</td><td width="10"></td><td width="204" class="menuTitreNG">'; // tu changes de colonne 
$compteur = 0; // tu remet le compteur a zéro 
} 

$artiste = $resultat[artiste_prenom]. " " .$resultat[artiste_nom];
$artiste_id = $resultat[dico_id];

echo '<a href="artiste_modif.php?id='.$artiste_id.'">'. $artiste .'</a>' ; 
echo '<br>'; 

$compteur++; // ajoute 1 au compteur a chaque passage 
} 

echo '</td></tr></table>'; 
?>
affichage du formulaire avec l'élément sélectionné à modifier :
<?php
     require ("include/connect.php");
	 
	 $artiste_id = $_GET['id'];
	 
	 $requete = mysql_query ("SELECT artiste_prenom, artiste_nom FROM artiste_dico WHERE dico_id = '".$artiste_id."'") or die('Erreur : ' . mysql_error());

	 $modif = mysql_fetch_array($requete);
	 
	  echo'<form method="post" action="maj_artiste.php">
        <span class="txt10grasBleu">pr&eacute;nom</span> 
        <input type="text" name="artiste_prenom" value="'.$modif[artiste_prenom].'" size="30">
        <br>
        <span class="txt10grasBleu">nom</span> 
        <input type="text" name="artiste_nom" value="'.$modif[artiste_nom].'" size="30">
        <br>
        <input type="submit" name="modif" value="OK">
      </form>'; 	 
?>

Posté : 09 juin 2007, 20:33
par lux
J'avais bien dans l'URL l'id de l'artiste qui s'affichait...
Par contre, je ne trouve pas logique le $_GET['id'] : je n'ai rien qui s'appelle 'id' tout seul...
Si en fait, regarde ton URL, tu envoyes sur ta première page :
echo '<a href="artiste_modif.php?id='.$artiste_id.'">'. $artiste .'</a>' ; 
Le Get récupère ce qu'il y a derrière le ? dans l'URL, donc ici "id" avec sa valeur. Tu peux passer plusieurs variables (s'il y en a) en séparant avec un &:

Code : Tout sélectionner

artiste_modif.php?id=1&mode=blabla&truc=54
Tu les réupéreras respectivement avec :
$id = $_GET['id']; //$id a alors la valeur 1
$mode = $_GET['mode']; //$mode a alors la valeur blabla
$truc = $_GET['truc']; //$truc a alors la valeur 54
Pense a vérifier si il y a bien une valeur envoyée par contre, change le
$artiste_id = $_GET['id'];
par :
if (isset($_GET['id'])
{
$artiste_id = $_GET['id'];
.
.
.
//La suite de ton code, qui ne sera donc lancé que si il reçoit une valeur en GET
}
else
{
//Il ne se passe rien
}
P.S. pense à mettre en résolu