IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Validation JSON d'un formulaire et récupération variable PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Validation JSON d'un formulaire et récupération variable PHP
    Bonjour à tous,

    Je me tourne vers vous car j'ai un sacré soucis et je ne sais pas comment m'en sortir.

    J'utilise redips-drag pour ceux qui connaissent. Il s'agit d'un script qui permet de faire du drag and drop sur un tableau puis d'enregistrer le tout en BDD.

    Tout marche. Cependant, je cherche un moyen d'enregistrer les données récupérées dans une table spécifique selon le planning que l'utilisateur modifie.
    L'utilisateur choisit d'afficher le planning qu'il veut à l'aide d'un select. Suite à cela il peut le modifier. Mais lors de l'enregistrement je n'arrive pas à faire en sorte que cela mette à jour le planning qu'il a choisit via le select.

    Voila les différents scripts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    	$classe = $_POST['classe'];
    	$sth = $dbh->prepare("SELECT * FROM drag_$classe");
    	$sth->execute();
     
    ?>
    <div class="table-overflow">
    <table id="table1">
    	<colgroup><col width="50"/><col width="120"/><col width="120"/><col width="120"/><col width="120"/><col width="120"/><col width="120"/></colgroup>
    	<tr>
    		<td colspan="7" class="redips-mark header">2014-2015 : CLASSE <?php echo strtoupper($classe); ?></td>
    	</tr>
    	<tr>
    		<td class="redips-mark header"></td>
    		<td class="redips-mark header">Date</td>
    		<td class="redips-mark header">Matin</td>
    		<td class="redips-mark header">Intervenant</td>
    		<td class="redips-mark header">Arpès-Midi</td>
    		<td class="redips-mark header">Intervenant</td>
    		<td class="redips-mark header">Commentaire</td>
    	</tr>
    		<?php
    			while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    				$data[$row['row']][$row['cell']] = $row['date'].$row['id'];
    			}
    			for ($ligne = 2; $ligne < 65; $ligne++) {
    				echo '<tr style="background-color: #eee">';
    				echo '<td class="redips-rowhandler"><div class="redips-drag redips-row move"></div></td>';
    				for ($colonne = 1; $colonne < 7; $colonne++) {
    					$valeur = isset($data[$ligne][$colonne]) ? $data[$ligne][$colonne] : '';
    					if($valeur != '')
    					{
    						echo '<td><div id="'. utf8_decode($valeur) .'" class="redips-drag t3 contenu">'. utf8_decode($valeur) .'</div></td>';
    					}
    					else
    					{
    						echo '<td></td>';
    					}
    				}
    				echo '</tr>';
    			}
    		?>
    </table>
    </div>
    <div class="table-overflow">
    </div>
    <div class="clear"></div>
    <div class="ewf-row div_input_planning">
    	<input type="button" value="Enregistrer" onclick="save('json')" class="input_planning"/>	
    	<input type="button" id="btnExport" value="Exporter sous Excel" class="input_planning"/>
    </div>
    Ci-dessus c'est un extrait de page. Vous pouvez voir que la validation se fait grace à une fonction json.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    	<?php urldecode($_SERVER['QUERY_STRING']) ?>
    	<?php
    		$base = mysql_connect ("***", "***", "***");
    		mysql_select_db (***', $base) ;
    		$vider = "TRUNCATE TABLE drag";
    		mysql_query($vider);		
    		// accept JSON parameter (and Un-quote string if needed)
    		$p = urldecode($_REQUEST['p']);
    		// decode JSON object (it shouldn't be decoded as associative array)
    		$arr = json_decode($p);
    		var_dump($arr);
    		// open loop through each array element
    		foreach ($arr as $p){
    			// set id, row index and cell index
    			$id = $p[0];
    			$row = $p[1];
    			$cell = $p[2];
    			$date = $p[3];
    			// instead of print, you can store accepted parameteres to the database
    			$id = htmlentities($id, ENT_QUOTES, "UTF-8");
    			$date = htmlentities($date, ENT_QUOTES, "UTF-8");
    			$ajout = "INSERT INTO drag_$classe VALUES('','$id','$row','$cell','$date')";
    		    mysql_query($ajout);
    		}
    		mysql_close($base);
    	?>
    Ci-dessus le bout de code JSON qui va enregistrer les infos en BDD.

    Après il y a aussi le script source de redips-drag avec les différentes fonctions. Si vous en avez besoin je le rajoute mais il est long !


    Merci pour votre aide ;-)

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Premièrement je vous conseille d'utiliser PDO pour la seconde requête, les fonctions préfixées par mysql_ étant en état de quasi obsolescence.

    Deuxièmement, c'est un peu flou comme description, peut-on avoir le détail de ce que vous rencontrez en console php en entrée du script #2 (en faisant
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    error_log($_SERVER['QUERY_STRING'],0);
    ) ou javascript au lancement de save('json')

    Sinon, quand je fais un insert en sql, j'ai une tendance, peut-être maniaque, à renseigner les correspondances de champs ainsi:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "INSERT INTO drag_$classe (column1, column2, column3) VALUES('$valueForColumn1','$valueForColumn2','$valueForColumn3')"
    en PDO, pour faire ça, il faut passer par les fonctions prepare et bindParam pour bien faire, exemple:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $statement=$db->prepare("select data_type from information_schema.columns where table_name=:table and column_name=:column");
    $statement->bindParam(':table', $table, PDO::PARAM_STR);
    $statement->bindParam(':column', $k, PDO::PARAM_STR);
    0x4F

Discussions similaires

  1. Récupération variable php
    Par gueguenk dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/03/2014, 11h13
  2. [AJAX] Formulaire dynamique - Récupération de variable
    Par Ben79 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/06/2007, 14h46
  3. Réponses: 29
    Dernier message: 02/04/2007, 09h42
  4. Récupération variable d'un formulaire
    Par chrgui dans le forum Langage
    Réponses: 4
    Dernier message: 15/01/2007, 15h15
  5. [PHP-JS] Récupération variable php et Javascript
    Par GarGamel55 dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2006, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo