Verifier avant d'ajouter un sujet
ladj59
Messages postés
322
Statut
Membre
-
ladj59 Messages postés 322 Statut Membre -
ladj59 Messages postés 322 Statut Membre -
Bonjour,
j'ai une table (base_physique)avec des sujets et une autre table(sujets) avec d'autres sujets
Tous les sujets de base_physique sont forcément dans mon formulaire et quand je rajoute un sujet dans la table sujets, je le rajoute que s'il n'est pas déja présent dans la table base_physique
il faut donc que a chaque fois que je rajoute un sujet dans la table sujets, je verifie qu'il ne soitr pas déja present dans la table base_physique
Comment faire svp???
j'ai une table (base_physique)avec des sujets et une autre table(sujets) avec d'autres sujets
Tous les sujets de base_physique sont forcément dans mon formulaire et quand je rajoute un sujet dans la table sujets, je le rajoute que s'il n'est pas déja présent dans la table base_physique
il faut donc que a chaque fois que je rajoute un sujet dans la table sujets, je verifie qu'il ne soitr pas déja present dans la table base_physique
Comment faire svp???
A voir également:
- Verifier avant d'ajouter un sujet
- Verifier compatibilite windows 11 - Guide
- Site pour verifier un lien - Guide
- Ajouter à l'écran d'accueil iphone - Guide
- Impossible d'ajouter un ami sur facebook - Guide
- Ajouter un compte whatsapp - Guide
38 réponses
Bonjour,
Tu peux faire cela :
J'espère que ça te va...
Tu peux faire cela :
mysql_query = "INSERT INTO sujet VALUES .... IF NOT EXIST (SELECT * FROM base_physique WHERE .....)";
J'espère que ça te va...
Je suppose qu'avant tu as mis tout ce qu'il fallait (mysql_connect, etc) J'espère que oui mais on ne sait jamais, mieux vaut demander...
Partons du principe que ce n'est pas cela le problème. On va partir dans du débugage
Tu lance ça et normalement ça devrait t'apporter des infos intéressantes tu n'a qu'à me donner les infos que tu obtiens et je te dirais ce que ça vaut
Partons du principe que ce n'est pas cela le problème. On va partir dans du débugage
if(isset($_POST['sujet2']))
{
echo "on est bien entré dans le if isset <BR/>";
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$nombre2=mysql_query("SELECT COUNT (*) AS nombre2 FROM sujets WHERE sujet2 ='$sujet2'") or die(mysql_error());
$n2=$nombre2['nombre2'];
echo "n2 vaut $n2 <BR />";
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
if ($n2==0)
{
echo "on est bien entré dans la boucle if ==0 <BR />"
$sql="INSERT INTO sujets VALUES('', '$sujet2') IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."'";
echo "La requète SQL qui va se lancer est : $sql";
mysql_query($sql) or die(mysql_error();
}
}
Tu lance ça et normalement ça devrait t'apporter des infos intéressantes tu n'a qu'à me donner les infos que tu obtiens et je te dirais ce que ça vaut
Effectivement j'avais pas vu l'erreur pourtant hyper classique : il ne faut pas mettre d'espace entre le COUNT et la parenthèse
Donc ceci devrait fonctionner :
Donc ceci devrait fonctionner :
if(isset($_POST['sujet2']))
{
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$nombre2=mysql_query("SELECT COUNT(*) AS nombre2 FROM sujets WHERE sujet2 ='$sujet2'");
$n2=$nombre2['nombre2'];
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
if ($n2==0)
{
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."'");
}
}
?>
ok merci le probleme la est réglé mais maintenant il y a un autre probleme qui est :
on est bien entré dans le if isset
n2 vaut
on est bien entré dans la boucle if ==0
La requète SQL qui va se lancer est : INSERT INTO sujets VALUES('', 'le silice') IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE 'le silice'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE 'le silice'' at line 1
on est bien entré dans le if isset
n2 vaut
on est bien entré dans la boucle if ==0
La requète SQL qui va se lancer est : INSERT INTO sujets VALUES('', 'le silice') IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE 'le silice'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE 'le silice'' at line 1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ca me mets encore cela quans je mets EXISTS
on est bien entré dans le if isset
n2 vaut
on est bien entré dans la boucle if ==0
La requète SQL qui va se lancer est : INSERT INTO sujets VALUES('', 'iii') IF NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'iii'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'iii'' at line 1
on est bien entré dans le if isset
n2 vaut
on est bien entré dans la boucle if ==0
La requète SQL qui va se lancer est : INSERT INTO sujets VALUES('', 'iii') IF NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'iii'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'iii'' at line 1
et avec un WHERE NOT EXISTS à la place du IF NOT EXISTS ? Excuse moi mais en fait ça fait longtemps que j'avais pas utilisé cela d'où mes retards à l'allumage...
ca marche toujours pas snif
au fait c'est normal que ca ne ette pas la valeur de n2 vaut
j'ai vraiment besoin que ca marche, tu ne vois pas un autre truc
c'est simpa de m'aider
on est bien entré dans le if isset
n2 vaut
on est bien entré dans la boucle if ==0
La requète SQL qui va se lancer est : INSERT INTO sujets VALUES('', 'tt') WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'tt'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'tt'' at line 1
au fait c'est normal que ca ne ette pas la valeur de n2 vaut
j'ai vraiment besoin que ca marche, tu ne vois pas un autre truc
c'est simpa de m'aider
on est bien entré dans le if isset
n2 vaut
on est bien entré dans la boucle if ==0
La requète SQL qui va se lancer est : INSERT INTO sujets VALUES('', 'tt') WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'tt'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE 'tt'' at line 1
Mouaif effectivement c'est pas normal mais bon vu que tu rentres dans la boucle c'est pas non plus la mort...
essaye ça :
Par contre quelque-chose de beaucoup plus grave est de fermer les parenthèses :
En espérant que ça finisse par fonctionner...
essaye ça :
$sujet2=$_POST['sujet2'];
$sql=mysql_query("SELECT COUNT (*) AS nombre2 FROM sujets WHERE sujet2 ='$sujet2'") or die(mysql_error());
$n2=$sql['nombre2'];
echo "n2 vaut ".$n2." <BR />";
Par contre quelque-chose de beaucoup plus grave est de fermer les parenthèses :
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."')");
En espérant que ça finisse par fonctionner...
voila ce que ca m'affiche : on est bien entré dans le if isset
n2 vaut
quand je tape le code du dessous.
le probléme c'est que cela ne m'ajoute pas le sujet dans la table sujets
if(isset($_POST['sujet2']))
{
echo "on est bien entré dans le if isset <BR/>";
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$sql=mysql_query("SELECT COUNT(*) AS nombre2 FROM sujets WHERE sujet2 ='$sujet2'") or die(mysql_error());
$n2=$sql['nombre2'];
echo "n2 vaut $n2 <BR />";
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."')");
}
?>
n2 vaut
quand je tape le code du dessous.
le probléme c'est que cela ne m'ajoute pas le sujet dans la table sujets
if(isset($_POST['sujet2']))
{
echo "on est bien entré dans le if isset <BR/>";
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$sql=mysql_query("SELECT COUNT(*) AS nombre2 FROM sujets WHERE sujet2 ='$sujet2'") or die(mysql_error());
$n2=$sql['nombre2'];
echo "n2 vaut $n2 <BR />";
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."')");
}
?>
Je te propose d'arrêter de te faire ch... avec le count : tu n'as qu'à utiliser la fonction mysql_count_rows. Le fichier complet donnera :
if(isset($_POST['sujet2']))
{
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$sql=mysql_query("SELECT * FROM sujets WHERE sujet2 ='$sujet2'");
$n2 = mysql_num_rows($sql);
echo "n2 vaut $n2";
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
if ($n2==0)
{
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') WHERE NOT EXISTS (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."')");
}
}
?>
Si t'es pressé d'avoir des résultats je te dirais bien de laisser tomber le WHERE NOT EXISTS et de faire ça :
Mais bon c'est fonctionnel mais c'est moins beau que le WHERE NOT EXISTS. Cependant comme je te l'ai déjà dit je n'ai plus utilisé cela depuis longtemps...
Sinon je te propose de recréer un topic où tu demanderais à d'autres gens que moi comment s'en servir... On ne sait jamais ça pourrait te resservir un jour !!!
Bon là ça marchera... A moins bien sûr que ta table sujets contient plus de 2 champs bien sûr
if(isset($_POST['sujet2']))
{
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$sql = mysql_query("SELECT * FROM sujets WHERE sujet2 ='$sujet2'");
$sql1 = mysql_query("SELECT * FROM base_physique WHERE sujet ='$sujet2'");
$n2 = mysql_num_rows($sql);
$n3 = mysql_num_rows($sql1);
echo "n2 vaut $n2 et n3 vaut $n3";
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
if ($n2==0 AND $n3==0)
{
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') ") or die(mysql_error());
}
}
?>
Mais bon c'est fonctionnel mais c'est moins beau que le WHERE NOT EXISTS. Cependant comme je te l'ai déjà dit je n'ai plus utilisé cela depuis longtemps...
Sinon je te propose de recréer un topic où tu demanderais à d'autres gens que moi comment s'en servir... On ne sait jamais ça pourrait te resservir un jour !!!
Bon là ça marchera... A moins bien sûr que ta table sujets contient plus de 2 champs bien sûr
merci beaucoup cette solution conviendra parfaitement mais c'est quand même bizarre que cela ne marche pas avec le WHERE NOT EXISTS
bon ca c'est fait mais mon projet est loin detre terminé helas^^
je vais surement mettre de nouveaux post bientot, si tu les vois ce serait cool de m'aider car ca me permet d'avancer
donc encore une fois merci beaucoup
bon ca c'est fait mais mon projet est loin detre terminé helas^^
je vais surement mettre de nouveaux post bientot, si tu les vois ce serait cool de m'aider car ca me permet d'avancer
donc encore une fois merci beaucoup
Content que ça marche finalement mais cette solution je pense que tu aurais pu la trouver tout seul... Dommage de pas avoir réussi avec where not exists... (T'as essayé IF NOT EXISTS ? excuse-moi d'insister mais j'ai un sentiment d'inachevé)
Et si jamais tu as des nouveaux pb de php/sql t'auras qu'à m'envoyer un 'tit mp avec le lien vers le topic... ou pas vu comment je t'ai été d'une grande aide sur ce coup-ci :(
Bon courage pour la suite
Et si jamais tu as des nouveaux pb de php/sql t'auras qu'à m'envoyer un 'tit mp avec le lien vers le topic... ou pas vu comment je t'ai été d'une grande aide sur ce coup-ci :(
Bon courage pour la suite
oue j'avais essayé avec le IF NOT EXISTS et ca ne marche pas
En revanche, au niveau de l'affichage j'avais pas fais attention mais il y a un léger probléme, en effet, cela m'affiche tous les sujets de base_physique dans l'ordre alphabétique puis ensuite tous les sujets de sujets dans l'ordre alphabétique..
exemple : base physique a popo momo comme sujets
sujets a lens wowo
actuellement dans le formulaire cela me donne : momo popo lens wowo
alors que moi je voudrais : lens momo popo wowo
un ordre alphabétique unique regroupant tous les sujets des 2 tables....
C'est posssible?
En revanche, au niveau de l'affichage j'avais pas fais attention mais il y a un léger probléme, en effet, cela m'affiche tous les sujets de base_physique dans l'ordre alphabétique puis ensuite tous les sujets de sujets dans l'ordre alphabétique..
exemple : base physique a popo momo comme sujets
sujets a lens wowo
actuellement dans le formulaire cela me donne : momo popo lens wowo
alors que moi je voudrais : lens momo popo wowo
un ordre alphabétique unique regroupant tous les sujets des 2 tables....
C'est posssible?
ben j'ai fait comme cela mais le probléme , c'est que ca mets les sujets de base_physique dans l'ordre alphabétique puis après ceux de sujets par ordre alphabétique
Mais moi je voudrais un ordre alphabétique global
le code :
$sujets=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet");
$sujets2=mysql_query("SELECT DISTINCT sujet2 FROM sujets ORDER BY sujet2");
while ($sujet = mysql_fetch_array($sujets)) #propose tous les sujets présents dans la table
{
echo '<option value="'.$sujet['sujet'].'">'.$sujet['sujet'].'</option>';
}
while ($sujet2 = mysql_fetch_array($sujets2)) #propose tous les sujets présents dans la table
{
echo '<option value="'.$sujet2['sujet2'].'">'.$sujet2['sujet2'].'</option>';
}
?>
Mais moi je voudrais un ordre alphabétique global
le code :
$sujets=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet");
$sujets2=mysql_query("SELECT DISTINCT sujet2 FROM sujets ORDER BY sujet2");
while ($sujet = mysql_fetch_array($sujets)) #propose tous les sujets présents dans la table
{
echo '<option value="'.$sujet['sujet'].'">'.$sujet['sujet'].'</option>';
}
while ($sujet2 = mysql_fetch_array($sujets2)) #propose tous les sujets présents dans la table
{
echo '<option value="'.$sujet2['sujet2'].'">'.$sujet2['sujet2'].'</option>';
}
?>
Bonsoir,
Si tu n'as pas besoin de concerver la provenance des données (telle ou telle table) tu peux entrer toutes les valeurs dans un tableau que tu classeras ensuite
Un p'tit script vite fait :
Ensuite il te suffit de récupérer les valeurs dans le tableau $tab et de les entrer dans ton formulaire
Si tu n'as pas besoin de concerver la provenance des données (telle ou telle table) tu peux entrer toutes les valeurs dans un tableau que tu classeras ensuite
Un p'tit script vite fait :
$sujets=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet");
$sujets2=mysql_query("SELECT DISTINCT sujet2 FROM sujets ORDER BY sujet2");
$n=0;
$tab = array();
while ($sujet = mysql_fetch_array($sujets)) #propose tous les sujets présents dans la table
{
$data = $sujet['sujet'];
$tab[$n] = $data;
$n++;
}
while ($sujet2 = mysql_fetch_array($sujets2)) #propose tous les sujets présents dans la table
{
$data = $sujet2['sujet2'];
$tab[$n] = $data;
$n++;
}
natcasesort($tab);
echo "<pre>";
print_r($tab);
echo "</pre>";
?>
Ensuite il te suffit de récupérer les valeurs dans le tableau $tab et de les entrer dans ton formulaire
if(isset($_POST['sujet2']))
{
//ajout à la bdd
$sujet2=$_POST['sujet2'];
$nombre2=mysql_query("SELECT COUNT (*) AS nombre2 FROM sujets WHERE sujet2 ='$sujet2'");
$n2=$nombre2['nombre2'];
// nombre correspond au nombre de fois où le sujet est déjà présent
//s'il vaut 0 on l'ajoute sinon on passe
if ($n2==0)
{
mysql_query("INSERT INTO sujets VALUES('', '$sujet2') IF NOT EXIST (SELECT * FROM base_physique WHERE sujet LIKE '".$sujet2."'");
}
}
?>