Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
14 Décembre 2018, 08:56:38


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: Coment insérer en une seule fois plusieurs enregistrements dans une table mysql  (Lu 4772 fois)
0 Membres et 1 Invité sur ce fil de discussion.
district9
Bavard
***
Hors ligne Hors ligne

Messages: 114



Voir le profil WWW
« le: 15 Novembre 2008, 21:48:38 »

Bonsoir à tous,

Comme beaucoup sur ce forum, je me suis lancée dans la programmation en php.
Je suis actuellement en train d'écrire une application permettant de gérer un stock de livres (des manuels scolaires pour être très précise).

Je voudrai pouvoir insérer en une seule fois plusieurs enregistrements dans la même table.
Ex : si j'achète 10 manuels de français, je veux pouvoir saisir un seul titre, auteur ... mais bien un nombre d'exemplaires égal à 10 et que cela m'insère 10 enregistrements dans ma table (puisque même si j'ai un seul titre de manuel, j'en ai bien acheté 10 !  Clin d'oeil)

Sauriez-vous comment modifier ma requête

Citation
$requete="insert into manuels (discipline, niveau, titre, auteur, editeur,
 collection, annee, etat, nombre) values ('$discipline','$niveau','$titre',
'$auteur', '$editeur', '$collection', '$annee', '$etat', '$nombre')";

pour enregistrer une série de manuels ?
Je suppose qu'il faut que ma table soit auto incrémentée... mais après ...

Merci d'avance de l'aide de tous les Weboosters pro du php !
Bonne soirée à tous
Journalisée

Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 15 Novembre 2008, 21:48:38 »

 Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #1 le: 15 Novembre 2008, 22:06:06 »

Salut,
Pourquoi ajouter 10 entrées dans ta BDD au lieu d'ajouter un champs "nbrExemplaires" dans la structure de ta table ?
Je vois qu'il y a un champs nombre, il correspond à quoi ?
++
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
district9
Bavard
***
Hors ligne Hors ligne

Messages: 114



Voir le profil WWW
« Répondre #2 le: 15 Novembre 2008, 22:18:02 »

En fait, le champ nombre, pour l'instant, il correspond au nombre d'enregistrements que je voudrai insérer et au champ "nombre" du formulaire de saisie des manuels. Mais il n'a pas vocation à rester ...  Sourire puisque je veux insérer les enregistrements individuellement.

En fait, la finalité de tout ça, tu t'en doutes peut-être, c'est de prêter les manuels ! Il faut donc qu'ils soient distincts les uns des autres (même s'il s'agit du même livre !)  Clin d'oeil
Journalisée

K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #3 le: 15 Novembre 2008, 22:27:57 »

Dans ce cas ça risque d'être lourd mais tu peux utiliser une boucle Clin d'oeil
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
district9
Bavard
***
Hors ligne Hors ligne

Messages: 114



Voir le profil WWW
« Répondre #4 le: 15 Novembre 2008, 22:32:04 »

Si je comprends et traduis bien avec mes bases de php, une boucle ça veut dire quelque chose comme

Citation
for ($i=0; $i<count($nombre); $i++)
...

jusqu'à ce que ma boucle atteigne le chiffre indiqué par la variable $nombre ...

Journalisée

Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« Répondre #4 le: 15 Novembre 2008, 22:32:04 »

 Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #5 le: 15 Novembre 2008, 22:47:58 »

Oui exactement !
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
district9
Bavard
***
Hors ligne Hors ligne

Messages: 114



Voir le profil WWW
« Répondre #6 le: 15 Novembre 2008, 22:58:58 »

Bon il n'y a plus qu'à alors ... et mes bases n'ont pas l'air si mauvaises que ça ...
Bon je vais tenter le coup et on verra si ça fonctionne !
Merci du coup de main ... mais je pense que je reviendrai vers vous parce qu'il va falloir que je puisse tous les supprimer aussi ces manuels !! Clin d'oeil

Bonne soirée !
Journalisée

district9
Bavard
***
Hors ligne Hors ligne

Messages: 114



Voir le profil WWW
« Répondre #7 le: 11 Décembre 2008, 11:35:58 »

Bonjour à tous,

Je reviens vers vous tardivement pour vous donner la réponse à la question que je vous avais soumise (eh, oui entre temps, j'ai progressé en php ...  Clin d'oeil et j'ai pris le temps de me pencher sur le problème ...)
Bref, j'ai finalement utilisé le code suivant :

Code:

//requete d'insertion

for ($i=0;$i<$nb;$i++){

$requete="INSERT INTO manuels (discipline,niveau,titre,auteur,editeur,collection,
annee,isbn,etat) values ('$discipline','$niveau','$titre','$auteur','$editeur',
'$collection','$annee','$isbn','$etat')";
$resultat= mysql_query($requete,$connexion);
}


code où évidemment la variable $nb est passée par le formulaire et contient le nombre d'enregistrements à insérer ...

Si ça peut servir à d'autres Weboosters ...

En attendant, je vais me replonger dedans...
Bonne continuation à tous et par avance bonnes fêtes de fin d'année à tous
Journalisée

Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #8 le: 11 Décembre 2008, 16:37:54 »

Salut,

J'étais passée à côté de ce post...
Il me semble plus judicieux et moins consommateur de ressources de ne faire qu'une seule requête pour insérer tous les livres...

Voilà comment faire :

Code:
//requete d'insertion

$requete="INSERT INTO manuels (discipline,niveau,titre,auteur,editeur,collection,annee,isbn,etat) values ('$discipline','$niveau','$titre','$auteur','$editeur','$collection','$annee','$isbn','$etat')"

for ($i=0;$i<$nb-1;$i++){

$requete.= ",('$discipline','$niveau','$titre','$auteur','$editeur','$collection','$annee','$isbn','$etat')"
}

$resultat= mysql_query($requete,$connexion);


De cette manière, la base de données n'est solicitée qu'une seule fois!

Enfin, je pense qu'il y a un soucis de conception sur le base de données pour qu'il y ait autant de réplications. Il aurait fallu créer une table manuels (id, discipline, niveau, titre, auteur, editeur, collection, annee, isbn) et une table exemplaires (id, id_manuel, etat). De cette manière, on ne surcharge pas la base et on optimise les requêtes!

Cordialement,

Arkhena
Journalisée
district9
Bavard
***
Hors ligne Hors ligne

Messages: 114



Voir le profil WWW
« Répondre #9 le: 11 Décembre 2008, 20:14:14 »

Merci Arkhena pour cette suggestion.

Je n'avais pas pensé que reproduire x fois la requête pouvait être évité ... à vrai dire, comme je débute en php, je me suis surtout préoccupée de faire fonctionner la boucle ... Clin d'oeil

Pour ce qui est de la conception de la base, j'avais bien pensé créer une table exemplaire au départ, mais cela me semblait compliqué compte tenu de mon niveau en php. Entre temps (cette semaine pour être précise), j'ai découvert les requêtes avec jointure et je crois que cela va me faciliter grandement la tâche.

Du coup, la table exemplaire me semble tout de suite plus abordable ...  Souriant

Merci encore de ces précieux conseils.
Bonne soirée
Journalisée

Arkhena
Bavard
***
Hors ligne Hors ligne

Messages: 232



Voir le profil
« Répondre #10 le: 11 Décembre 2008, 23:44:14 »

De rien  Clin d'oeil
Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.027 secondes avec 21 requêtes.