Aller au contenu

Mais comment donc php reconnait il dans quelle ID insérer les donnée


Sujets conseillés

Posté

Bonjour à tous :smartass:

Je suis débutant en php et voilà je me demande vraiment comment cette commande php fait elle pour savoir dans quelle champs insérer les données requises étant donné que l'espace ID auto-incrémenté qui est entre les doubles cotes reste vide dans tout les cas.mystère...???

Existerait il une personne assez aimable pour apporter de l'eau à mon moulin.

Voici le code en question :

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("coursphp");

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO jeux_video(ID, nom, possesseur, console, prix, nbre_joueurs_max, commentaires) VALUES('', 'Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')
");

mysql_close();
?>

Merci d'avance ;)

Cordialement

Posté

Tout simplement parce qu'un champ auto-incrémenté s'incrémente automatiquement ;)

Donc techniquement, Mysql ne sait pas où insérer les données. On lui demande juste de créer un nouvel identifiant. En fonction des identifiants déjà existants ou supprimés, il détermine le prochain numéro à attribuer pour l'enregistrement.

Posté

En fonction des identifiants déjà existants ou supprimés, il détermine le prochain numéro à attribuer pour l'enregistrement.

A vrai dire, avec tous les MySQL que je connais, il ne prend pas en compte les supprimés... Juste les créés ! Si tu supprimes l'id 43, il ne sera pas remplacé, et l'auto-increment ira directement au 44... Si tu crées manuellement le numéro 155, il mettra l'auto-increment à 156.

(N'hésite pas à me contredire si je me trompe grossièrement).

Posté

Ah oui, j'avais compris à l'envers. :x

Ok, nous sommes donc d'accords. :)

Posté

Par contre je ne crois pas que passer '' soit très standard SQL, je conseillerais plutôt d'utiliser "default", ou de ne pas inclure la colonne dans la liste des colonnes.

Jacques.

Posté

Rebonjour tout le monde. :smartass:

Eh oui c'est encore moi Goava le casse pied de service :whistling: et je vous remercie vivement pour l'intérêt que vous portez tous à ce sujet...

Bon,j'avoue que vu mon age,vôtre logique de programmeur me dépasse un peu parfois,ne serait ce pas plus simple de faire de cette manière...???

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO jeux_video(ID, nom, possesseur, console, prix, nbre_joueurs_max, commentaires) VALUES('1', 'Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')
");

Bon je suis peut êtres complètement idiot mais la logique de ces systèmes de SGBD me dépasse totalement parfois,pour moi normalement,je fais une insertion dans ma bdd avec INSERT INTO et à priori tout semble logique biensur mais je bute toujours et encore sur le fait que les doubles cotes reste vide,malgré vos explications je n'arrive pas a déterminer comment le SGBD fait pour savoir sur quel possesseur de jeu il dois insérer les nouvelles données,disons que je suis probablement un peu borné :nonono: et que pour moi le numéro 1 assigné à Patrick devrait,dans ma petite logique de rien du tout,lui êtres allouée définitivement...Mais bon...???

Voilà j'ai 52 ans et Il y a deux ans environ j'ai commencé à m'intéresser au langage de programmation orientés web tel que XHTML et CSS qui sont assez complexe mais assez facile à comprendre malgré tout.Je dois vous avouer que le milieu de la programmation me passionne vraiment et qu'au fil du temps avec l'aide du Site du zéro et Alsa création entre autre,j'ai acquis un minimum d'expérience,maintenant je suis capable dans bien des cas de déchiffrer les codes script php proposé gratuitement sur le net mais de la à en créer un de toute pièce,ça c'est encore une autre histoire...

Maintenant je m'attaque à cette immense tartine qu'est PHP MYSQL,parce que moi ce qui me passionne vraiment ce sont les formulaires ou plus précisément les sondages et statistiques mais je dois vous avouer que pour un homme de ma génération le monde de la programmation n'est pas simple du tout,dans mon fort intérieur je pense que bon nombres de Webmaster nous propose des scripts trop complexe et qui manquent fort de pragmatisme.

Je cherche parfois durant des jours et des jours avant d'aboutir sur un scripts digne de ce nom et je peux vous citer bien des exemple,entre autre le script Dbprotectv1.0 espace membre de David borrat qui est lui très populaire sur le net,ceci à juste titre d'ailleurs car voilà enfin une personne qui code d'une manière intelligente,minimaliste et surtout facile à comprendre pour un néophyte,vous pourrez vous faire une idée de ce que je veux dire en consultant ce script à cette adresse : ICI

Ensuite sitôt après regarder y aussi celui de Grand Zébu,comparer donc ce dernier avec celui de David borrat qui lui est très simple et n'en est pas moins efficace pour autant,vous aurez vite fait la différence...

Si vous les anciens,aviez la gentillesse de continuer à disserter sur ce sujet je pense que ce ne serait pas de refus...

Une très bonne journée :flower:

Cordialement Goava ;)

Posté

Ta requête doit être :

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO jeux_video(nom, possesseur, console, prix, nbre_joueurs_max, commentaires) VALUES('Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')
");

Sans mettre le champs ID, normalement si tu as bien préparé ta table, le champs ID doit avoir été mis en 'autoincrement' comme cela c'est mysql qui se charge tout seul de la numérotation, et pas de risque de tenter d'entrer des ID doublons

Quand a la complexité des scripts elle dépend énormément des fonctionnalités que l'on souhaite implémenter dans ce dernier. Si tu trouve celui de granzebu trop complexe, pour moi il est d'une simplicité enfantine par rapport à celui que je suis en train de développer pour un client, mais vu les fonctionnalités demandées je ne peux absolument pas faire plus simple. Après bien sûr, les commentaires dans les scripts doivent pouvoir aider à comprendre ce qui est fait, mais c'est rarement le cas.

Posté
à priori tout semble logique biensur mais je bute toujours et encore sur le fait que les doubles cotes reste vide,malgré vos explications je n'arrive pas a déterminer comment le SGBD fait pour savoir sur quel possesseur de jeu il dois insérer les nouvelles données,

Il ne faut pas attribuer trop d'importance à l'ID : c'est juste un identifiant qui permet au système de ne pas le mélanger avec d'autres. L'ID n'a pas d'influence directe sur les liens de cet enregistrement avec d'autres. Donc, on peut laisser sans problème le système l'appeler comme il veut... on s'en moque un peu d'ailleurs dans la plupart des cas.

Quand on débute en programmation, lorsque qu'une chose paraît compliquée, c'est souvent parce qu'on lui accorde plus d'importance qu'elle n'en a.

Mais sinon, vous avez raison, l'important est de comprendre la logique et non d'assembler des portions de programme comme des briques. Il est plus passionnant de faire quelque chose de simple et d'en comprendre 100% du fonctionnement plutôt que de faire une chose très compliquée dont on n'en saisit que la moitié... :smartass:

Posté
[...] je n'arrive pas a déterminer comment le SGBD fait pour savoir sur quel possesseur de jeu il dois insérer les nouvelles données [...]

Attention, cet identifiant ne correspond pas au possesseur du jeu : il ne sert qu'à identifier le jeu en lui-même.

Si tu veux enregistrer l'identifiant du possesseur, il faudra faire une première requête pour le trouver, et ajouter un champ "ID_Possesseur", par exemple. Cette opération n'est pas automatique.

  • 4 semaines plus tard...
Posté

Puisque tu as l'air d'avoir du mal à te représenter les différentes liaisons entre les base de données, je te conseille de lire ce tutorial sur les jointures. Il m'a beaucoup aidé en son temps.

Bon courage en tout cas !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...