récuperer les valeurs de l'id sélectionné et non du dernier id

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récuperer les valeurs de l'id sélectionné et non du dernier id

par Cypher_PHP » 06 nov. 2008, 10:06

oui, ca marche enfin

mais je trouve un peu bizarre cette méthode de récupération
mais je vais pas encore me casser la tete

en tout cas, milles mercis à vous
vraiment sympa

je mets en resolu

par stopher » 05 nov. 2008, 19:40

Humm je vois
echo '<td align="right"><input type="submit" name="sub_del_tuteur" value="'.$row['id_tuteur'].'"></td>';
        echo '
        <input type="hidden" name="recup_nom['.$row[id_tuteur].']" value="'.$row['nom'].' ">
        <input type="hidden" name="recup_prenom['.$row[id_tuteur].']" value="'.$row['prenom'].' ">
        '; 
Pour la suppression
$id_tuteur     =    $_POST['sub_del_tuteur'];
$nom            =    $_POST['recup_nom'][$id_tuteur];
$prenom       =    $_POST['recup_prenom'][$id_tuteur]; 
       
echo 'Le tuteur "'.$id_tuteur.'" "'.$nom.'" "'.$prenom.'" a bien été supprimé avec succès.<BR><a href="gestion3.php">Retour à l\'accueil</a>';

supprimer($id_tuteur);
ça devrai aller là .. non ?

Tu supprimes bien 1 enregistrement à la fois ?

par Cypher_PHP » 05 nov. 2008, 15:09

ah?

ca revient au même problème au début du post
quand je clique un id parmi les id, le message annonce que le dernier id est supprimé

snifffff....

par stopher » 05 nov. 2008, 12:58

Effectivement , c'est normale , j'avais en tete que tu avais mis un checkbox à chaque ligne que tu voulais supprimer .. ca na va plus dutout dans ce cas là ...

Car peut importe le boutton supprimer que tu clique , il récupére toujours tous les id ...

Essayes dans ce cas , plutot comme ca :
echo '<from ... action . ect .. ';
echo '<td align="right"><input type="submit" name="sub_del_tuteur" value="'.$row['id_tuteur'].'"></td>';
        echo '
        <input type="hidden" name="recup_nom" value="'.$row['nom'].' ">
        <input type="hidden" name="recup_prenom" value="'.$row['prenom'].' ">
        ';
echo '</form>';
Et pour récupérer l'id à supprimer
$id_tuteur     =    $_POST['sub_del_tuteur'];
$nom            =    $_POST['recup_nom'];
$prenom       =    $_POST['recup_prenom']; 
       
echo 'Le tuteur "'.$id_tuteur.'" "'.$nom.'" "'.$prenom.'" a bien été supprimé avec succès.<BR><a href="gestion3.php">Retour à l\'accueil</a>';

supprimer($id_tuteur);
Désolé de te faire changer encore , mais j'étais persuadé que tu utilisés des checkbox pour faire des suppressions multiples

par Cypher_PHP » 05 nov. 2008, 12:46

ah ca va mieux
mais il y a un petit problème

il m'affiche tout alors que j'ai cliqué un seul bouton
et puis quand je clique sur un bouton 60, il me supprime seulement l'id 49 donc le premier id
Le tuteur "49 " "vert " "vert " a bien été supprimé avec succès.
Le tuteur "60 " "dede " "frty " a bien été supprimé avec succès.
Le tuteur "74 " "google" "larry" a bien été supprimé avec succès.

par stopher » 05 nov. 2008, 12:23

C'est normal qu'il affiche Array .. puisque c'est des tableaux ...

Pour coller à ton script tu devrais plutot faire ça :
(array)$id_tuteur        =    $_POST['recup_id_tuteur'];
(array)$nom            =    $_POST['recup_nom'];
(array)$prenom           =    $_POST['recup_prenom']; 
(int)position   =   0;     
foreach( $id_tuteur AS $id )
{
      echo 'Le tuteur "'.$id.'" "'.$nom[$position].'" "'.$prenom[$position].'" a bien été supprimé avec succès.<BR><a href="gestion3.php">Retour à l\'accueil</a>';

    supprimer($id);

   $position++;
}

par Cypher_PHP » 05 nov. 2008, 12:18

et il m'affiche comme resultat:

Le tuteur "Array" "Array" "Array" a bien été supprimé avec succès.
voici le code source:
                echo '<td align="right"><input type="submit" name="sub_del_tuteur" value="Supprimer"></td>';
		echo '
		<input type="hidden" name="recup_id_tuteur[]" value="'.$row['id_tuteur'].' ">
		<input type="hidden" name="recup_nom[]" value="'.$row['nom'].' ">
		<input type="hidden" name="recup_prenom[]" value="'.$row['prenom'].' ">
		';
		$id_tuteur    	=    $_POST['recup_id_tuteur'];
        $nom        	=    $_POST['recup_nom'];
        $prenom       	=    $_POST['recup_prenom']; 
		$_POST['recup_id_tuteur'] 	= array($id_tuteur);
		$_POST['recup_id_tuteur'][]	=	array($nom);
		$_POST['recup_id_tuteur'][]	=	array($prenom);
		

		echo 'Le tuteur "'.$id_tuteur.'" "'.$nom.'" "'.$prenom.'" a bien été supprimé avec succès.<BR><a href="gestion3.php">Retour à l\'accueil</a>';
		supprimer($id_tuteur);

