[RESOLU] transférer un tableau pour mettre a jour ma base sql

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 : [RESOLU] transférer un tableau pour mettre a jour ma base sql

Re: transférer un tableau pour mettre a jour ma base sql

par sirakawa » 08 août 2014, 15:29

Avec mes excuses pour les erreurs:
index.php
<?PHP
$chaine = "<form method = 'post' action = 'traiter.php'>";

for ($i = 16; $i <=40; $i++)
{
$nom = "classes[$i][0]";
$chaine.= "<br>Classe <input type = 'text' readonly = 'readonly' name = '$nom'  value = '$i' />";
$nom1 = "classes[$i][1]";
$chaine.= "principal <input type = 'text' name = '$nom1' />";
$nom2 = "classes[$i][2]";
$chaine.= "référent <input type = 'text' name = '$nom2' />";
}
$chaine .= "<button type = 'submit'>OK</button>";
print "$chaine";
?>
traiter.php
<?PHP
print_r($_POST);
extract($_POST);
foreach ($classes as $une_classe)
{
print "<br>";
print_r($une_classe);
$nom_classe = $une_classe[0];
$princ = $une_classe[1];
$ref = $une_classe[2];
print "$nom_classe $princ $ref";
//ici une commande mysql
}
?>

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 08 août 2014, 15:01

je dois être complètement stupide ou complètement perdu mais non j'y arrive pas

je laisse tomber pour le moment je vais essayer de trouver quelqu'un pour m'aider sans passer par de nombreuses et inextricable énigme.

merci beaucoup pour l'interet dont vous avez fait preuve.

Cordialement

Re: transférer un tableau pour mettre a jour ma base sql

par sirakawa » 08 août 2014, 14:50

Tu écris traiter.php
au début
<?PHP
print_r($_POST];
?>
et tu verras que c'est tout simple.

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 08 août 2014, 14:41

ok mais comment ?

comme tu t'en doute je suis completement perdu.

ton code dans la reception du formulaire ?
dans la création ?

je vois pas du tout

Re: transférer un tableau pour mettre a jour ma base sql

par sirakawa » 08 août 2014, 14:15

C'est justement ce que fait le formulaire que j'ai rédigé à condition bien sûr de l'exploiter:
version modifiée à numéros de classes fixes
<?PHP
$chaine = "<form method = 'post' action = 'traiter.php'>";

for ($i = 16; $i <=40; $i++)
{
$nom = "classe[$i]['classe']";
$chaine.= "<br>Classe <input type = 'text' readonly = 'readonly' nama = '$nom'  value = '$i' />";
$nom = "classe[$i]['princ']";
$chaine.= "principal <input type = 'text' nama = '$nom' />";
}
print "$chaine";


?>

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 08 août 2014, 13:59

non les classes existent une fois pour toutes, elles ne changent pas d'une année sur l'autre.
c'est pour cela que je ne fait qu'un update des profs prin et referent qui eux peuvent changer.

dans ma base, il y a une table classes avec toutes les classes dans laquelle je voudrais pouvoir updater les noms des profs.

pas grave...

Re: transférer un tableau pour mettre a jour ma base sql

par sirakawa » 08 août 2014, 13:44

Parce que si j'ai bien compris, dans ta base il devrait y avoir des numéros de classes associés à des noms de prof principaux et de profs référents (horrible jargon de péda gogues comme dirait Roger Ikor).
Je suppose que le nom de chaque prof doit être saisi dans _un formulaire avant de pouvoir être transféra dans la base. C'est précisément à ça que sert le formulaire que j'ai rédigé en tenant compte de ce que je vois que tu n'as pas compris des remarques des autres.
Enfin, il existe une commande SQL: DELETE
Avec toutes mes excuses pour cette incompréhension de ma part.

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 08 août 2014, 13:38

les réponses:

les N° se crée en fonction de l'insertion dans la base de donnée. Donc ils ont commencé à 0 puis au fur et a mesure des test ajouter, effacer, ajouter on arrive a ces N°.
c'est pour cela qu'ils sont discontinus.

Pour ton script, je vois pas l'objectif etant de mettre a jour la base pas d'afficher ????

Je comprend pas .

Re: transférer un tableau pour mettre a jour ma base sql

par sirakawa » 08 août 2014, 11:44

Trois choses m'étonnent:
que les indices commencent à 16
que les indices soient discontinus
quil n'y ait pas de id_class dans les posts
ce sont des facteurs de complication de la consultation de ces données.
en effet en utilisant un while comme tu fais tu as forcément une erreur:
$i = 0; 
      while($i < $nb_classe) 
      { 
          //LES TABLEAUX SONT INDEXES PAR ID_CLASSE
         $id_classe = $_POST['id_classe']; 
var_dump(id_classe); //serait instructif
         $prof_referent = $_POST['prof_ref'][$id_classe]; //ici il y a une erreur
         $prof_prin = $_POST['prof_prin'][$id_classe];
         

  mysql_query (" UPDATE classes SET  prof_referent = '$prof_referent', prof_prin = '$prof_prin'
        WHERE id_classe = '$id_classe' ") ;

      $i++;
          
/* echo '<script language="Javascript"> document.location.replace("gest_classes.php"); </script>';      */
      }
          
}
Quant à moi je modifierais le formulaire pour avoir en sortie un seul tableau
$classes = array ("num" =>, "princ" =>, "referent" =>);
<?PHP
$chaine = "<form method = 'post' action = 'traiter.php'>";

