Accéder à une variable dans un tableau
Salut !
Eh voila, mon tout premier post!
Je débute en PHP et je suis confronté à un problème sur lequel je butte depuis quelques heures maintenant..
Problématique:
J'aimerais vérifier si une valeur que je souhaite envoyer en base est déjà présente dans un champ de ma table.
Ce n'est peut-être pas très clair, mais vous devriez vite comprendre, grâce à ce petit bout de code ultra-simplifié illustrant mon problème.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
// 1) Recupération des var de mon formulaire
$vartest = $_POST['mavartest'];
// 2) Creation de mon tableau de valeurs
$query2 = "SELECT chp1 FROM table1";
$result2 = mysql_query ($query2, $connexion);
$list=array();
if($result2){
while($alist=mysql_fetch_object($result2)){
$list[]=$alist;}
}
else{
echo mysql_error();
}
// 3) Verification de l'unicité de la valeur en base
if (in_array ($vartest, $list)) {
print "variable déjà présente en base !";
}
// 4) Valeur absente, donc je peux inserer ma variable dans ma table
else{
$query3 = "INSERT INTO table1 (id,chp1) VALUES (NULL,'$vartest')";
$result3 = mysql_query ($query3, $connexion);
echo "Nouvelle variable ajoutée: $vartest";
} |
Le problème? En fait, ce code ne fonctionne tout simplement pas, puisque même si la valeur est présente dans mon tableau, j'insere une nouvelle valeur, identique à la première, dans ma table.. :(
Si quelqu'un pouvait m'aider, ca serait super sympa! Je vous remercie d'avance,
Cordialement,
Tests non concluants.. :(
Re bonsoir et tout d'abord, bien bon merci à tous les deux pour vos réponses!
Malheureusement, je reviens à vous pour vous faire part de mes tests, qui ne furent pas très brillants ! :?
- Mac,
je te remercie déjà pour tes explications sur l'utilisation des fonctions jointes à ton code, qui m'ont fait prendre conscience de la différence notable entre ce que je voulais faire et ce que je faisais vraiment! :D
Cela dit, j'ai testé ta facon de faire, avec pour résultats des erreurs signalées sur les requête mysql_num_rows() et mysql_free_result() :
Une erreur sur la requête? J'ai ajouté un die(..), et j'ai obtenu comme erreur, très explicite,
" 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 '34' at line 1 "
Je pensais à une erreur de type entre les données envoyées à MySQL et celles retournées, mais je ne trouve pas... donc si tu as une idée n'hésite pas ca me ferait grand plaisir de comprendre, et ce serait même, pour tout te dire, un vrai soulagement!! :)
- Alex,
ton code proche de ce que je cherchais à faire au départ, et avec ces quelques p'tites erreurs de syntaxe, me pose le même problème que le mien: Le compteur n'est jamais nul, meme quand il devrait l'être et du coup toutes les valeurs envoyées, même celles déjà présentes, sont insérées!! :? Une idée en révision?
Merci encore à tous les deux pour votre aide.. vraiment !
Dès que ca marche, vous en serez les premiers informés.
Bonne soirée Messieurs!
en guise de conclusion ..
Oui voilà, c'est bien ca!
J'ai décidé de consacrer quelques minutes de mon cours d'ADO tout à l'heure pour en apprendre un peu plus sur le fonctionnement des différentes fonctions mysql_fetch_*, et j'y vois nettement plus clair maintenant. :)
Pour information pour mon champs "Chp1", il s'agissait bien d'un entier, d'où l'erreur.
Encore merci Mac, & merci à vous tous,
Je saurais sûr qui compter lorsque je bloquerai à l'avenir ..
.. en continuant, tout de même et avant toute chose, à chercher à éclairer mes doutes grâce aux tutoriaux bien sûr ! ;)
Le sujet est clos!
Bonne soirée Mac,
Bonne soirée à tous,
& à bientôt!