Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1435 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme script d'ajout d'entrée dans une base mysql

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme script d'ajout d'entrée dans une base mysql

n°1604466
Askental
Posté le 27-08-2007 à 14:47:05  profilanswer
 

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 :
 

Code :
  1. <h2><a href="ajoutparfum_rediger.php">Ajouter un Parfum</a></h2>
  2. <?php
  3. mysql_connect("localhost", "***", "***" );
  4. mysql_select_db("***" );
  5. if (isset($_POST['nom']) AND isset($_POST['image']))
  6. {
  7.     $nom = addslashes($_POST['nom']);
  8.     if ($_POST['id_parfum'] == 0)
  9.     {
  10.         mysql_query("INSERT INTO parfum VALUES('', '" . $nom . "')" );
  11.     }
  12.     else
  13.     {
  14.         mysql_query("UPDATE parfum SET nom='" . $nom . "' WHERE id=" . $_POST['id_parfum']);
  15.     }
  16. }
  17. if (isset($_GET['supprimer_parfum']))
  18. {
  19.     mysql_query('DELETE FROM parfum WHERE id=' . $_GET['supprimer_parfum']);
  20. }
  21. ?>
  22. <table><tr>
  23. <th>Modifier</th>
  24. <th>Supprimer</th>
  25. <th>Nom</th>
  26. </tr>
  27. <?php
  28. $retour = mysql_query('SELECT * FROM parfum ORDER BY nom DESC');
  29. while ($donnees = mysql_fetch_array($retour))
  30. {
  31. ?>
  32. <tr>
  33. <td><?php echo '<a href="ajoutparfum_rediger.php?modifier_parfum=' . $donnees['id'] . '">'; ?>Modifier</a></td>
  34. <td><?php echo '<a href="ajoutparfum.php?supprimer_parfum=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
  35. <td><?php echo stripslashes($donnees['nom']); ?></td>
  36. </tr>
  37. <?php
  38. }
  39. ?>
  40. </table>


 
Page 2:
 

Code :
  1. <h3><a href="ajoutparfum.php">Retour à la liste des Parfums</a></h3>
  2. <?php
  3. mysql_connect("localhost", "***", "***" );
  4. mysql_select_db("***" );
  5. if (isset($_GET['modifier_parfum']))
  6. {
  7.     $retour = mysql_query('SELECT * FROM parfum WHERE id=' . $_GET['modifier_parfum']);
  8.     $donnees = mysql_fetch_array($retour);
  9.  
  10.     $nom = $donnees['nom'];
  11.     $id_parfum = $donnees['id'];
  12. }
  13. else
  14. {
  15.     $nom = '';
  16.     $id_parfum = 0;
  17. }
  18. ?>
  19. <form action="ajoutparfum.php" method="post">
  20. <p>Nom : <input type="text" size="30" name="nom" value="<?php echo stripslashes ($nom); ?>" /></p>
  21.   <br /> 
  22.     <input type="hidden" name="id_parfum" value="<?php echo $id_parfum; ?>" />
  23.     <input type="submit" value="Envoyer" />
  24. </p>
  25. </form>


 
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 !

mood
Publicité
Posté le 27-08-2007 à 14:47:05  profilanswer
 

n°1604476
sielfried
Posté le 27-08-2007 à 14:50:08  profilanswer
 

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.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1604480
Askental
Posté le 27-08-2007 à 14:52:12  profilanswer
 

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é.

n°1604486
omega2
Posté le 27-08-2007 à 14:55:00  profilanswer
 

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?

n°1604487
sielfried
Posté le 27-08-2007 à 14:55:05  profilanswer
 

Pourquoi y a deux valeurs dans ton INSERT (dont une vide :heink:) 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')


Message édité par sielfried le 27-08-2007 à 14:56:11

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1604497
Askental
Posté le 27-08-2007 à 15:08:00  profilanswer
 

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 :  :whistle: 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  :??:

n°1604505
sielfried
Posté le 27-08-2007 à 15:18:20  profilanswer
 

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.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1604508
Askental
Posté le 27-08-2007 à 15:20:09  profilanswer
 

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.)

n°1604509
sielfried
Posté le 27-08-2007 à 15:21:48  profilanswer
 

echo mysql_error() après tes mysql_query


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1604514
omega2
Posté le 27-08-2007 à 15:28:39  profilanswer
 

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.

mood
Publicité
Posté le 27-08-2007 à 15:28:39  profilanswer
 

n°1604520
durkheim
Posté le 27-08-2007 à 15:30:40  profilanswer
 

Dans mes souvenirs ça s'autoincrémente. Mais je peux confondre avec oracle...

n°1604524
sielfried
Posté le 27-08-2007 à 15:32:39  profilanswer
 

Le mieux ça reste de spécifier aucune valeur pour être sûr, mais s'il dit que ça fonctionnait avant... :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme script d'ajout d'entrée dans une base mysql

 

Sujets relatifs
synchronisation mysqlProblème d'opération avec let
Probleme COOKIE site multi langue[RESOLU][Java] Pour du web (tomcat), Postgres ou MySQL ?
[MySQL] Combiner une SELECT et une UPDATEJe cherche un script d'explorateur de FTP à la JBC Explorer
Probleme Formula[Résolu] Problème d'arborescence avec require_once( )
Problème pour une mise en page sous forme de tableauProblème avec swfObject
Plus de sujets relatifs à : Probleme script d'ajout d'entrée dans une base mysql


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR