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 :

Requête INSERT INTO par méthode GET [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 90
    Par défaut Requête INSERT INTO par méthode GET
    bonjour,
    Je voudrai insérer les données dans ma base par la méthode GET. C'est un calvaire je n'y arrive pas! Pourriez vous m'aider? Merci!
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    		<form name="etat_absences" action="form_gestion_absences.php" method="POST">
    			<fieldset class="fieldset_nouveau_dossier">
    				<legend>
    					GESTION DES ABSENCES
    				</legend>
    				<fieldset class="fieldset_date">				
    					<label for="date" class="label">
    						Date début
    					</label>
    					<input type="date" name="date_debut_abs" value="<?php  echo $_POST['date_debut_abs'];?>" id="date">
    					<br><br>
    					<label for="date" class="label">
    						Date fin
    					</label>
    					<input type="date" name="date_fin_abs" value="<?php  echo $_POST['date_fin_abs'];?>" id="date">
     
    			</fieldset>
    			<br>
    			<fieldset class="fieldset_motif">					
    				<label for="motif_absence" class="label">
    					Motif
    				</label>
    				<select name="motif_absence" id="motif_absence">
    				<option value="">
    						-------
    					</option>
    					<option value="absence sans motif" <?php if ( $_POST['motif_absence'] == 'absence sans motif') echo 'selected=selected';?>>
    						absence sans motif
    					</option>
     	    			<option value="absence autorisé" <?php if ( $_POST['motif_absence'] == 'absence autorisé') echo 'selected=selected';?>>
    						absence justifiée
    					</option>
    	    		</select>
    				<br><br><br>			
    				<input type="text" name="note_absence" value="<?php  echo $_POST['note_absence'];?>" maxlength="35" placeholder="précisez le motif !" class="autre_motif">
    				<br>
                                     <input type="submit" name="valider" value="Valider les absences" class="bouton_absences">
     
    <br>
    			</fieldset>
     
    			<p id="retour">
    						<?php
     
    			if (isset($_GET['id'])) {
    				require ("Connect.php");
    				$connexion=mysql_pconnect (SERVEUR, NOM, PASSE);
    				mysql_select_db (BASE,$connexion);			
    	                       $sql = mysql_query("SELECT * FROM profil WHERE id=".$_GET['id']);
                                   $result=mysql_fetch_array($sql);
                                   if($result){		
                                      echo '<p id="retour">
                                         <a href="form_gestion.php?id='.$result['id'].'">
                                         retour</a>
    			     <br><p>';	
                                                }
                                       }
                             ?>			
                       </p>		
    		<?php			
    	     if (isset($_GET['id'])) {
    	     require ("Connect.php");
    	     $connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
    	     mysql_select_db (BASE,$connexion);
    	    $requete = "INSERT INTO afi_situation VALUES ('$_GET[id]',
    '','','','','','','','','','','','','','','','','','','','','$_POST[date_debut_abs]','$_POST[date_fin_abs]','$_POST[motif_absence]','$_POST[note_absence]')";
     	   $result = mysql_query ($requete, $connexion);
                 if($result){		
                  echo '<p id="valider">VALIDER<p>';	
     
                  }
     
    	  }
            ?>		
    </form>
    ainsi, l'ID est bien insérée dans la base,une ligne est créée, mais pas les autres données du formulaire. Ou est le problème.

  2. #2
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Bonjour,
    Je ne sais pas qu'est-ce qui ne fonctionne pas, un message d'erreur m'éviterait d'aller chercher mon deck de tarot.
    Ceci dit, si on parle de problèmes, il y en a certains dans ta requête INSERT:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table_name (column1, column2, column3,...)
    VALUES (value1, value2, value3,...)

    GET d'un côté, POST de l'autre ? quel intérêt d'avoir deux traitements différents ?
    Ensuite, passer l'id par GET présente un problème de sécurité contre les injection SQL, mais ce n'est pas ta question.
    Si tu utilises la syntaxe SQL INSERT INTO table_name VALUES (value1, value2, value3,...), il faut que tes valeurs respectent exactement le nombre et l'ordre de tes colonnes dans ta table. Est-ce le cas ?
    Enfin, je te déconseille fortement d'utiliser mysql_select_db et mysql_query, vu que cette extension est obsolète et son support va cesser d'ici quelque temps, sans rétrocompatibilité avec les nouvelles version de PHP (depuis PHP 5.5.0)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    C'est un problème d'incohérence et de manque de logique.

    1/ Je suppose que la page s'appelle form_gestion_absences.php,
    et que tu y accèdes par un lien de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="form_gestion_absences.php?id=<?php echo $row['id']; ?>">Modifier</a>
    2/ Donc, la 1ère fois qu'on arriv esur la page, l'URL est bien de la forme : "form_gestion_absences.php?id=xxx"
    On récupère bien l'id par :
    $id = $_GET['id'];

    Jusque là, tout va bien.
    C'est après que ça se corse...

    3/ Le formulaire de modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		<form name="etat_absences" action="form_gestion_absences.php" method="POST">
    • method="POST"
    • action="form_gestion_absences.php"

    Quand on soumet le formulaire, Quid de l'id ? Plus de id, donc plus de ligne à modifier en BdD.

    2 solutions : 1 mauvaise et 1 bonne :
    • Soit on le remet dans l'action : CE QUE JE DÉCONSEILLE FORMELLEMENT ! (car l'URL est facilement modifiable)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		<form name="etat_absences" action="form_gestion_absences.php?id=<?php echo $_GET['id']; ?>" method="POST">
    • Soit dans un input type="hidden"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		<form name="etat_absences" action="form_gestion_absences.php" method="POST">
    			<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
    ...qu'on récupèrera, après soumission du formulaire, comme les autres champs : avec $_POST.

    4/ Enfin, et non des moindres : TES REQUÊTES SONT DES PASSOIRES A INJECTIONS SQL !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $requete = "INSERT INTO afi_situation VALUES ('$_GET[id]',
    '','','','','','','','','','','','','','','','','','','','','$_POST[date_debut_abs]','$_POST[date_fin_abs]','$_POST[motif_absence]','$_POST[note_absence]')";
    ON NE MET JAMAIS DES DONNÉES provenant d'un utilisateur DIRECTEMENT DANS UNE REQUÊTE !

    N.B. Doit-on encore dire :
    que mysql_ est OBSOLETE et disparaitra bientôt ?
    • Et qu'à la place, il faut utiliser mysqli_ ou PDO ?
    • Et les requêtes préparées ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 90
    Par défaut
    merci à tous pour vos conseils. Je débute et je tiendrai compte de vos remarques!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédure Form_Open,problème de requête Insert into
    Par Averroes dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/08/2007, 21h49
  2. Pb requète INSERT INTO
    Par yannick9 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 14/08/2007, 10h37
  3. Fichier corrompu par méthode get en Net::FTP
    Par voulton dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 25/07/2007, 14h27
  4. Requête INSERT INTO SELECT
    Par unix27 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/02/2007, 00h36
  5. Réponses: 3
    Dernier message: 05/03/2006, 23h38

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