Probleme script d'ajout d'entrée dans une base mysql - PHP - Programmation
Marsh Posté le 27-08-2007 à 14:50:08
ajoutparfum.php, c'est ta page 1 ?
Accessoirement, tes mysql_query sont bourrés de failles de sécurité. Utilise mysqli/PDO avec des prepared statements, ou au pire mysql_real_escape_string.
Marsh Posté le 27-08-2007 à 14:52:12
Bonjour,
Oui ma page 1 est ajoutparfum.php et la 2 ajoutparfum_rediger.php.
Merci pour le conseil pour la sécurité, je regarderai ça une fois ce probleme réglé.
Marsh Posté le 27-08-2007 à 14:55:00
Au hasard, je dirais que tu as mis la colonne id en tinyint et que le id le plus grand vaut 255.
Si j'ai faux c'est quoi la structure de ta table et la valeur id la plus grande?
Marsh Posté le 27-08-2007 à 14:55:05
Pourquoi y a deux valeurs dans ton INSERT (dont une vide ) alors que ton id est en auto-increment et qu'il n'y a que "nom" ?
edit: ah, p-e que ça prend en compte l'auto-increment quand on fout du vide, m'enfin il serait plus sage de le faire proprement => INSERT INTO parfum (nom) VALUES ('$nom')
Marsh Posté le 27-08-2007 à 15:08:00
omega2 : Le id le plus grand vaut 76
Ma table :
id - tinyint(3)- auto_increment - Primaire - Index - Unique
nom - text - latin1_swedish_ci - Texte entier
Sielfried : J'avoue que ca serait plus propre ^^
Ce que je comprends pas, c'est que ce script fonctionnait tres bien et puis tout d'un coup il n'accepte plus aucune entrée
Marsh Posté le 27-08-2007 à 15:18:20
id le plus grand != valeur de l'auto-increment
Quand tu vires un élément, la valeur reste au même niveau.
Donc c'est probablement ça... tinyint pour un identifiant c'est quand même rarement une bonne idée.
Marsh Posté le 27-08-2007 à 15:20:09
J'y ai pensé, et j'ai mit en int pour voir, ca faisait la meme chose.
(Je préfère mettre tinyint car il risque d'y avoir au maximum 100 parfums, donc ca suffit.)
Marsh Posté le 27-08-2007 à 15:21:48
echo mysql_error() après tes mysql_query
Marsh Posté le 27-08-2007 à 15:28:39
Askental > Est ce que t'es sur que tu n'auras eu que 100 parfums différents en l'espace 15 ans?
L'autoincrément n'utilise pas les numéros libéré mais le plus grand numéro utilisé depuis la création de la table (ou le dernier forcage manuel de sa valeur) +1.
Même si tu n'as que 80 parfums à la fois, il suffit que t'en ai 20 qui disparaissent chaque année et 20 qui apparaissent à leur place (dieux sait qu'ils sont prolifique les créateurs de parfums) pour faire péter le compteur en moins de 9 ans.
Ceci dit, si ton id n'est pas mis en "not null", alors ton problème peut venir de là. T'es sur que tu n'as pas un id égal à null? (le dernier inséré logiquement)
PS : Depuis tout à l'heure j'essaye de me rapeller, sans réussir, comment mysql réagit quand on essaye d'envoyer une chaine vide dans une colonne numérique 'not null' en autoincrément.
Marsh Posté le 27-08-2007 à 15:30:40
Dans mes souvenirs ça s'autoincrémente. Mais je peux confondre avec oracle...
Marsh Posté le 27-08-2007 à 15:32:39
Le mieux ça reste de spécifier aucune valeur pour être sûr, mais s'il dit que ça fonctionnait avant...
Marsh Posté le 27-08-2007 à 14:47:05
Bonjour,
J'ai un script pour ajouter des entrées dans une base mysql, il fonctionnait bien jusqu'à il y a peu. Je n'ai pourtant fait aucune modification.
Voici la table :
id int(3) auto_increment Index
nom text
Voici mes le script :
Page 1 :
Page 2:
Je n'ai pour l'instant que 76 entrées dans la table. La modification et l'ajout d'entrée ne fonctionne pas, je n'ai aucun message d'erreur, c'est comme si je n'avais rien fait.
J'ai cru que c'était un probleme de table, je l'ai donc refaite, mais ca n'a rien modifier.
Avez vous une idée d'où pourrait provenir le probleme?
Merci d'avance !