FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 24 janv. 2007 à 15:02
Mais tu peux faire autant de requète que tu veux dans une même page !!!
Si tu veux faire 10 SELECT, 3 INSERT, 6 UPDATE et 40 DELETE, tu peux le faire !
Y'a aucune restriction !!
Ce que tu vas faire :
--> première query, tu insère ton nouveau voyage dans ta table "voyage".
----> tu récupères le numéro d'ID du voyage (via mysql_insert_id())
--> tu fais ta deuxième query, tu fais autant d'insertion que tu possèdes de date dans ta table "date_par_voyage".
Je pensais pas que faire de l'insertion de donnée était si compliqué ;)
rafou777
Messages postés11Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention23 janvier 2007 23 janv. 2007 à 15:07
Merci pour ta réponse j'ai essayé ce qu'ils proposaient sur le site mais rien ne me semble convenir...
je me suis peut-etre mal expiqué, ce que j'aimerai ce n'est pas de supprimer les doublons dans ma base mais de ne pas les afficher dans le while.
sur mon site j'ai une liste déroulante qui me donne toute les dates enregistré dans date1,date2,date3 et date4 mais celle-ci m'affiche des doublons par ex si 2007-01-01 est dans date1 et date2 il me l'affiche deux fois dans cette liste mais aussi les attributs par défaut çàd que si il n'y a pas d'enregistrement la date est par défaut 0000-00-00 et il me l'affiche aussi.
rafou777
Messages postés11Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention23 janvier 2007 23 janv. 2007 à 15:43
HAVING ne me sert pas à grand chose, je ne veux pas faire un calcule sur mes dates, je veux juste que les doublons et les attributs par défaut des champs DATE ne (s'affiche pas) merci quand meme.
J'ai essayé DISCTINCT mais ça ne marche que pour un seul champ pas plusieurs.
cs_Springer
Messages postés85Date d'inscriptionlundi 14 juillet 2003StatutMembreDernière intervention14 mars 20071 23 janv. 2007 à 15:55
re et der je pense,
$n = 1; //initialisation de l'incrément
while($ligne = mysql_fetch_array($req1))
{
if($ligne ["date.$n"] != "0000-00-00" && $n < 7)
{
$id = $ligne ["id"];
$d.$n = $ligne ["date.$n"];
}
$n++;
}
puis après dans une boucle tu affiches $d.$n si il existe.
je pense que celà résoudra ton problème
cs_Springer
Messages postés85Date d'inscriptionlundi 14 juillet 2003StatutMembreDernière intervention14 mars 20071 23 janv. 2007 à 16:05
pardon encore moi
pour éliminer les doublons avant la date par défaut je pense qu'il faut rédiger ta requète ainsi :
$req1 = mysql_query("select date1,date2,date3,date4,date5,date6 from voyage where voyage.id GROUP BY date1,date2,date3,date4,date5,date6");
cs_Springer
Messages postés85Date d'inscriptionlundi 14 juillet 2003StatutMembreDernière intervention14 mars 20071 23 janv. 2007 à 16:21
et re
et pour les doublons en php il existe cette fonction : "array_unique", donc la fonction de tri avec suppression de la valeur par défaut devient :
$n = 1; //initialisation de l'incrément
$ligne = mysql_fetch_array($req1);
$neue_ligne = array_unique($ligne);//array_unique retourne un tableau sans les doublons
rafou777
Messages postés11Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention23 janvier 2007 23 janv. 2007 à 17:16
re ton code me réenvoit tous les champs dates avec doublons, attributs par defaut et l'infini, j'ai fait sauté les memory_limit et max_execution_time de mon hébergeur
rafou777
Messages postés11Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention23 janvier 2007 23 janv. 2007 à 18:16
je deviens fou ça fait 2 jours que je suis là dessus, je suis sur que c'est un truc simple mais je passe à coté de la plaque, je veux juste mettre toute les valeurs de 6 champs et les afficher dans une liste déroulante sans doublons et sans les attributs par défaut(0000-00-00), Help plz
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 23 janv. 2007 à 23:11
$req1 = mysql_query("select * from voyage where voyage.id GROUP BY date1,date2,date3,date4,date5,date6");
Mauvaise conception de ta base de donnée à l'origine.
Voila pourquoi tu possèdes ce problème.
Dans une base de donnée, tu as des champs "dateN" (soit date1, date2, date3.... date6).
Hors, tu ne peux pas faire un truc comme ca. C'est abérant de voir un truc pareil, tu aurais 20 dates, tu marques les 20 dates dans des champs ?
Non, il faut revoir ta base de donnée.
table voyage :
id INT(11) NOT NULL AUTOINCREMENT
autrechamp VARCHAR(255)
// etc...
table date_de_voyage :
id INT(11) NOT NULL AUTOINCREMENT
id_voyage INT(11) NOT NULL
date DATETIME()
Avec une contrainte entre date_de_voyage.id_voyage et voyage.id
Après, et seulement après tu fais ta requète avec une jointure en utilisant un DISTINCT. Tu vas voir comme par magie que ca fonctionne comme tu le souhaites.
Tu as fait une mauvaise analyse de ta BDD dès le début, normal que tu te prennes la tête pour rien.
rafou77
Messages postés65Date d'inscriptionmardi 2 mars 2004StatutMembreDernière intervention 7 février 2007 24 janv. 2007 à 00:14
encore merci pour ta patience, je susi autodidact en progammation et cela fait longtemps que je n'ai plus fait de php.
J'ai bien pensé à ce que tu me propose mais si je refais une table date_de_voyage avec les dates lié par la contrainte date_de_voyage.id_voyage et voyage.id je n'arriverai pas à faire l'enregistrement ou l'update dasn ma partie administration.
je m'explique c'est un site de proposant des voyages et certain voayages ont plus d'une date de départ ( une , deux ou plus max 6) j'ai une page dans ma partie admin pour ajouter des voyages avec 6 listes déroulante pour les dates et une autre page pour l'update avec les 6 listes déroulante.
donc si je n'ai qu'une seule page pour l'ajout de nouveaux voyages je ne vois pas comment voyage.id et date_de_voyage.id_voyage pourraient avoir la meme valeur. c'est pour ça que j'ai été contrain de faire comme ça, en fait il faudrait d'abort que j'enregistre dans ma table voyage et seulement après enregistrer dans date_de_voyage mais le prob c'est que je dois tout faire sur la meme page d'ajout.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 24 janv. 2007 à 00:55
"je n'arriverai pas à faire l'enregistrement ou l'update dasn ma partie administration." ? pourquoi ?
Moi j'y arrive très bien pourtant :o
"je ne vois pas comment voyage.id et date_de_voyage.id_voyage pourraient avoir la meme valeur." C'est la meme chose. C'est ce qui va lier tes dates à tes numéros de voyages !
"en fait il faudrait d'abort que j'enregistre dans ma table voyage et
seulement après enregistrer dans date_de_voyage mais le prob c'est que
je dois tout faire sur la meme page d'ajout." Si tu fais 2 requètes, ta première sera sur la table voyage, et la seconde sur tes table de date.
En réalité, tu vas faire autant d'insert que de date pour ton voyage.
rafou77
Messages postés65Date d'inscriptionmardi 2 mars 2004StatutMembreDernière intervention 7 février 2007 24 janv. 2007 à 01:09
j'abuse je sais
mais le prob c'est que je ne saurai pas faire d'insert sur les deux table d'un coup en une seule page puis qu'il faut d'abort que voyage.id s'incrémente et ensuite sur une deuxieme page en récupérant la valeur de la clé primaire voyage.id pour l'inserer dans date_de_voyage.id_voyage et la la liaison sera faite, je me trompe ou je dois bien faire comme ça? çàd deux pages