Pb ajout BDD -php

[Résolu]
Signaler
Messages postés
4
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010
-
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
Bonjour à tous !
j'ai un gros soucis au niveau de mon code pour ajouter de nouveaux champs dans une base de données : jusqu'à hier mon code marchait nikel mais aujourd'hui il a décidé de plus fonctionner alors que dois-je faire?
Je vous laisse un bout de code :
$nom=$_POST['nom'];

echo '
';

if (strlen($nom) < 1 or strlen($nom) > 4)
{
echo'Ajout impossible (champs avec 4 caractères maximum) !

';
echo "• Retour au menu des accès •";
}
else
{
$requete="SELECT idacces, tAcces FROM acces WHERE tAcces='$nom';";
$reponse=mysql_query($requete);
if (mysql_num_rows($reponse)>0)
{
echo'Ajout impossible, le nom existe déjà!

';
echo'
• Retour au menu d'accès •";
echo'
';
}
else
{

$sql="INSERT INTO acces VALUES ('','".$nom."');";

$jeu=@mysql_query($sql,$mysqlLink)or die("Requete incomprise");

if ($jeu==true)
{
echo "Vous venez d'ajouter $nom.

";
$query="SELECT tAcces FROM acces;";
$result = mysql_query($query) or die("Requete non comprise");
echo "<table>";
echo'Comme accès, il y a :
';
while ($tableau = mysql_fetch_array($result))
{
echo'• ';
echo $tableau['tAcces'] ;
echo '
';
}
echo'

';
echo'
• Retour au menu d'accès •";
echo'
';
}
else
{
echo 'Ajout impossible

';
echo'
• Retour au menu d'accès •";
echo'
';
}

echo '
';

Quand je teste ça me met requete incomprise...
Merci de votre aide !

7 réponses

Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
1
Pour éviter ce problème tu peux définir dans ton SQL les champs que tu veux affecter.
$sql = "INSERT INTO acces (id, nom) VALUES ('','".$nom."')"; 


De cette manière, si tu changes le schéma de ta table, tes requêtes restent valides.
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
1
Salut,

Essayes de remplacer tes die("Requete incomprise")
par die(mysql_error()) si il y a un problème au niveau de ton SQL le serveur te le dira
Messages postés
4
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010

Merci de m'aider !
ça marque : Column count doesn't match value count at row 1
Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
1
En fait apparement à ce niveau là, tu essaierais d'insérer trop ou pas assez de valeurs par rapport au nombre de colonnes de ta table.

$sql="INSERT INTO acces VALUES ('','".$nom."')";

Regardes si ta table acces contient bien deux colonnes.
En tout cas ton erreur vient de là.
Messages postés
4
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010

Oh merci bcp, je viens de voir que quelqu'un avait rajouté un champs sans me prévenir !

Merci beaucoup de ton aide
Messages postés
4
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
7 janvier 2010

Merci du conseil, je vais tout de suite le faire !
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Je ne veux pas chercher la petite bête mais la précision s'impose :

De cette manière, si tu changes le schéma de ta table, tes requêtes restent valides.

... à condition que les autres champs aient une valeur par défaut.

J'en profites pour répéter pour la 300 millième fois qu'il faut :
- indenter le code, et utiliser la balise qui va bien en cliquant sur de la textbox, ça facilite grandement la lecture

- TOUJOURS contrôler les données provenant de l'utilisateur (POST, GET) pour des raisons de sécurité et pour éviter les bugs.
Par exemple que ce passe t il si j'entre "c'es" dans ton champ nom ?
Et que ce passe t il si je fais de même mais que tu utilises mysql_real_escape_string ?

Cordialement,

Kohntark -