goava Posté 26 Février 2010 Posté 26 Février 2010 Bonjour à tous 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 : <?phpmysql_connect("localhost", "root", "");mysql_select_db("coursphp");// On ajoute une entrée avec mysql_querymysql_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
captain_torche Posté 26 Février 2010 Posté 26 Février 2010 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.
Sarc Posté 26 Février 2010 Posté 26 Février 2010 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).
captain_torche Posté 26 Février 2010 Posté 26 Février 2010 C'est ce que je voulais dire ;-) Il prend en compte les éléments supprimés pour ne pas réattribuer leurs identifiants.
Sarc Posté 26 Février 2010 Posté 26 Février 2010 Ah oui, j'avais compris à l'envers. :x Ok, nous sommes donc d'accords.
jcaron Posté 27 Février 2010 Posté 27 Février 2010 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.
goava Posté 27 Février 2010 Auteur Posté 27 Février 2010 Rebonjour tout le monde. Eh oui c'est encore moi Goava le casse pied de service 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_querymysql_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é 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 Cordialement Goava
Dadou Posté 27 Février 2010 Posté 27 Février 2010 Ta requête doit être : // On ajoute une entrée avec mysql_querymysql_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.
Remi Posté 27 Février 2010 Posté 27 Février 2010 à 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é...
captain_torche Posté 27 Février 2010 Posté 27 Février 2010 [...] 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.
WhyNot Posté 24 Mars 2010 Posté 24 Mars 2010 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 !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant