> Tous les forums > Forum des Webmasters
 Suppression champs table selon critèreSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 19/11/2011 @ 15:34 
Aller en bas de la page 
Astucien

Bonjour,

J'ai une table avec des individus.
La table se compose notamment du n° individu (num_indiv), n° du 1° conjoint (num_cj_1), n° du 2° conjoint (num_cj_2), n° du 3° conjoint (num_cj_3), n° du 4° conjoint (num_cj_4).
On retrouve forcément les n° des conjoints (num_cj) dans les n° individus.
Si je supprime définitivement un individu de ma base, il faut que j'aille voir dans les num_indiv de la base correspondant aux num_cj_1-2-3 et/ou 4 de l'individu à éliminer, et que je mette à blanc num_cj_1, num_cj_2, num_cj_3 ou num_cj_4 correspondant à l'individu supprimer.

J'ai fait ceci, mais ça ne fonctionne pas :

$num_indiv = $_GET['num_indiv'];

// suppression de l'individu dans les cjs correspondant = NOK (ne fonctionne pas)
$select = "SELECT num_cj_1, num_cj_2, num_cj_3, num_cj_4 FROM ville_bis WHERE num_indiv='$num_indiv'";
$result=mysql_query("UPDATE ville_bis SET num_cj_1=' ' WHERE num_cj_1=$num_indiv"); 
$result=mysql_query("UPDATE ville_bis SET num_cj_2=' ' WHERE num_cj_2=$num_indiv"); 
$result=mysql_query("UPDATE ville_bis SET num_cj_3=' ' WHERE num_cj_3=$num_indiv"); 
$result=mysql_query("UPDATE ville_bis SET num_cj_4=' ' WHERE num_cj_4=$num_indiv");    
	
// suppression définitive de l'individu  = OK (fonctionne)
$delete2 = "DELETE FROM ville_bis WHERE num_indiv='$num_indiv'";
$result = mysql_query($delete2,$link) or die ('Erreur : '.mysql_error() );


Merci.

Publicité
qmike549
 Posté le 21/11/2011 à 13:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

bonjour

Peux-tu poster la structure de tes tables

y.bli
 Posté le 22/11/2011 à 09:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien
Message original par t671

Si je supprime définitivement un individu de ma base, il faut que j'aille voir dans les num_indiv de la base correspondant aux num_cj_1-2-3 et/ou 4 de l'individu à éliminer, et que je mette à blanc num_cj_1, num_cj_2, num_cj_3 ou num_cj_4 correspondant à l'individu supprimer.

Bonjour,

Pour bien comprendre, tu veux metre à blanc quoi exactement ?

Tu supprimes un individu de la base, OK.
Cet individu avait des num_cj1, 2, 3, 4
Tu veux mettre quoi à blanc ? les cj n'ont plus de raison d'être dans la base si l'individu a été supprimé... ou alors tu veux les garder ?...

@+

t671
 Posté le 22/11/2011 à 10:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :
Message original par t671

Si je supprime définitivement un individu de ma base, il faut que j'aille voir dans les num_indiv de la base correspondant aux num_cj_1-2-3 et/ou 4 de l'individu à éliminer, et que je mette à blanc num_cj_1, num_cj_2, num_cj_3 ou num_cj_4 correspondant à l'individu supprimer.

Bonjour,

Pour bien comprendre, tu veux metre à blanc quoi exactement ?

Tu supprimes un individu de la base, OK.
Cet individu avait des num_cj1, 2, 3, 4
Tu veux mettre quoi à blanc ? les cj n'ont plus de raison d'être dans la base si l'individu a été supprimé... ou alors tu veux les garder ?...

@+

Je supprime un individu ..... !

Mais cet individu à 90% de chance d'avoir été marié. Donc, son numéro se retrouvera au moins dans un champs num_cj correspondant à l'enregistrement du conjoint.

Exemple :

Si je supprime la ligne Arthur, son numéro (1111) se retrouve dans les enregistrements de son ou ses conjoint(e)s. Je veux donc également supprimer les "1111" qu'il y a dans les enregistrements des conjoint(e)s.

Merci pour votre aide



Modifié par t671 le 22/11/2011 10:15
y.bli
 Posté le 22/11/2011 à 10:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

OK il me semblait bien que c'était ça...

D'ailleurs j'ai fait un site de généalogie qui fonctionne selon ton principe.

Mais la question est : est-ce que si on supprime 1111, pourquoi retrouver dans ta table les conjoints qui n'ont a priori plus de raison d'y être si la seule raison de leur présence dans la table était via 1111 ?

@+

t671
 Posté le 22/11/2011 à 11:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :

OK il me semblait bien que c'était ça...

D'ailleurs j'ai fait un site de généalogie qui fonctionne selon ton principe.

Mais la question est : est-ce que si on supprime 1111, pourquoi retrouver dans ta table les conjoints qui n'ont a priori plus de raison d'y être si la seule raison de leur présence dans la table était via 1111 ?

@+

Parcequ'il y a certainement d'autres conjoints ....... Et s'il n'y en a pas d'autres ..............

PS : Tu me donneras l'adresse de ton site, que je le visite ..............

y.bli
 Posté le 22/11/2011 à 16:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Essaie avec ce type de requête :

$requete = "UPDATE ville_bis SET champ = REPLACE(champ,$num_indiv,' ')";

tu dois pouvoir remplacer toutes les occurences de $num_ind

@+



Modifié par y.bli le 22/11/2011 16:50
t671
 Posté le 22/11/2011 à 19:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :

Essaie avec ce type de requête :

$requete = "UPDATE ville_bis SET champ = REPLACE(champ,$num_indiv,' ')";

tu dois pouvoir remplacer toutes les occurences de $num_ind

@+


J'ai écrit ceci mais ça fonctionne pas :

$requete1 = "UPDATE ville_bis SET num_cj_1 = REPLACE(num_cj_1,$num_indiv,' ')";

$requete2 = "UPDATE ville_bis SET num_cj_2 = REPLACE(num_cj_2,$num_indiv,' ')";

$requete3 = "UPDATE ville_bis SET num_cj_3 = REPLACE(num_cj_3,$num_indiv,' ')";

y.bli
 Posté le 22/11/2011 à 19:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien
t671 a écrit :
y.bli a écrit :

Essaie avec ce type de requête :

$requete = "UPDATE ville_bis SET champ = REPLACE(champ,$num_indiv,' ')";

tu dois pouvoir remplacer toutes les occurences de $num_ind

@+


J'ai écrit ceci mais ça fonctionne pas :

$requete1 = "UPDATE ville_bis SET num_cj_1 = REPLACE(num_cj_1,$num_indiv,' ')";

$requete2 = "UPDATE ville_bis SET num_cj_2 = REPLACE(num_cj_2,$num_indiv,' ')";

$requete3 = "UPDATE ville_bis SET num_cj_3 = REPLACE(num_cj_3,$num_indiv,' ')";

Ce n'est pas num_cj_1 2 3 que tu veux remplacer mais bien num_indiv partout où il se trouve ? ou alors je n'ai pas compris...

D'autre part laisse champ, ça ne sert qu'à faire la liaison entre SET et REPLACE

Donc :

$requete = "UPDATE ville_bis SET champ = REPLACE(champ,$num_indiv,' ')";
$result = mysql_query($requete) or die ("échec suppression");

@+

Publicité
t671
 Posté le 23/11/2011 à 12:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
y.bli a écrit :

Ce n'est pas num_cj_1 2 3 que tu veux remplacer mais bien num_indiv partout où il se trouve ? ou alors je n'ai pas compris...

D'autre part laisse champ, ça ne sert qu'à faire la liaison entre SET et REPLACE

Donc :

$requete = "UPDATE ville_bis SET champ = REPLACE(champ,$num_indiv,' ')";
$result = mysql_query($requete) or die ("échec suppression");

@+

