lien modifier par GET

afi
Eléphant du PHP | 51 Messages

19 mars 2012, 13:33

bonjour,
j'ai besoin de votre aide, voici 3 script sur une même page. le 1er affiche les enregistrements à modifier par l'intermédiaire d'un lien"modifier". Le second affiche dans
la même page les données sélectionner dans imput box pour modification et le 3eme modifie les données ds la base à partir du lien du second script.
Malheureusement ça fonctionne que partiellement. je m'explique:
en demandant la modification le 1er script appelle bien le second mais je ne vois pas données dans l'url (GET)? puis le second script appelle bien le 3eme script mais la modification ne se fait pas dans la base et pourtant le resultat est positif(affiche: données modifiées), et la aussi pas de données dans l'URL.
Dans tous les cas le champ caché affiche bien l'id transmise sur chaque page. Ou est le pb?

script page 1:
<?php
require ("Connect.php");
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE,$connexion);
$resultat = mysql_query ($requete, $connexion)
$sql = mysql_query("SELECT * FROM projet WHERE id='$_SESSION[id]'");
while($result=mysql_fetch_array($sql)){
echo '<tr>
<td colspan=2>'.$result['metier'].'</td>
<td>' .$result['formation'].'</td>
<td colspan=3>' .$result['commentaire'].'</td>
<td><a href=" memo_projet.php?id3='.$result['id_projet'].'">modifier</td>
</tr>';
}
?>
==================scriptsuivant sur page 1:<?php
if (isset($_GET['id3'])) {
require ("Connect.php");
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE,$connexion);
$id_projet=$_GET['id3'];
$sql = mysql_query("SELECT * FROM projet WHERE id_projet=".$_GET['id3']);
$result=mysql_fetch_array($sql);
if($result){
echo '<table align=center>
<tr class=rech>
<td><input type=text name=metier size=40 value="'.$result['metier'].'"></td>
<td><input type=text name=formation size=2 value="'.$result['formation'].'"></td>
<td><input type=text name=commentaire size=50 value="'.$result['commentaire'].'"></td>
<td><a href=" memo_projet.php?id4='.$result['id_projet'].'">ok</a></td>
</tr></table>';
}}
?>
<!-- CHAMP caché -->
<input type="hidden" name="id" value="<?php echo($id_projet) ;?>">
=============toujours page 1:script 3
<?php
if (isset($_GET['id4'])) {
require ("Connect.php");
$connexion=mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE,$connexion);
$id_projet=$_GET['id4'];
$requete="UPDATE projet
SET metier='$_POST[metier]',formation='$_POST[formation]',commentaire='$_POST[commentaire]' id_projet=".$_GET['id4']);
$resultat=mysql_query ($requete, $connexion);
if ($resultat) {
echo '<p class=liste>données modifiées</p>';
}
else {
echo '<p class=liste>échec de transmission</p>';
} }
?>
<!-- CHAMP caché -->
<input type="hidden" name="id" value="<?php echo($id_projet) ;?>">

ViPHP
ViPHP | 2577 Messages

19 mars 2012, 15:39

Sauf erreur de ma part, il n'y a pas de <form> dans le HTML généré, donc ca ne peut pas transmettre de données via les formulaire.

Plutot que d'utiliser des variables id3, id4..., il serait mieux d'utilisé une variable plus "parlante" comme "operation" avec une valeur indiquant l'opération à réaliser. Eventuellement tu pourrais utiliser "afficher", "editer", "enregistrer" comme variable.

afi
Eléphant du PHP | 51 Messages

19 mars 2012, 15:58

ok, il ya form... Je suis toujours au même point!!! pourquoi le get ne passe pas par url???

Mammouth du PHP | 1967 Messages

19 mars 2012, 16:04

Un formulaire doit avoir un bouton envoyer, tu utilise un simple lien <a href=""></a> qui ne peut pas enregistrer les données en POST (à moins d'utiliser du javascript). Utilise plutot un bouton que ton lien dans ton script 2. Je te conseillerais de ne pas mélanger POST et GET dans un même renvoi de donnée, donc ton script 2 renvoi en POST une valeur comme id3 (suit les conseil décrit ci-dessus) et ton script 4 le rècupère en POST

Sinon, pas besoin de recommencer 3 fois l'appel à ta base, tu peux le faire une fois à chaque page mais pas dans tes IF
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

afi
Eléphant du PHP | 51 Messages

19 mars 2012, 16:22

effectivement, j'ai remplacé LE LIEN par un bouton dans le script 3 et ça fonctionne. la modification à eu lieu!
mais cela n'explique pourquoi je ne vois pas l'id dans l'url par la methode get??

ViPHP
ViPHP | 2577 Messages

19 mars 2012, 16:53

Je suppose q'il s'agit du champ id mis en "hidden" ?

Pour le voir dans l'url, il faut une balise <form method="get" action="??????">
Le script que tu indiques ne montre rien de tel.