for ($i = 16; $i <=40; $i++)
{
$nom = "classe[$i]['classe']";
$chaine.= "<br> <input type = 'text' nama = '$nom' />";
$nom = "classe[$i]['princ']";
$chaine.= "<input type = 'text' nama = '$nom' />";
}
print "$chaine";


?>

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 08 août 2014, 11:11

voila le resultat

Array ( [button] => Envoyer [prof_prin] => Array ( [16] => [27] => [28] => [30] => [31] => [32] => [33] => [34] => [35] => [36] => [38] => [39] => [40] => Sébastien BINGER [41] => [42] => [37] => [43] => [29] => [44] => ) [prof_ref] => Array ( [16] => [27] => [28] => [30] => [31] => [32] => [33] => [34] => [35] => [36] => [38] => [39] => [40] => Patrice REPOSEUR [41] => [42] => [37] => [43] => [29] => [44] => ) )

apparemment ca fonctionne cote formulaire

Re: transférer un tableau pour mettre a jour ma base sql

par sirakawa » 08 août 2014, 10:49

Comme,nce donc par faire:
print_r($_POST); die();
On y verra plus clair (erreur dans le formulaire ou dans le traitement visible là)

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 08 août 2014, 09:09

Bonjour,

j'ai essayé avec

$id_classe = $_POST['id_classe'][$i];

cela ne fonctionne pas ???

Re: transférer un tableau pour mettre a jour ma base sql

par xTG » 07 août 2014, 15:36

Je dirais que la coquille se trouve ici :
$id_classe = $_POST['id_classe'];
Je mettrai plutôt :
$id_classe = $_POST['id_classe'][$i];
Ou bien s'il n'y a pas de trou dans les id_classe autant utiliser directement $i.

Re: transférer un tableau pour mettre a jour ma base sql

par kaobar » 07 août 2014, 11:29

Bonjour,

merci pour cette reponse mais cela ne fonctionne pas.

en effet voici le message d'erreur

----------------------------------------------------------------------------------------------------------------------

Code : Tout sélectionner

( ! ) Warning: Illegal offset type in E:\APP_DATA\wamp\www\Gest_PFMP_2014\fichiers\pfmp\gest_classes.php on line 212 Call Stack # Time Memory Function Location 1 0.0009 411968 {main}( ) ..\gest_classes.php:0 ( ! ) Warning: Illegal offset type in E:\APP_DATA\wamp\www\Gest_PFMP_2014\fichiers\pfmp\gest_classes.php on line 213 Call Stack # Time Memory Function Location 1 0.0009 411968 {main}( ) ..\gest_classes.php:0
----------------------------------------------------------------------------------------------------------------------

lorsque que je fait un
echo $id_classe ;
il ne s'affiche que ARRAY

cordialement

Re: transférer un tableau pour mettre a jour ma base sql

par sadeq » 06 août 2014, 19:44

Bonjour, il faut changer les noms des champs input pour les considérer comme tableaux en les suffixant avec 2 crochets [] et en les indexant par l'id_classe.

Comme ça par exemple :
echo( "<td><div align=\"center\"> <input type=\"text\" name=\"prof_prin[".$result["id_classe"] ."]\" id=\"prof_prin\" value = \"".$result["prof_prin"] ."\"/>"."</div></td>\n" );
echo( "<td><div align=\"center\"> <input type=\"text\" name=\"prof_ref[".$result["id_classe"] ."]\" id=\"prof_ref\" value = \"".$result["prof_referent"] ."\"/>"."</div></td>\n" );
Et dans le code de màj il faut récupérer les tableaux puis lancer l'update en boucle. comme ça :
<?php

 //-----------------------   MAJ BDD -------------------------
if($action == "maj") {

  mysql_select_db($database_dbprotect, $bdd);
  $query_users = "SELECT count(*) AS id_classe FROM classes "; 
     $users = mysql_query($query_users, $bdd) or die(mysql_error());
         while (        $row_users = mysql_fetch_assoc($users)) {
     $nb_classe = $row_users['id_classe']; }

 //---------------------------
        $i = 0; 
     while($i < $nb_classe) 
     { 
         //LES TABLEAUX SONT INDEXES PAR ID_CLASSE
        $id_classe = $_POST['id_classe'];
        $prof_referent = $_POST['prof_ref'][$id_classe];
        $prof_prin = $_POST['prof_prin'][$id_classe];
        

 mysql_query (" UPDATE classes SET  prof_referent = '$prof_referent', prof_prin = '$prof_prin'
       WHERE id_classe = '$id_classe' ") ;

     $i++;
         
/* echo '<script language="Javascript"> document.location.replace("gest_classes.php"); </script>';      */
     }
         
}
 ?>