Bouton modifier avec redirection sur page modification - Problème GET

Bandenklap
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 11:23

Bonjour à tous,

J'ai un tableau avec différentes données, et un bouton modifier de type GET.
Quand je clique sur mon bouton "modifier" qui devrait normalement me rediriger sur la page modifier avec le bon ID (URL : http://127.0.0.1/XXX/modif.php?ID=N), cela ne fonctionne pas.
Je me retrouve avec l'URL suivante : http://127.0.0.1/XXX/modif.php?ID=.

Ci dessous mes lignes de code :
    <form method="get" action="modif.php">
 
 
 	<TABLE BORDER="0" WIDTH="500px">
<thead>

	<TR>

[...]

	<TR>
		<TD><?php echo ($resultat['CP']);?> <?php echo ($resultat['ville']);?></TD>
		<TD></TD>
	</TR>

	<TR>
		<TD></TD>
		<TD align="right"><B><?php echo ($resultat['statut']);?></B></TD>
	</TR>
	
	<TR>
		<TD><I><?php echo ($resultat['remarques']);?></I></TD>
		<TD align="right"><input type="submit" name="ID" value="<?php $resultat['ID']; ?>">
		
		</TD>
	</TR>	
		
Je ne comprend pas, et je me casse la tête depuis un petit moment dessus...

Quelqu'un a t'il une idée du problème?

Merci par avance

Mammouth du PHP | 684 Messages

20 juin 2008, 11:31

<?php $resultat['ID']; ?>
manque le echo ?!
<?php echo $resultat['ID']; ?>
Zigz4g

Bandenklap
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 11:41

Merci, cela résout une première partie de mon problème.

Mais à priori, j'ai un problème sur mon GET ou sur la manière dont je l'exploite.
Le fichier modifier.php est un formulaire dans lequel je souhaite intégrer comme "values" les données récupérées dans le GEt.
J'ai le code suivant, mais il ne m'affiche que des sautes de ligne, quelle que soit la variable intégrée :
			<TR>
				<TD class="texte">Société</TD>
				<TD><IMG SRC="IMG/00.gif" </TD>
				<TD><INPUT TYPE="text" name="societe" size="50" value="<?php echo ($resultat['societe']);?>"></TD>
			</TR>

			<TR>
				<TD class="texte">Intitulé du poste</TD>
				<TD><IMG SRC="IMG/00.gif" </TD>
				<TD><INPUT TYPE="text" name="poste" size="50" value="<?php echo ($resultat['poste']);?>"></TD>
			</TR>

Après avoir rempli les infos dans ce formulaire, je fais appel à un autre script qui va m'updater les données dans ma table.

Merci par avance

Mammouth du PHP | 1353 Messages

20 juin 2008, 11:44

D'ou vient ce tabelau $resultat ? comment est il crée/rempli ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

bandenklap
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 11:49

Il provient de cette requête :
<?php
mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");
 
$requete = ("SELECT * FROM candidatures WHERE login = '" .$_SESSION['login']. "' ORDER BY ID DESC LIMIT 0,10 ");
$req = mysql_query($requete) or die(mysql_error());

while($resultat = mysql_fetch_array($req))
{
?>
[php]


Je pense que j'ai un problème à ce niveau étant donné que je n'indique nulle part dans ma requête le $_GET['ID'], mais je ne suis pas sûr de moi...

Mammouth du PHP | 1353 Messages

20 juin 2008, 11:54

Je ne vois pas où tu tentes d'utiliser ces variables $_GET["ID"], ca n'apparait nul part dans le code que tu nous donnes ! Peut tu nous montrer clairement la page qui est censé récupéré les $_GET et les requetes que tu veux faire pour mettre à jour la table ??
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Bandenklap
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 12:01

Voila la page concernée par la récupération des variables $_GET['ID']. Je ne sais pas ou placer ce fameux $_GET['ID'] pour récupérer les bonnes valeurs. Avec le code que j'ai actuellement, il me prend la dernière entrée enregistrée par défaut.

<?php

 
$host = "XXX";
$user = "XXX";
$pass = "";
$bdd = "XXX";
$table = "candidatures";


mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");
mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");
 
$requete = ("SELECT * FROM candidatures WHERE login = '" .$_SESSION['login']. "' ORDER BY ID DESC LIMIT 0,10 ");
$req = mysql_query($requete) or die(mysql_error());

$resultat = mysql_fetch_array($req);

?>




	<BODY>
	<form method="post" action="verif_candidature.php">



	<DIV ID="nouvelle_candidature">
		<TABLE>
			<TR><TD colspan="3" class="bluebig"><B>Mettre à jour une candidature<?php include 'info_cand.html'; ?></B></TD></TR>
			
			<TR><TD COLSPAN="3"><IMG SRC="IMG/00.gif" HEIGHT="20px"></TD></TR>

			<TR>
				<TD class="texte">Date de candidature</TD>
				<TD><IMG SRC="IMG/00.gif" </TD>
				<TD><?php include 'cal.html'; ?></TD>
			</TR>
			
			<TR>
				<TD class="texte">Société</TD>
				<TD><IMG SRC="IMG/00.gif" </TD>
				<TD><INPUT TYPE="text" name="societe" size="50" value="<?php echo ($resultat['societe']);?>"></TD>
			</TR>

			<TR>
				<TD class="texte">Intitulé du poste</TD>
				<TD><IMG SRC="IMG/00.gif" </TD>
				<TD><INPUT TYPE="text" name="poste" size="50" value="<?php echo ($resultat['poste']);?>"></TD>
			</TR>
			
[...]
			
			<TR>
				<TD COLSPAN="3" ALIGN="CENTER"><INPUT border=0 src="IMG/valider_white.jpg " type=image Value=submit></TD>
			</TR>
			
			
			
		</TABLE>
	</DIV>
	</FORM>
	</BODY>

PS : désolé pour les 20 lignes de code max...

Mammouth du PHP | 1353 Messages

20 juin 2008, 12:16

Bon c'est toujours pas hyper clair mais je tente de comprendre :

le but c'est de récupérer en base une candidature qui à l'ID que la personne a choisi dans la page précédente ?

Si c'est ca alors il faut que ta requete porte sur l'utilisateur courant ET l'ID fourni en parametre, c'est donc ta requete qu'il faut modifier.
$requete = ("SELECT * FROM candidatures WHERE login = '" .$_SESSION['login']. "' AND id=".$_GET["ID"]); 
Après il faudra t'assurer que au moins un résultat est trouvé, pke si l'utilisateur change ID= dans l'URL ca peut devenir n'importe quelle valeur...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Invité
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 12:20

C'est exactement ça, et ça fontionne. Merci beaucoup de ton aide...
Dernière petite question. Etant donné que j'ai donné comme value à mon submit un "<input type="submit" name="ID" value="<?php echo $resultat['ID']; ?>">", comment puis je faire pour que ça ne soit pas l'ID qui s'affiche dans le submit, mais la mention "valider"?

Merci beaucoup de ton aide.

Mammouth du PHP | 1353 Messages

20 juin 2008, 12:25

Personnellement je te conseille de passer ton formulaire en POST (method="post") c'est plus sûr.

Ensuite tu inclus dans ton formulaire un champ caché :

<input type="hidden" name="ID" value="<?php echo $resultat["id"];?>"/>

Comme ca tu peux mettre ce que tu veux dans ton submit (a condition de le renommer pour pas qu'il s'appelle ID lui aussi).

Enfin tu pourras tout simplement récupérer cette valeur avec un $_POST["ID"]; ;)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

bandenklap
Invité n'ayant pas de compte PHPfrance

20 juin 2008, 13:38

Merci pour toutes les infos, tout fonctionne parfaitement.