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

wik
Eléphanteau du PHP | 29 Messages

09 juin 2007, 16:56

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.

ViPHP
ViPHP | 2144 Messages

09 juin 2007, 18:39

$_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.

lux
Eléphant du PHP | 372 Messages

09 juin 2007, 18:50

$_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.

Invité
Invité n'ayant pas de compte PHPfrance

09 juin 2007, 19:20

$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...

lux
Eléphant du PHP | 372 Messages

09 juin 2007, 19:48

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());


Invité
Invité n'ayant pas de compte PHPfrance

09 juin 2007, 20:15

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>'; 	 
?>

lux
Eléphant du PHP | 372 Messages

09 juin 2007, 20:33

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