Pb ajout BDD -php

Résolu
tiiity Messages postés 4 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 7 janvier 2010 - 7 janv. 2010 à 15:19
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 7 janv. 2010 à 19:24
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

Utilisateur anonyme
7 janv. 2010 à 16:16
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.
3
Utilisateur anonyme
7 janv. 2010 à 15:58
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
0
tiiity Messages postés 4 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 16:06
Merci de m'aider !
ça marque : Column count doesn't match value count at row 1
0
Utilisateur anonyme
7 janv. 2010 à 16:10
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à.
0

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

Posez votre question
tiiity Messages postés 4 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 16:13
Oh merci bcp, je viens de voir que quelqu'un avait rajouté un champs sans me prévenir !

Merci beaucoup de ton aide
0
tiiity Messages postés 4 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 16:23
Merci du conseil, je vais tout de suite le faire !
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 janv. 2010 à 19:24
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 -
0
Rejoignez-nous