Ben non ! C'est bien num_cj_1,2 et 3 que je veux remplacer. Partout où il a la valeur de $num_indiv, je le remplace par un blanc !

y.bli
 Posté le 23/11/2011 à 23:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien
t671 a écrit :

Ben non ! C'est bien num_cj_1,2 et 3 que je veux remplacer. Partout où il a la valeur de $num_indiv, je le remplace par un blanc !

Oui mais ton individu $num_ind c'est bien un numéro, par exemple le 123

Et si tu veux le remplacer il faut que tu remplaces partout où il y a 123 par un blanc, c'est pas ça ?

@+

t671
 Posté le 25/11/2011 à 17:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai résolu mon problème : $result1=mysql_query("UPDATE ville_bis SET num_cj_1=' ' WHERE num_cj_1='$num_indiv'");

$result2=mysql_query("UPDATE ville_bis SET num_cj_2=' ' WHERE num_cj_2='$num_indiv'"); ..................

Il me manquait les quotes !!!!!

Merci pour ton intervention

A ++

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
54,99 €Liseuse Amazon Kindle avec éclairage frontal à 54,99 € [Amazon Prime]
Valable jusqu'au 22 Juin

Amazon fait une promotion sur sa nouvelle liseuse Kindle qui passe à 54,99 € livrée gratuitement. Cette version est équipée d'un écran tactile à encre électronique qui a l'apparence du papier et se lit comme un livre papier. Elle possède maintenant un éclairage frontal réglable vous permet de lire confortablement pendant des heures, à l'intérieur et à l'extérieur, de jour comme de nuit. Elle possède le WiFi ainsi qu'un port MicroUSB. Cette version peut afficher des publicités discrètes pendant sa mise en veille. Pour ne pas les avoir, vous devez vous tourner vers la version Sans offres spéciales qui coûte 69,99 €. Elle peut lire les fichiers ePub en suivant cette astuce.


> Voir l'offre
69,99 €Ecouteurs intra-auriculaires sans fil Bluetooth Jabra Elite 65t à 69,99 €
Valable jusqu'au 24 Juin

Darty fait une promotion sur les écouteurs intra-auriculaires sans fil Bluetooth Jabra Elite 65t qui passent à 69,99 € livrés gratuitement. On les trouve ailleurs à partir de 110 €. Côté son, l'égaliseur personnalisable vous permet d'ajuster le rendu sonore tandis que la technologie avancée à quatre microphones supprime les bruits de fond lors des appels pour des conversations limpides. Au quotidien, ces écouteurs Jabra restent parfaitement en place et proposent même une fonction de commande vocale simplifiée. 

Enfin, vous apprécierez les 5 heures d'autonomie avec une seule charge, qui se transforment en 15 heures avec l'étui de recharge compact.  Les Jabra Elite 65t sont certifiés IP55 et offrent une garantie de 2 ans contre l’humidité et la poussière. Où que vous soyez et quelle que soit votre activité, vous profitez d’une liberté absolue pour les appels et la musique.


> Voir l'offre
39,90 €Clavier Logitech G213 Prodigy RVB à 39,90 € [Amazon Prime]
Valable jusqu'au 22 Juin

Amazon fait une promotion sur le clavier Logitech G213 Prodigy RVB qui passe à 44,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 69 €. Ce clavier RVB à membranes est conçu aussi bien pour le jeu que pour l'activité professionnelle, résiste aux liquides, aux miettes et à la saleté pour un nettoyage aisé.


> Voir l'offre

Sujets relatifs
2 champs liés à une table
Suppression pub du premier clic sur une page de mon site
demande de suppression sur site
affichage enregistrements selon critères
affichage table par odre alphabétique
Suppression d'un site familial vieux de 10 ans
tester un champs mysql
Suppression de deux documents pdf sur google.
Considérer un champs vide mysql non null
Optimiser requête lourde (Copying to tmp table ?)
Plus de sujets relatifs à Suppression champs table selon critère
 > Tous les forums > Forum Forum des Webmasters