Foreach ne renvoyant qu'un seul resultat

Fermé
Genj - Modifié par Genj le 3/04/2010 à 09:26
 genj - 3 avril 2010 à 18:35
Bonsoir,
je suis en train d écrire une fonction qui permettrait pour un insert ou un update de récupérer les champs et valeur d'un formulaire dynamiquement: n' ayant pas pas réussi à incorporer mon foreach directement dans la requete, j'ai créer une autre fonction pour ca; mais le foreach ne me revoie qu'un seul résultat.
Voila le code:
    
public function save($data) {   
    
  if (isset($data['id']) AND !empty($data['id'])) {   
   $pdo = PDO2::getInstance();   
   $requete = $pdo->prepare("UPDATE ".$this->table." SET " .$this->set($data)." WHERE id = ".$data['id']);   
   $requete->execute();   
   $requete->closeCursor();     
  }   
  else {   
   $pdo = PDO2::getInstance();   
   $requete = $pdo->prepare("INSERT INTO ".$this->table." SET ".$this->set($data));   
   $requete->execute();   
   $requete->closeCursor();   
  }   

 }   
public function set($data) {   
  foreach ($data as $k => $v) {   
   $kv = "$k = '$v',";   
   $kv = substr($kv, 0, -1);   
  }   
  return $kv;   
 }   


Et la page du formulaire:

 
if (!empty($_POST)) {  
 $category->save($_POST);  
 $_GET['id'] = $category->id;  
}  

<form method="post" action="index.php?"/>  
<input name="id" type="hidden" value="<?php echo $category->id; ?>" />  
<input name="titre" type="text" value="<?php echo $category->titre; ?>" />  
<textarea name="contenu"><?php echo $category->contenu; ?>

2 réponses

public function set($data){  
    $return = "";  
    foreach ($data as $k => $v) {     
          $return .= "$k = '".mysql_escape_string($v)."',";     
    }  
    $return = substr($return, 0, -1);     
    return $return;     
 }    
1
Bonjour Siluni,

je te remercie beaucoup pour ta réponse...
Ben grace a toi il va me rester un peu de barbe (j ai arraché une partie deja)...
Je n'avais encore pas vu cette facon de faire en declarant la variable avant le foreach.
Encore merci ca fonctionne parfaitement :)
Bon week end
0