Insert sur plusieurs lignes 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 : Insert sur plusieurs lignes SQL

Re: Insert sur plusieurs lignes SQL

par Flavien-web » 09 févr. 2012, 21:53

XD c'est sure, maintenant que je sais comment m'y prendre, il y vrai que c'était totalement ridicule ;)

Mais seul ceux qui font rien ne se trompe jamais !

Re: Insert sur plusieurs lignes SQL

par moogli » 09 févr. 2012, 14:30

de rien, et surtout oublie les 400 champs identiques les jours c'est une table !


@+

Re: Insert sur plusieurs lignes SQL

par Flavien-web » 09 févr. 2012, 00:54

Bon j'ai tout repris a zéro, on va voir ce que ça donne, merci pour vos orientation ;)

Re: Insert sur plusieurs lignes SQL

par Flavien-web » 08 févr. 2012, 22:57

Ton type de requête fonctionne bien si tu attribue directement les valeurs,

j'ai essayer tant bien que mal de l'adapter mais c'est trop compliquer, je trouve pas la bonne syntaxe pour y ajouter les valeurs avec le code que j'utilise, faut peut être que je recommence tout :(

ma requête sql :
$matricule=$_POST['matricule']; /// Je recupere une valeur avec un sélect pour la jointure des tables

$sql="INSERT INTO planning_3_24(matricule, jour1, jour2, jour3, jour4, jour5, jour6, jour7, jour8, jour9, jour10, jour11, jour12, jour13, jour14, jour15, jour16, jour17, jour18, jour19, jour20, jour21, jour22, jour23, jour24, jour25, jour26, jour27, jour28, jour29, jour30, jour31) VALUES ('$matricule',"; // j'affiche ma valeur ici suivi du foreach pour le reste du coup je trouve pas d'autre solution que de créer 31 champs !

foreach($_POST['jour'] as $key=>$value)
{
   $sql.= '"'.$value.'",';
}
$sql= substr($sql,0,strlen($sql)-1);
$sql.=');';   /// ça créer tout simplement les valeur automatiquement -> jour1, jour2, jour3, jour4, etc, etc ......
Ze devient fou !!!! ;)

Re: Insert sur plusieurs lignes SQL

par moogli » 07 févr. 2012, 16:41

==> PDO + requête préparée

tu fait une requête qui insère une ligne à la fois.

sinon insert into table (champs1, champ2) values (couple,1),(couple,2), (couple,3) etc etc

ceci dit ce n'est pas "portable", la solution de la requête préparée l'est :)

@+

Re: Insert sur plusieurs lignes SQL

par Flavien-web » 07 févr. 2012, 16:38

Je viens de consulter notre ami commun google ;) sur les modéle entité - association,
je comprend la structure que mes tables doit avoir, un progret considérable,
mais je vois toujours pas comment écrire la syntaxe du code pour y ajouter les valeurs avec cette fonction foreach que j'utilise :D

Merci en tout cas pour l'orientation, je progresse !

Re: Insert sur plusieurs lignes SQL

par Flavien-web » 07 févr. 2012, 16:24

Merci pour cette orientation, je n'aurai pas imaginer ça de cette manière, je vais me renseigner a ce sujet :D

Re: Insert sur plusieurs lignes SQL

par moogli » 07 févr. 2012, 14:34

salut,


tu a un gros problème de modélisation la !

chaque jours doit être un tuple (une ligne) d'une table et non une colonne.

en clair
un table "manifestation"
idmanif clef primaire
nom varchar(20)
etc etc

une table planning
id clef primaire
idmanif : clef étrangère, fait référence à l'idmanif de la première table.
datemanif date
heuredebut int
heurefin int
commentaire

Avec ça tu insère autant de "jour" (voir heure etc etc) par "manif" que tu souhaite dans la table planning et ceci quelque soit le planning.
tu n'est pas limité par le nombre de jour possible, tu n'a pas de champ inutile dans la table, c'est maintenable bref c'est ce qu'il te faut :)

pour plus d'info demande à google le modéle entité - association (c'est un bout de la méthode merise).

@+

Insert sur plusieurs lignes SQL

par Flavien-web » 07 févr. 2012, 14:26

Bonjour cher internautes,

Voici mon problème, je suis en train de créer un planning a enregistrer sur une base de données, sauf que je me complique la vie et a ce rythme la base de données va exploser :p

Je m'explique, j'utilise un " for " pour afficher mon formulaire (Dans cette example il n'y a que 10 entrées, en vrai j'en ai 200 ;) )
<?php
$nb=10;
for( $i = 0 ; $i < $nb ; $i++) 
{
echo '<input type="text" name="jour[]" value="" />';
}
?>
Ensuite j'ai créer une base de données avec 11 champs #-o

Nom de la table -> test
Champs 1 -> ID (A.I.(PRIMARY))
Champs 2 -> jour1
Champs 3 -> jour2
Champs 4 -> jour3
...
Champs 11 -> jour10

J'utilise ce code pour récupérer chaque valeur du formulaire et les insérer :
<?php

$cxn=mysql_connect('localhost','MON_USER', 'MON_PASS') or die("echec 1.");
mysql_select_db('MA_BASE',$cxn) or die('Erreur de selection '.mysql_error());
	
$sql='INSERT INTO test(jour1, jour2, jour3, jour4, jour5, jour6, jour7, jour8, jour9, jour10) VALUES (';

foreach($_GET['jour'] as $key=>$value)
{
   $sql.= '"'.$value.'",';
}
$sql= substr($sql,0,strlen($sql)-1);
$sql.=');';

$result=mysql_query($sql) or die(mysql_error());

header('Location: planning.php');
exit()

?>
Mon problème est le suivant, l'insertion fonctionne parfaitement, mais c'est pas propre, je sais qu'il existe une possibilité d'ajouter plusieurs ligne afin d'optimiser son contenu,
avec plusieurs requête en meme temps, mais comment y attribuer les valeurs ? Quel syntaxe utiliser ? Je suis perdu ;)

Merci d'avance pour ce qui porteront un intérêt a ma requête !