Suppression champs table selon critère

Fermé
t671 Messages postés 1447 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 11 novembre 2024 - 19 nov. 2011 à 12:24
t671 Messages postés 1447 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 11 novembre 2024 - 23 nov. 2011 à 17:26
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.
A voir également:

6 réponses

adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
22 nov. 2011 à 16:43
Bonjour,

Avant toute chose je pense qu'au niveau conception il y a beaucoup mieux:
Exemple avoir une table individu et une autre table faisant le lien entre les conjoint mais bref..

Qu'entends tu par cela ne fonctionne pas ?
Un message d'erreur ? Comment se comporte ton bout de code ?

Adns
0
t671 Messages postés 1447 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 11 novembre 2024 11
Modifié par t671 le 22/11/2011 à 19:12
Niveau conception, j'avais pensé faire deux tables. Mais elles auraient été pratiquement similaire, puisque les conjoints sont automatiquement dans les individus.
J'ai fait un petit tableau pour aider à la compréhension de ce que je veux : http://th1.free.fr/table2.jpg
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.

Avec mon code ci dessus, je n'ai pas de message d'erreur, mais (en reprenant le tableau ci-dessus) je n'arrive pas à supprimer les "111" dans les num_cj1,2 et 3.
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
23 nov. 2011 à 09:36
Niveau conception je ne pensais pas à 2 tables identiques. Mais plutôt à une table individu et tu table lienConjoint qui ne possèderait que 2 champs : Les 2 ID des individus.
Ainsi dans ton exemple ta deuxième table contiendrait :

1111 1234
1111 5678
1111 9123
5678 54
9123 99
9123 77

Ainsi pour la suppression des lien il te suffira de faire une suppression dans cette nouvelle table.

Pour ton problème.
De quelle type est ta variable num_cj_3 en base de donnée ?

Adns
0
t671 Messages postés 1447 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 11 novembre 2024 11
23 nov. 2011 à 12:30
Le type des variables num_cj sont en Varchar(6).
Mais je ne vois pas en quoi cette précision peut intervenir dans la résolution de mon problème !?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 153
23 nov. 2011 à 15:00
Ca change beaucoup de chose ;) et en particulier la manière d'écrire les requêtes.
Essaie en modifiant ton code par ceci :
$result=mysql_query("UPDATE ville_bis SET num_cj_1=' ' WHERE num_cj_1='$num_indiv'"); 


J'ai juste ajouté de simple côte autour de la variable $num_indiv.
Ce qui permet de le faire reconnaitre comme une chaine de caractère et non comme un entier.

Adns
0
t671 Messages postés 1447 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 11 novembre 2024 11
23 nov. 2011 à 17:26
OK ! Génial ! Et tout ça pour une histoire de quote !!!!

Si j'ai plusieurs UPDATE à écrire, y a t'il plus simple que ces 9 lignes:

$result1=mysql_query("UPDATE ville_bis SET num_cj_1=' ' WHERE num_cj_1='$num_indiv'"); 
$result11=mysql_query("UPDATE ville_bis SET date_mariage_1=' ' WHERE num_cj_1='$num_indiv'");
$result111=mysql_query("UPDATE ville_bis SET lieu_mariage_1=' ' WHERE num_cj_1='$num_indiv'");

$result2=mysql_query("UPDATE ville_bis SET num_cj_2=' ' WHERE num_cj_2='$num_indiv'"); 
$result22=mysql_query("UPDATE ville_bis SET date_mariage_2=' ' WHERE num_cj_2='$num_indiv'");
$result222=mysql_query("UPDATE ville_bis SET lieu_mariage_2=' ' WHERE num_cj_2='$num_indiv'");

$result3=mysql_query("UPDATE ville_bis SET num_cj_3=' ' WHERE num_cj_3='$num_indiv'"); 
$result33=mysql_query("UPDATE ville_bis SET date_mariage_3=' ' WHERE num_cj_3='$num_indiv'");
$result333=mysql_query("UPDATE ville_bis SET lieu_mariage_3=' ' WHERE num_cj_3='$num_indiv'");
0