probleme d'actualisation

Eléphant du PHP | 153 Messages

21 oct. 2005, 15:47

le problème c'est que la tu executes a chaque tour de boucle ca prend plus de temps mais bon

marilou
Invité n'ayant pas de compte PHPfrance

21 oct. 2005, 16:15

Oui c'est sur mais je vois pas comment faire autrement.
Par contre je viens de me rendre compte que je dois ajouter la fonction de modification et donc j'aurais le bouton supprimer et le bouton modifier qui sont alimentés par la même checkbox.. Comment peut-on les différencier puisque l'action et totalement différente?

Eléphanteau du PHP | 45 Messages

21 oct. 2005, 18:12

if ($action = 'supprimer')
{
delete
}

if ($action = 'modifier')
{
update
}

ViPHP
fab
ViPHP | 2657 Messages

21 oct. 2005, 18:15

c'est mieux de faire un switch
switch($action) {
  case "supprimer":
    // le code correspondant
  break;
  case "modifier":
    // le code correspondant
   break;
}
http://fr.php.net/switch
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 oct. 2005, 18:17

Vous vous en etes pas vraiment sorti avec cette requete dynamique :wink:
essai comme ceci:
if (isset($_POST['sup']))
{
   $supp=$_POST['supp']
   $req="";
   foreach ($supp as $id)
   {
       $req.=" AND id_auto=".$id; // a chaque tour de boucle il faut ajouter AND id (sauf pour la 1ere valeur)
   }
    $req=substr($req,4); //pour enlever le 1er AND
    mysql_query("DELETE FROM auto WHERE ".$req) or die (mysql_error());   
} 
et en ce qui concerne ton bouton modifier tu lui donne un nom (name="modifier")et au bouton supprimer un autre (name="supprimer"), et en début de fichier tu teste la valeur du bouton récupèré et fait les operations en fonction ce cela:
if (isset($_POST['modifier']))
{
// opération de modifications
}
elseif (isset($_POST['supprimer']))
{
// opération de suppression
}
EDIT: ou alors avec le switch comme proposé, mais en meme temps il n'y a que 2 valeurs possibles ça ne changera pas grand chose :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

marilou
Invité n'ayant pas de compte PHPfrance

21 oct. 2005, 19:31

OK MERCI, c'est exactement ce qui manquais :

Code : Tout sélectionner

$req=substr($req,4); //pour enlever le 1er AND
Pour le bouton c'est parfait marci et bon week-end

ViPHP
fab
ViPHP | 2657 Messages

22 oct. 2005, 00:58

EDIT: ou alors avec le switch comme proposé, mais en meme temps il n'y a que 2 valeurs possibles ça ne changera pas grand chose Wink

niveau compréhension et flexibilité je préfère :p
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Gwena
Invité n'ayant pas de compte PHPfrance

30 oct. 2005, 22:18

j'ai un probleme identique, ça fait des jours que je suis la dessus, j'ai essayé d'appliquer la méthode expliquée dans ces quelques pages mais il ne veut rien savoir!!
<form action="<? $PHP_SELF; ?>" method="POST">
 <table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
   <?php 
    //requête SQL:
    $sql = "SELECT * FROM news order by date DESC" ;
    $requete = mysql_query( $sql) ;
    while( $result = mysql_fetch_array( $requete ) )
	{




						  
						  
						   ?>
  <tr>
 
    <td width="60" align="center"><b><?php echo ''.$result["id"].''; ?></b></td>
    <td><?php echo ''.$result["titre"].''; ?> </td>
    <td width="60" align="center"><input type="checkbox" name="box[]" value=" <?php echo''.$result["id"].'' ?> "></td>
  </tr>
	<?  
  } ?>  
	</table>
	<?
	
	if (isset($_POST['box'])) 
{ 
   $box=$_POST['box'] ;
   $req=""; 
   foreach ($box as $cle => $id) 
   { 
       $req.=" AND id=".$id; // a chaque tour de boucle il faut ajouter AND id (sauf pour la 1ere valeur) 
   } 
    $req=substr($req,4); //pour enlever le 1er AND 
    mysql_query("DELETE FROM news WHERE ".$req) or die (mysql_error());    
}

echo $req;
echo $cle;

?>

	  <input type="submit" name="submit" value="Envoyer"> 
  
 </form> 
si vous voyez quelque chose de bizarre n'hésitez pas!
je n'arrive pas à supprimer plus de 1 entrée à la fois et le echo $cle me renvoit un truc bizarre: id= 97 AND id= 96 AND id= 95 2
quand je coche 3 entrées et id= 97 AND id= 96 AND id= 95 1 quand j'en coche 2, le chiffre de la fin correspond à $cle

si je ne met pas de $cle ds le foreach il me renvoie simplement ça: id= 97 AND id= 96 AND id= 95

logiquement ça devrait marcher mais la ce n'est pas le cas![/code]

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 oct. 2005, 00:16

si je ne met pas de $cle ds le foreach il me renvoie simplement ça: id= 97 AND id= 96 AND id= 95
$cle n'a rien a voir dans la requete, on en as pas besoin. $cle correspond a l'indice de ton tableau $box, un indice débute toujours a 0 c'est pour ça que tu as $cle=2 quand tu coche 3 cases [0],[1],[2]

Donc la requete fonctionne bien mais il faut remplcer les "AND" par des "OR".

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Gwena
Invité n'ayant pas de compte PHPfrance

31 oct. 2005, 01:34

merci beaucoup!
mais je ne comprend pas pourquoi il faut mettre OR au lieu de AND??

ds le premier cas, qui était traité, il s'agissait de AND, et j'étais exactement ds le meme cas que la premiere personne...

donc je n'ai pas trop compris, si tu pouvais m'expliquer le OR je t'en serai vraiment reconnaissant 8)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 oct. 2005, 02:01

ds le premier cas, qui était traité, il s'agissait de AND, et j'étais exactement ds le meme cas que la premiere personne...
eh bien elle a du se rendre compte toute seule que la requete était mauvaise et changer (on ne saura pas elle n'a pas donné signe de vie depuis :wink: )

Sinon c'est logique le OR.

1. Dans le cas AND id=1 AND id=2:
la requete cherche a supprimer les lignes ayant comme id=1 et id=2, hors toutes les lignes n'ont qu'un seul id ayant une valeur unique, il n'y a donc pas de ligne ayant comme id 1 et en meme temps 2.

2. Dans le cas OR id=1 OR id=2:
la requete supprimera les lignes dont l'id est soit 1 soit 2, elles supprimera donc ces 2 lignes de la BD.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Gwena
Invité n'ayant pas de compte PHPfrance

31 oct. 2005, 03:18

merci bcp!!
c'est vrai que maintenant que tu l'explique c'est tout à fait logique :)

à bientôt peut être et merci!