par stopher » 04 nov. 2008, 16:22

Dans ta boucle while , pour chaque ligne recupéré de ta base , tu met les valeurs dans :
<input type="hidden" name="recup_id_tuteur" value="'.$id.' ">
<input type="hidden" name="recup_nom" value="'.$nom.' ">
<input type="hidden" name="recup_prenom" value="'.$prenom.' "> 
Or , ici , a chaque boucle , tu vas effacer les valeurs mises précédemment c'est comme ci tu faisais celà :
$i = 0;
$a = 0;
while ( $i <= 10 )
{
  $a = $i;
  $i++;
}

//affichage de $a 
echo $a;
Celà va te retourner 10 donc la derniere valeur que tu récupères .. ce qui est exactement ton cas pour tes id .

La solution , est donc de creer un tableau qui récupére toutes tes valeurs une par une , pour ce faire , il faut ajouter les crochets [] pour dire que c'est un tableau ...

tu dois donc faire comme ceci :
<input type="hidden" name="recup_id_tuteur[]" value="'.$id.' ">
<input type="hidden" name="recup_nom[]" value="'.$nom.' ">
<input type="hidden" name="recup_prenom[]" value="'.$prenom.' "> 
Tu vas donc récupérer 3 tableaux , et lorsque tu appels ta fonction
supprimer($id_tuteur); 
$id_tuteur est un tableau qui contiend les id que tu veux supprimer ...

par Cypher_PHP » 04 nov. 2008, 16:09

oh je m'y perds

je ne comprend pas
pardonnez moi merci

par stopher » 04 nov. 2008, 12:38

Salut ,

tu dois définir ton input en tableau afin de récupérer toutes tes valeurs
<input type="hidden" name="recup_id_tuteur[]" value="'.$id.' "> 
Tu récupéres ainsi un tableau $_POST['recup_id_tuteur'] = array

Je te laisse donc adapter ton code ...

récuperer les valeurs de l'id sélectionné et non du dernier

par Cypher_PHP » 04 nov. 2008, 11:48

bonjour

depuis quelques heures, je n'ai pas trouvé pourquoi cela ne marchait pas comme je le voulais.
en fait, je génère un tableau dans lequel s'affichent les données récupérés de la base ainsi que les boutons submit qui sont liés par les id.
dès que je clique sur un bouton submit (au lieu d'un lien) qui va supprimer l'id et ses données, le message que j'ai crée m'annonce que l'id supprimé est le dernier id du tableau. Donc c'est pas bon.
Bien sur, j'ai vérifié sur phpmyadmin: même constat

voici le code source :
pour info, dans ce code source, j'ai utilisé la méthode switch
mes excuses pour ne pas afficher tout le code source
et merci à vous pour vos réponses
...
case'del_tuteur':
		connLocalhost();
		$sql	=	'select * from tuteur ';
		$req	=	mysql_query($sql)or die ('impossible1');
		$list 	=	mysql_num_rows($req);

 		echo '<form method="POST" action="gestion3.php" name="tuteur"><br>';
		echo 'Liste des tuteurs <br><a href="gestion3.php">(retour)</a><br><br>';
	if($list) 
		echo '<table style="text-align: left; width: 100%; height: 74px;" border="0" cellpadding="2" cellspacing="2"><tbody>'."\n";
	{
	    echo '<tr><td bgcolor="#669999"><u>Numero</u></td>';
        echo '<td bgcolor="#669999"><u>Nom</u></td>';
        echo '<td bgcolor="#669999"><u>Prénom</u></td>';
        echo '<td bgcolor="#669999"><u>Action</u></td>';
        echo '</tr>'."\n";
    while($row = mysql_fetch_array($req)) 
    {
        echo '<tr style="background-color: #BBAA99;">';
		$bgcolor =($i++&1)?'#DDFF00' : '#BBCC33';
		echo "<tr bgcolor='".$bgcolor."' style='color:black';>";
  		echo "<td>".$row['id_tuteur']."</td>";
  		echo "<td>".$row['nom']."</td>";
  		echo "<td align='right'>".$row['prenom']."</td>";
		echo '<td align="right"><input type="submit" name="sub_del_tuteur" value="'.$row['id_tuteur'].' "></td>';
		$id=$row['id_tuteur'];
		$nom=$row['nom'];
		$prenom	=	$row['prenom'];
		echo '
		<input type="hidden" name="recup_id_tuteur" value="'.$id.' ">
		<input type="hidden" name="recup_nom" value="'.$nom.' ">
		<input type="hidden" name="recup_prenom" value="'.$prenom.' ">
		';
    }
  		echo '</tr>';
    }
    	echo '</table>';
    	echo '</form>';

	break;
	case'mess_del_tuteur':
		connLocalhost();
		$id_tuteur	=	$_POST['recup_id_tuteur'];
		$nom		=	$_POST['recup_nom'];
		$prenom		=	$_POST['recup_prenom'];
		echo 'Le tuteur "'.$id_tuteur.'" "'.$nom.'" "'.$prenom.'" a bien été supprimé avec succès.<BR><a href="gestion3.php">Retour à l\'accueil</a>';
		supprimer($id_tuteur);
		
	break;

...
autre code source:
/ fonction supprimer un tuteur (suppression des données du tuteur)
function supprimer($id_tuteur)
{
	$supp			=	mysql_query("DELETE FROM tuteur WHERE id_tuteur = $id_tuteur"); 
	mysql_close(); 

}