Valhala Posté 9 Juin 2005 Posté 9 Juin 2005 Bonjour, j'ai crée un petit script permettant de faire un upload d'un fichier avec titre et commentaire vers une base mysql, tout se déroule parfaitement jusqu'au moment ou j'utilise 2 fois le même titre; la première donnée enregistré est écrasé par le nouveau, ce qui fait que je me retrouve avec deux résultats identique suite à l'écrasement. Je comprend pas trop, j'ai bien des ID pour chaque nouveaux fichiers uploader donc je devrais pas avoir l'écrasement. Pouvez-vous m'aider ? Merci d 'avance
MarvinLeRouge Posté 9 Juin 2005 Posté 9 Juin 2005 Le bout de script avec l'insertion des données, stp
Valhala Posté 10 Juin 2005 Auteur Posté 10 Juin 2005 (modifié) Bonjour, voila le formulaire qui permet d'inserer les données, seul le "name" pose problème, il écrase les autres données si il existe déja dans la bdd. <form name="frmRegister" method="post" action="uploadphone.php?1"><table width="80%" border="0" cellspacing="0" cellpadding="0"> <td width="30%">Name:</td> <td width="70%"> <input name="name" type="text" size="45" maxlength="255" /></td> </tr> <tr> <td>Comments:</td> <td><textarea name="textarea" cols="45" rows="6"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" name="Submit" value="Register" /> <input name="Reset" type="reset" id="Reset" value="Reset" /></td> </tr></table></form> if (isset($_GET['1'])){ $phonename = $_POST['name']; $phonecreated = $_POST['created']; $phoneanimated = $_POST['animated']; $phonecomments = $_POST['textarea']; $phonetype1 = $_POST['type']; $userloggedin = $_SESSION['myusername']; $userloggedin = username2num($userloggedin, $userloggedin); if ((!$phonename) || (!$phonecreated) || (!$phoneanimated) || (!$phonecomments)){ echo "You need to fill in all fields"; }else{ $sql = mysql_query("INSERT INTO phones_phones (name, created, animated, comments, author, phonetype) VALUES ('$phonename', '$phonecreated', '$phoneanimated', '$phonecomments', '$userloggedin', '$phonetype1')"); echo "<br /><br /><hr color=\"#E3E3E3\" size=\"1\"/><br /><tr>"; echo" <td>Screenshots:</td>"; echo" <td><form method=\"POST\" enctype=\"multipart/form-data\" action=\"uploadphone.php?2&phone=$phonename&phonetype=$phonetype1\">"; echo" <input name=\"pic1\" type=\"file\" size=\"40\" /> Small screenshot"; echo" <input name=\"pic2\" type=\"file\" size=\"40\" /> Large screenshot"; echo" <input name=\"file\" type=\"file\" size=\"40\" /> Theme file<br />"; echo " <input type=\"submit\" value=\"Submit\" name=\"B1\"><input type=\"reset\" value=\"Reset\" name=\"B2\"></td>"; Je sais pas si c'est suffisant car les autres fichiers sont plutôt gros. Merci d'avance Edit: j'avais oublié la deuxième partie et j'ai enlever ce qui était inutile Modifié 10 Juin 2005 par Valhala
Thanh Posté 10 Juin 2005 Posté 10 Juin 2005 yO, Il faut effectivement juste ajouter une clé primaire de type numérique auto incrémentable. Comme cela, tu n'auras même pas à modifier tes scripts
Valhala Posté 10 Juin 2005 Auteur Posté 10 Juin 2005 Bonjour, pour ne pas dérangé solo à chaque fois je continue ici pour d'autre idées. Ma table est CREATE TABLE `phones_phones` (`ID` bigint(20) NOT NULL auto_increment,`name` varchar(255) default NULL,`created` varchar(255) default NULL,`animated` enum('Yes','No') default 'No',`size` varchar(255) default NULL,`logofile` varchar(255) default NULL,`comments` text,`imgfile` varchar(255) default NULL,`author` int(11) default NULL,`phonetype` enum('T610','S700','K700','K750') default NULL,`mainimage` varchar(255) default NULL,PRIMARY KEY (`ID`),UNIQUE KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=67; Solo ma conseillé de enlever "UNIQUE KEY `name` (`name`)", ce qui à partiellement résolu le problème. Lors de l'upload des fichiers ils sont enregistré pour les valeurs avec le même 'name' donc denouveau un écrasement. Etant débutant je suis perdu la car j'arrive pas à comprendre l'erreur. Merci d'avance
Valhala Posté 10 Juin 2005 Auteur Posté 10 Juin 2005 (modifié) J'ai trouvé mon erreur, c'etait tout simplement "action=\"uploadphone.php?2&phone=$phonename" qui posait problème. Maintenant j'éssaye de utiliser "last_insert_id" à la place pour paschanger tout le code mais sans trop succes ... Une idéee ? Merci Edit: J'ai trouvé, merci encore Modifié 11 Juin 2005 par Valhala
MarvinLeRouge Posté 11 Juin 2005 Posté 11 Juin 2005 Si tu utilises auto_increment, tu n'as pas besoin de last_insert_id : tu te contentes de ne pas préciser la clé, et la base la créera toute seule.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant