Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete automatisé

Sujet résolu
    10 janvier 2018 à 21:35:57

    Bonjours à tous,
    Après au moins deux mois de tentatives et de recherche (sur le net) infructueuse, j'aimerais vos conseils.
    Je cherche à créer une requete d'ajout à une Base de donnée, qui soit totalement automatisé, afin de le rendre utilisable pour plusieurs formulaires sur plusieurs BDD différentes. 
    en marquant un "echo" avec les 3 différents cookies, ca m'affiche bien toute la chaîne des 57 valeurs. Mais l'orsque je veut executer le code rien ne se passe sur phpMyAdmin! que faire s'il vous plaît?!!
    merci à tous!!!.
    <?php
    
    session_start();
    error_reporting(E_ALL & ~E_NOTICE);
    
    $baseUtilise = $_SESSION["BDD_A_Utiliser"];
    try
    	{	
    		$bdd = new PDO('mysql:host=localhost; dbname='.$baseUtilise.';charset=utf8', 'root', '***********');
    	}
    catch(Exception $e)
    	{
    		die('Erreur : '.$e->getMessage());
    	}
    //--------------------------------------------------------------------------------------------------------------------------------------------------
    
    include("AAA_Variables.php");
    
    $tempo=$_SESSION["denominationDeLaSection"];
    $pageCible="valider$tempo";
    
    
    $atempo=$tempo.'FormSurBDD';
    $btempo=$tempo.'EquivalentSurBDD';
    
    // premieres donées de la chaîne.
    $atemponum1="$tempo"."FormSurBDD1";
    $aa=${"$atemponum1"};		
    $a="'$aa'";
    $d1="da1";
    $_COOKIE["$d1"]=$a;//ex.: 'vivace'
    
    $btemponum1=$tempo.'EquivalentSurBDD1';
    $bb=${"$btemponum1"};	
    $b="'$bb'";
    $d2="db1";
    $_COOKIE["$d2"]=$b;// ex.: 'typeDeCulture'
    
    $intero	='?';		
    $valNC="VNC1";		
    $_COOKIE["$valNC"]=$intero;// donne : ?
    
    
    $nombreMax=57;
    
    //Les données suivantes.	
    	for( $i=2;$i<=$nombreMax;$i++)
    	{
    		$ii=$i-1;
    		$iii=$i-2;
    		
    		$denoa="$atempo"."$i";
    		$aa=${"$denoa"};
    		$a="'$aa'";
    		$dda="da$ii";
    		$ca=$_COOKIE["$dda"].', '.$a;
    		$da="da$i";
    		$_COOKIE["$da"]=$ca;// pour stocker toute la chaîne. ex. : 'Vivace', 'Vi.', 'Coreopsis', '040', ...
    		unset ($_COOKIE["da$iii"]);// efface les données précédantes (elle ne sont plus utiles).
    		
    		$denob = "$btempo"."$i";
    		$bb=${"$denob"};
    		$b="'$bb'";
    		$ddb="db$ii";
    		$cb=$_COOKIE["$ddb"].', '.$b;
    		$db="db$i";
    		$_COOKIE["$db"]=$cb;// pour stocker toute la chaîne. ex. : 'typeDeCulture', 'codeCulture', 'Genre', 'codeGenre', ...
    		unset ($_COOKIE["db$iii"]);// efface les données précédantes (elle ne sont plus utiles).
    		
    		
    		$VaNC="VNC$ii";
    		$cc=$_COOKIE["$VaNC"].', '.$intero;
    		$CVNC="VNC$i";
    		$_COOKIE["$CVNC"]=$cc; // donne : ?, ?, ?, ?, ...
    		unset ($_COOKIE["VNC$iii"]);// efface les données précédantes (elle ne sont plus utiles).
    		
    
    	}
    	
    if(isset($_POST["$pageCible"]))//Si on a appuyé sur le bouton "submit" du formulaire.
    	{
    		$listeLignesBDD= $_COOKIE["db$nombreMax"];		
    		$listeCookiesFormulaire = $_COOKIE["da$nombreMax"];		
    		$listePointsDInterrogation = $_COOKIE["VNC$nombreMax"];	
    		$tableChoisie = $_SESSION["table_A_Utiliser"];
    
    		$ajout = $bdd->prepare('INSERT INTO \''.$tableChoisie.'\' ('.$listeLignesBDD.')VALUES('.$listePointsDInterrogation.')');
    		$ajout->execute(array('.$listeCookiesFormulaire.'));	
    	
    	}
    	
    echo"<script>location.href = history.back(-1);</script>";	
    	
    ?>
    
    • Partager sur Facebook
    • Partager sur Twitter
      10 janvier 2018 à 23:07:45

      Commences par activer les erreurs PDO/SQL avant de te plaindre que ça ne fait rien.

      > \''.$tableChoisie.'\'

      Les noms des tables ne se quotent pas (du moins pas comme ça).

      > '.$listeCookiesFormulaire.'

      Euh, tu ne bindes qu'une valeur qui est littéralement .$listeCookiesFormulaire. ...

      C'est quoi toutes ces variables intermédiaires ? Il y en aurait pas la moitié qui ne sert à rien ? Pas besoin d'obfusquer le code là.

      -
      Edité par julp 10 janvier 2018 à 23:11:53

      • Partager sur Facebook
      • Partager sur Twitter
        11 janvier 2018 à 20:28:39

        Merci Julp pour ta reponse, .

        j'ai modifié les quotes pour le nom de la table, ainsi est-ce la bonne écriture? :

         - ... INSERT INTO '.$tableChoisie.' ('.$listeLignesBDD.') ...

        Je vait te parraitre un peu stupide peu etre, mais je sait pas ce que veut dire "binder une valeur"!! ça veut dire quoi s'il te plaît.

        le variables intermédiaires servent a créer les élements de la boucle, qui seront ensuite utiliser pour incorporer dans la requete. J'ai créer les "name", "id" et variable de mon ""site"" sous forme de concatenation de plusieurs mot, exemple :

        $tracabiliteGrainesJPTypeCultureTexte (pour codifier le :  type de cuture de la plante)

        $tracabiliteGrainesJPGenreTexte (pour codifier le :  genre de la plante)

        $tracabiliteGrainesJPEspeceTexte (pour codifier le :  l'espece de la plante)

        ...

        $miseEnCultureCoreopsis_grandifloraXHybrida01256514  (pour codifier la mise en culture du Coreopsis grandiflora XHybrida, qui à comme code d'aquisition : 01256514 )

        ...

        En activant les erreur pdo mysql, il ne me renvoie que des( Notice: Undefined index: ), qui sont des case vide sur le formulaire,est-ce ça qui coince l'execution de la requete? (la clef primaire de ma table, ne fait pas partie des cases vide la clef primaire est renseigné sur le formulaire)

        -
        Edité par michazombi 11 janvier 2018 à 20:35:30

        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2018 à 0:17:36

          Eureka!!!

          réussi! ...enfin je croit, je l'ai tester pour une référence, et ça à l'air de fonctionner. Au lieu de tout insérer dans la BDD en un coup, j’insère le code de traçabilité seul (c'est la clef primaire de la BDD), puis je fait un Update pour insérer le reste.

          C'est difficile de coder quand on a peu de connaissance dans ce domaine!!!

          dite-moi ce que vous en penser, puis je baliserait ce sujet comme résolu.

          <?php
          
          session_start();
          //error_reporting(E_ALL & ~E_NOTICE);
          
          $baseUtilise = $_SESSION["BDD_A_Utiliser"];
          
          try
          	{	
          		$bdd = new PDO('mysql:host=localhost; dbname=vegetaux', 'root', '**********');
          	}
          catch(Exception $e)
          	{
          		die('Erreur : '.$e->getMessage());
          	}
          //-----------------------------------------------------------------------------------------------------------------------------------------
          
          include("AAA_Variables.php");
          
          $section=$_SESSION["denominationDeLaSection"];
          $pageCible="valider$section";
          
          $atempo=$section.'FormSurBDD';
          $btempo=$section.'EquivalentSurBDD';
          
          $tableChoisie = $_SESSION["table_A_Utiliser"];
          
          $nombreCible='nombremax'.$section;
          $nombreMaxDeCritere=$_SESSION["$nombreCible"];
          $nombreMax=$nombreMaxDeCritere;
          
          //------------------------------------------------------------
          
          $section_A_NomTemporaire0="$section"."FormSurBDD0";
          $section_A_Nom_Temporaire0=${"$section_A_NomTemporaire0"};
          $section_A_Nom_0="$section_A_Nom_Temporaire0";
          
          
          $section_B_NomTemporaire0=$section.'EquivalentSurBDD0';
          $section_B_Nom_Temporaire0=${"$section_B_NomTemporaire0"};
          $section_B_Nom_0="$section_B_Nom_Temporaire0";
          
          if(isset($_POST["$pageCible"]))
          {
          
          	for( $i=1;$i<=$nombreMax;$i++)
          	{
          
          		$ii=$i-1;
          		$iii=$i-2;
          		
          	$bdd->exec('INSERT INTO '.$tableChoisie.' ('.$section_B_Nom_0.') VALUES(\''.$section_A_Nom_0.'\')');
          
          		$denominationSectionTemporaire_A="$atempo"."$i";
          		$denominationSection_Temporaire_A=${"$denominationSectionTemporaire_A"};
          		$denominationSection_A="'$denominationSection_Temporaire_A'";
          		$dda="SectionA$ii";
          		$nomSectionA="SectionA$i";
          		$_COOKIE["$nomSectionA"]=$denominationSection_A;
          		$SectionA=$_COOKIE["$nomSectionA"];
          		unset ($_COOKIE["SectionA$iii"]);
          			
          				
          		$denominationSectionTemporaire_B = "$btempo"."$i";
          		$denominationSection_Temporaire_B=${"$denominationSectionTemporaire_B"};
          		$denominationSection_B="$denominationSection_Temporaire_B";
          		$ddb="SectionB$ii";
          		$nomSectionB="SectionB$i";
          		$_COOKIE["$nomSectionB"]=$denominationSection_B;
          		$SectionB=$_COOKIE["$nomSectionB"];
          		unset ($_COOKIE["SectionB$iii"]);
          	
          	
          	$bdd->exec('UPDATE '.$tableChoisie.' SET '.$SectionB.' = '.$SectionA.' WHERE '.$section_B_Nom_0.' = \''.$section_A_Nom_0.'\''); 
          	
          	
          	}
          }
          	
          	
          echo"<script>location.href = history.back(-1);</script>";	
          	
          ?>
          
          
          
          
          
          
          
          
          
          • Partager sur Facebook
          • Partager sur Twitter

          requete automatisé

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown