PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 31-08-2010 12:26:48

floriangendrot
Membre
Inscription : 03-03-2010
Messages : 11

Génération d'input et boucles foreach

Bonjour,
Je travail actuellement sur un script de gestion de galerie en back-office.
Pour cela je dois rajouter un champs de texte pour chaque photo lu à partir de la BDD comme suit :
       

<input name="id" type="hidden" value="<?php echo $imageId; ?>" />
<input name="legend[]" value="<?php if(isset($legend) && !empty($legend) ){echo $legend;} ?>" maxlenght ="255" type="text" />

Ou $legend est la légende insérée dans la BDD, parfois vide.

Mon probleme se situe autour de la récupération du tableau legend[], donc au niveau du traitement de mon tableau :
Voici mon script d'update qui ne fonctionne pas… ou plutot il ne met a jour que la dernière entrée à chaque fois sans mettre à jour les autres:

    foreach($_POST['legend'] as $legend){
     
      $imageId =      $_POST['id'];
      $sql = "UPDATE $tablePrincipale SET image_legend = '$legend' WHERE image_id = '$imageId'";
      mysql_query($sql);
    }

Je bloque depuis quelques temps
Merci de votre aide.
Florian

Hors ligne

#2 31-08-2010 21:53:14

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Génération d'input et boucles foreach

salut,

c'est surement dû au fait que le champ id est unique car tu indique son nom en dur (name="id") plutot que d'utiliser la syntaxe tableau que tu utilise par ailleurs pour la légende.

donc


      <input name="id[]" type="hidden" value="<?php echo $imageId; ?>" />
      <input name="legend[]" value="<?php if(isset($legend) && !empty($legend) ){echo $legend;} ?>" maxlenght ="255" type="text" />
 

le traitement du formulaire:


#
foreach($_POST['legend'] as $id => $legend){
      $imageId = $_POST['id'][$id];
      $sql = 'UPDATE '.$tablePrincipale.' SET image_legend = \''.$legend.'\' WHERE image_id = '.$imageId;
      mysql_query($sql);
    }
?>

Id étant, a priori, un idenx numérique tu n'a pas besoin, et même il ne faut pas le mettre entre ' (ce n'est pas une chaine de caractère).

PS : si tu a 200 images sur la page tu fait 200 update dans la boucle ? c'est peu performant et surement peu apprécié de l'hébergeur.

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

Pied de page des forums