Illusion Posté(e) le 6 mai 2004 Partager Posté(e) le 6 mai 2004 J'ai quelques petites questions à poser aux pros de php/mysql... 1. J'ai un problème pour un formulaire...Dans ce formulaire, il y a des données qui devront par la suite être mises dans trois tables différentes. La première table (la société) a une clé primaire. La seconde et la troisième tables ont comme clé étrangère la clé primaire de la première table. Or il n'y a qu'un bouton Ajouter pour l'ensemble du formulaire (ce serait trop fastidieux de faire plusieurs submit) et quand je vais pour faire ma requête d'insertion, je me pose la question suivante : peut-on insérer des données dans trois tables différentes en même temps (comment faire plusieurs insert à la suite ?) sachant que la clé primaire de l'une est créée quand j'insère les données et qu'elle doit être utilisée dans les deux autres ?? 2. Pour ce même formulaire, j'aimerais avoir une liste de toutes les sociétés présentes dans la base (quelle balise html pour insérer une liste de résultats de requêtes ?) et avoir la possbilité malgré tout d'en insérer une ? C'est un test à faire mais lequel ? 3. J'ai une liste de produits et j'aimerais pouvoir en sélectionner plusieurs et supprimer les données correspondantes dans la table. Comment récupérer la clé primaire présente dans chaque ligne ? Euh...jcrois que c'est tout... et désolée si les questions ont été déjà posées mais la fonction recherche m'a trouvé des trucs complètement hs... pleure: Merci d'avance :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
FilouLeHibou Posté(e) le 6 mai 2004 Partager Posté(e) le 6 mai 2004 1. Avec ton formulaire, tu utilises un get ou un post?? Ca change pas grand chose mais bon. D'abord, tu récupères tes variables du style: $variable=$_GET("société"); et tu récupères ainsi toutes tes données. Une fois que tu les as récupérer, il suffit de mettre des insert les uns à la suite des autres! Dans un premier temps, tu insert les données dans ta première table $requete="INSERT INTO table1(societe,...) VALUES ($variable,....)"; mysql_query($requete); Ensuite, si ta clé primaire est un auto incrément, il faut que tu la récupères dans le champs que tu viens de créer via un SELECT. Après, tu fait de nouveau des insert pour rentrer les données dans les autres tables et le tour et jouer. 2. Pour récupérer une liste, une boucle depuis une table, mais je sais pas comment permettre l'entrée d'une autre valeur, donc ça m'intéresse de connaitre la réponse! 3. tu dois récupérer l'id' au moment ou tu affiche ta table. Comme ça, en mettant une case de sélection et un submit, tu doit pouvoir récupérer tous les 'id' nécessaire, mais j'ai jamais fais! (je fais que des suppr un par un ) Voilà, en esperant que ça t'aide un peu Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 6 mai 2004 Partager Posté(e) le 6 mai 2004 I) Récupération du dernier ID d'insertion Donc : 1. Tu insères les renseignements dans la table société 2. Tu récupères la valeur du dernier ID inséré grâce à une requête 3. Tu insères les valeurs dans les deux autres tables, et comme clé étrangère tu mets la valeur récupérée II) 1. Tu fais ta requête pour récupérer tous les enregistrements 2. <SELECT NAME=" ... "> ici tu fais une boucle sur les résultats : pour chaque ligne tu fais <OPTION VALUE=" ... "> bla bla </OPTION> </SELECT> Il n'y a aucun moyen d'avoir en même temps une liste de valeurs, et la possibilité d'en insérer une nouvelle. Pour cela, il faut deux champs séparés : un champ texte qui permet à l'utilisateur de rentrer une nouvelle valeur, et une boîte déroulante comme expliqué ci-dessus. Quand tu valides le formulaire, si la zone de saisie contient qqchose, tu prends cette valeur, sinon tu prends la valeur de la boîte déroulante. III) Utilise des cases à cocher ayant toutes le même nom avec des crochets au bout , et ayant comme valeur l'ID de la société <INPUT TYPE="checkbox" NAME="societe[]" VALUE="12345"> Dans la page appelée après la validation du formulaire, "$societe[]" sera un tableau contenant les ID sélectionnés. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 7 mai 2004 Auteur Partager Posté(e) le 7 mai 2004 Merci à tous les deux, ca marche :) (un peu de mal pour la 3 quand même ) Mais j'ai une autre question en fait... Voila un morceau de code : print "<tr><td align='center'><input type='text' name='nom'>Société</td></tr>\n" Mais ca, ca marche aussi : print '<tr><td align="center"><input type="text" name="nom">Société</td></tr>' Ainsi que ca : print "<tr>".'<td align="center"><input type="text" name="nom">Société</td>'."</tr>\n" J'aimerais savoir pourquoi il y a autant de possibilités différentes ? Et quelle est la meilleure façon de coder les balises html en php pour que tous les navigateurs accepte le code sans générer d'erreurs (sans parler d'ie qui "glisse" sur toutes les erreurs ) ? Voila, merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 7 mai 2004 Partager Posté(e) le 7 mai 2004 PHP comprend aussi bien les chaînes entre '...' que celles entre "..." Le problème, c'est que, souvent, tu dois afficher des chaînes HTML comprenant elles-mêmes des guillemets (ex : <IMG SRC="mon_image.gif">). Il ne faut donc pas s'emmêler les pinceaux. Le plus simple est de se définir une règle, et de s'y tenir. Par exemple, personnellement j'utilise les guillemets doubles pour le HTML, et les simples pour délimiter les chaînes PHP, comme ça : print (' <IMG SRC="toto.gif">'); Mais rien ne t'empêche de faire l'inverse Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 8 mai 2004 Auteur Partager Posté(e) le 8 mai 2004 Ok, c'était pour savoir, merci :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 8 mai 2004 Auteur Partager Posté(e) le 8 mai 2004 Autre question... Sous phpMyAdmin, quand je fais les tests sur ma bdd, mes id s'incrémentent très bien mais lorsque je supprime une id (la dernière en l'occurence) et lorsque je fais un insert juste après, l'id que j'ai supprimée n'est pas réutilisée... Ets-ce que toutes les ids que je supprime sont forcément perdues ? Ou est-ce qu'il y a un moyen de les réutiliser ? Ce serait une suppression en milieu de table, je comprendrais que la clé praimaire ne soit plus utilisée mais là en fin de table Surtout qu'à chaque suppression, je supprime toutes les données qui sont en relation... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 9 mai 2004 Partager Posté(e) le 9 mai 2004 Le compteur interne, qui sert à déterminer le nouvel ID unique auto-incrémenté à chaque insertion, n'est jamais réinitialisé ni décrémenté. Il n'est pas affecté par des suppressions d'ID, même en fin de table. De toute façon ce n'est pas grave, il n'y a aucun intérêt à essayer de ne pas 'perdre de place' entre les ID... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 10 mai 2004 Auteur Partager Posté(e) le 10 mai 2004 De toute façon ce n'est pas grave, il n'y a aucun intérêt à essayer de ne pas 'perdre de place' entre les ID... Sauf quand on a plus de 500 000 enregistrements qui attendent derrière et qu'on a aucune idée de la limitation... Enfin bon, merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 10 mai 2004 Partager Posté(e) le 10 mai 2004 Bah si tu prends un nombre non signé codé sur 32 bits, tu peux aller peinardement jusqu'à plus de 4 milliards... tu as le temps :) 500 000 enregistrements ce n'est pas énorme, enfin pour un site perso ou une petite base si, mais pour un projet industriel c'est peanuts. MySQL est capable de gérer des très grosses tables, je pense que tu n'as pas à t'en faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
XZombi Posté(e) le 10 mai 2004 Partager Posté(e) le 10 mai 2004 Ouais bin ca c'est le principe de base des Base de données, assigner un id unique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 5 juillet 2004 Auteur Partager Posté(e) le 5 juillet 2004 Toujours dans php/mysql... J'en suis à faire un moteur de recherche qui regroupe les résultats trouvés par d'autres moteurs de recherche. En fait le moteur de recherche en lui-même est déjà fait. Mais il fait une recherche générale sur des sites mais pas ceux que je veux... Mon problème est que je veut me connecter à des sites/forums précis, m'identifier avec login, mdp sur ces sites (chaque site a un mdp différent), lancer une recherche (par url). Pour récupérer les résultats, c'est bon mais c'est pour le lancement de la recherche que j'ai du mal... J'aimerais comprendre comment marche celui de pci par exemple. On va dire que je recherche le mot "Windows" sur tout le forum avec les réponses classées par ordre "le plus récent d'abord". L'url que j'obtiens est celle-ci : http://www.pcinpact.com/forum/index.php?act=Search&CODE=simpleresults&sid=0676e04bab9e1e1c9a649c2063a2c21f&highlite=windows Comment savoir ce que le 'sid' signifie ? Merci :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 6 juillet 2004 Auteur Partager Posté(e) le 6 juillet 2004 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Illusion Posté(e) le 9 juillet 2004 Auteur Partager Posté(e) le 9 juillet 2004 re- Juste une précision sur le moteur de recherche de PCI, svp... Ou alors des aides/tuto sur la programmation d'un métamoteur, merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.