array et sauvegarde mysql.

Mammouth du PHP | 702 Messages

03 mai 2012, 16:46

j'ai essayé comme ça en modifiant légèrement la vari&able mais je n'ai toujours rien...
<?php //var_dump($_POST['tableau'])  ;
while (isset($_POST['$tableau'])) { echo $_POST['$tableau'] ; } ?>

ViPHP
xTG
ViPHP | 7331 Messages

03 mai 2012, 16:51

var_dump() et pas echo...

Mammouth du PHP | 702 Messages

03 mai 2012, 16:59

oui je sais mais la structure est mauvaise, car j'ai essayé de faire unerequete while et insert mais ça n'a pas fonctionné.

ViPHP
xTG
ViPHP | 7331 Messages

03 mai 2012, 21:32

Ce qui est magique en PHP et comme dans tout langage c'est que si la structure ne te plait pas tu la changes. ;)
Voir mon intervention ou bien celle de Mazarini.

Mammouth du PHP | 702 Messages

04 mai 2012, 09:31

au vue de vos conseils j'ai donc remanié le code, voici ce que j'ai:
<?php
 
$sql = "SELECT * FROM scenarii where code_s='".mysql_real_escape_string($_POST['code_s'])."'";
$qry = mysql_query($sql) or die(__LINE__.mysql_error().$sql);
 
$get_date = function($data_jours) {
   $today = new DateTime();
   $today->setTime(0, 0);
   $jours = (isset($_POST['jours']) && ctype_digit($_POST['jours'])) ? $_POST['jours'] : 0;
   if (isset($_POST['submit']) && ($_POST['submit'] === 'moins')) {
      $jours = -$jours;
   }
   $nb       = $data_jours + $jours;
   $func     = ($nb < 0) ? 'sub' : 'add';
   $interval = new DateInterval("P{$nb}D");
   return $today->$func($interval)->format('d-m-Y');
};
$i = -1; // index des enregistrements
?>
<table cellpadding="5" cellspacing="5">
   <tr>
      <td><strong>CODE SCENARIO</strong></td>
      <td><strong>LIBELLE</strong></td>
      <td><strong>ACTION</strong></td>
      <td><strong>DESCRIPTION</strong></td>
      <td><strong>DATE</strong></td>
   </tr>
   <form action="<?php echo (isset($_POST['go'])) ? 'go.php' : '#'; ?>" method="post">
      <input type="hidden" name="liasse" value="<?php echo $_POST['liasse']; ?>"/>
      <?php while($row = mysql_fetch_assoc($qry)): ?>
      <tr>
         <td><input name="data[<?php echo ++$i; ?>][code_s]" type="text" value="<?php echo $row['code_s'];?>" size="10"></td>
         <td><input name="data[<?php echo $i; ?>][titre]" type="text" value="<?php echo $row['titre']; ?>" size="45"></td>
         <td><input name="data[<?php echo $i; ?>][action]" type="text" value="<?php echo $row['action']; ?>" size="15"></td>
         <td><input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['libelle']; ?>" size="55"></td>
         <td><input type="text" name="data[<?php echo $i; ?>][date]" value="<?php echo $get_date($row['jour']); ?>" size="12"></td>
      </tr>
      <?php endwhile; ?>
      <p>
         <strong>Décalage des date </strong>
         <table width="150" border="0" cellspacing="0" cellpadding="0">
            <tr>
               <td align="center" bgcolor="#FFFF99"><input type="hidden" name="code_s" value="<?php echo $_POST['code_s']; ?>">
                  <input type="image" src="images/minus_remove_green.png" width="22" height="22" name="submit"  value="moins" />
                  <input name="jours" type="text" value="" size="5" />
                  <input type="image" src="images/plus_add_green.png" width="22" height="22" name="submit" value="plus" />
               </td>
            </tr>
         </table>
      </p>
      <p align="right"><input type="submit" name="go" value="go" width="28" height="28"></p>
   </form>
</table>
Le soucis maintenant c'est que je ne sais pas comment stocker un array dans mysql, mais uniquement une variable. donc je ne sais pas comment faire la requête, je sais que je dois faire un while, mais bon je suis bloqué pour le reste, car je ne sais pas comment faire avec les noms des champs et les variables $_POST...

si quelqu'un avait ne serais-ce qu'un exemple pour la sauvegarde d'un array dans mysql ca m'aiderait bien.

Par avance merci.

ViPHP
xTG
ViPHP | 7331 Messages

04 mai 2012, 09:41

Il me semble pourtant que Mazarini t'a montré comment faire. :mrgreen:

Mammouth du PHP | 702 Messages

04 mai 2012, 09:50

en fait j'ai essayé en reprenant le code de faire cela:
<?PHP
$code_s  =  $_POST['code_s']($i];
$titre     = $_POST['titre']($i];
$action  = $_POST['action']($i];
$libelle  = $_POST['libelle']($i];
$date    = $_POST['date']($i];

while (isset($code_s)) { 

INSERT INTO ...
}

?>
mais ça plante...

Mammouth du PHP | 702 Messages

04 mai 2012, 11:07

il me dit :

que es undefine...

Mammouth du PHP | 702 Messages

04 mai 2012, 14:33

j'ai essayé de procéder de la sorte, mais en vain,
<?php
$values = array();
foreach( $data AS $_POST['data'] ) {
    $values[] = '('.implode(',', $data).')';
}
$sql = "INSERT INTO agenda (code_s, date, libelle, action) VALUES ".implode(',', $values['code_s'], $values['libelle'], $values['action'], $values['date']);
?>

Mammouth du PHP | 702 Messages

04 mai 2012, 16:29

j'ai donc fais un changement,
<?php
$values = array();
foreach( $data AS $_POST['data'] ) {
    $values[] = '('.implode(',', $data).')';
}
$sql = "INSERT INTO agenda (code_s, date, libelle, action) VALUES ".implode(',', $values);
?>
le nombre d'erreurs est radicalement réduit, néanmoins certaines demeurent et je ne sais comment les corriger, les voici:



( ! ) Notice: Undefined variable: data in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\go.php on line 184
Call Stack
# Time Memory Function Location
1 0.0004 711312 {main}( ) ..\go.php:0

( ! ) Warning: Invalid argument supplied for foreach() in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\go.php on line 184
Call Stack
# Time Memory Function Location
1 0.0004 711312 {main}( ) ..\go.php:0

ViPHP
xTG
ViPHP | 7331 Messages

05 mai 2012, 08:19

$monTableau = array(...);
foreach($monTableau as $cle => $valeur)

Mammouth du PHP | 702 Messages

09 mai 2012, 08:01

a quoi correspondent les variables cle et valeurs?

Mammouth du PHP | 702 Messages

09 mai 2012, 09:01

j'ai essayé en faisant cela:
<?php
//var_dump($_POST['data']) ;
$value = $_POST['data'] ; 

foreach($value as $cle => $valeur)
{   

$sql = 'INSERT INTO agenda SET
code_s = "'.mysql_real_escape_string($_POST['data[][code_s]']).'",
date = "'.mysql_real_escape_string($_POST['data[][date]']).'", 
libelle = "'.mysql_real_escape_string($_POST['data[][libelle]']).'",
action = "'.mysql_real_escape_string($_POST['data[][libelle]']).'"';

}
?>
en dépit de tout, il me met toujours des variables indéfinies.
du coup je restes bloqué.

ViPHP
xTG
ViPHP | 7331 Messages

09 mai 2012, 11:51

As-tu fait des affichages pour voir ce qu'était $cle et $valeur ?