Aller au contenu

Sujets conseillés

Posté

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

Posté (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é par Valhala
Posté

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

Posté

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

Posté (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é par Valhala
Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...