2011-10-21 1 views
1

Existe-t-il une méthode rapide pour ajouter un identifiant unique à un upload php mysql - J'ai parcouru ces forums mais espérais qu'il existe une méthode beaucoup plus simple pour atteindre mon but. Essentiellement, j'ai un téléchargement qui fonctionne parfaitement - et j'espère ajouter un code de produit à chaque élément qui sera généré en utilisant le champ d'identification unique auto-incrémenté dans mysql.ajouter un identifiant unique à php mysql upload

Jusqu'à présent, j'ai le php suivant:

<?php include 'dbc.php'; page_protect(); 

if(!checkAdmin()) {header("Location: login.php"); 
exit(); 
} 

$host = $_SERVER['HTTP_HOST']; 
$host_upper = strtoupper($host); 
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF'])); 
$path = rtrim($login_path, '/\\'); 

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

foreach($_POST as $key => $value) { 
    $post[$key] = filter($value); 
} 
?> 

<?php 
if($_FILES['photo']) //check if we uploading a file 
{ 
    $target = "images/furnishings/"; 
    $target = $target . basename($_FILES['photo']['name']); 

    $title = mysql_real_escape_string($_POST['title']); 
    $desc = mysql_real_escape_string($_POST['desc']); 
    $price = mysql_real_escape_string($_POST['price']); 
    $pandp = mysql_real_escape_string($_POST['pandp']); 
    $pic = "images/furnishings/" .(mysql_real_escape_string($_FILES['photo']['name'])); 
    $productcode = "FUR000" .(mysql_real_escape_string($_POST['id'])); 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
    mysql_query("INSERT INTO `furnishings` (`title`, `desc`, `price`, `pandp`, `photo`,`productcode`) VALUES ('$title', '$desc', '$price', '$pandp', '$pic', '$productcode')") ;  

    echo "The product has been added to the furnishings category"; 
} 
else 
{ 
    echo "Please fill out the specifications and select the respective file to upload for the main image"; 

} 
} 
?> 

Et le code HTML suivant:

<form enctype="multipart/form-data" action="addfurn.php" method="POST"> 
    <table width="100%" border="2" cellpadding="5"class="myaccount"> 
    <tr> 
     <td>Title: </td> 
     <td><input type="text" name="title" /></td> 
    </tr> 
    <tr> 
     <td>Description: </td> 
     <td><input type="text" name = "desc" /></td> 
    </tr> 
      <tr> 
     <td>Price: </td> 
     <td><input type="text" name = "price" /></td> 
    </tr> 
     <tr> 
     <td>P&amp;P: </td> 
     <td><input type="text" name = "pandp" /></td> 
    </tr> 
    <tr> 
     <td>Main Image: </td> 
     <td><input type="file" name="photo" /></td> 
    </tr> 
    <tr> 
     <td colspan="2"><input type="submit" class="CMSbutton" value="Add" /></td> 
    </tr> 
    </table> 
</form> 

tout maintenant donné fonctionne - la seule "ligne de problème" dans le code est:

$productcode = "FUR000" .(mysql_real_escape_string($_POST['id'])); 

en supposant que l'ID n'a pas encore été généré, il ne peut pas l'ajouter à la requête d'insertion - donc la table dans mon sql renvoie simplement FUR000 pour chaque nouvel élément ajouté. Y at-il un moyen de modifier cette ligne pour auto-incrémenter dans mysql d'une manière similaire à l'ajout de nouvelles lignes - ou dois-je inclure un code unique pour chaque élément de mon tableau HTML?

Toute aide très appréciée!

Merci JD

+0

de quoi parle-t-il? Qu'est-ce que "mysql upload"? –

+0

désolé - php mysql insert ..... – JD2011

Répondre

0

Vous voulez utiliser uniqid, qui génère ids uniques. Je recommande de l'utiliser avec plus d'entropie pour être du bon côté.

+0

juste ce que je suis après .... j'ai besoin d'aide pour l'incorporer si! J'ai inclus $ productcode = printf ("uniqid ('', true):% s \ r \ n", uniqid ('', true)); en haut de ma page, puis utilisé la fonction d'insertion d'origine: mysql_query ("INSERT INTO' furniture' ('titre',' desc', 'prix',' pandp', 'photo',' productcode') VALEURS («$ title», «$ desc», «$ price», «$ pandp», «$ pic», «$ productcode») »); . Il ajoute définitivement quelque chose dans la table mais pour une raison quelconque, il renvoie un nombre à deux chiffres dans mysql - le type de code de produit est VARCHAR (255) - cela pourrait-il être le problème? – JD2011

1

vous avez besoin de 2 requêtes pour cela. D'abord, insérez vos données sans code de produit.
suivant, obtenir l'aide id mysql_insert_id()
enfin, créez votre productcode et mettre à jour votre table en utilisant cet identifiant nouvellement généré

cependant, je ne vois pas dans ce domaine. Pourquoi ne pas le créer à la volée?

+0

après avoir examiné la fonction uniqid que je n'avais pas rencontré complètement d'accord et qui cherchent à créer à la volée. – JD2011

+0

uniqid ne vous aidera pas. –

+0

sera Col Shrapnel !? – JD2011

Questions connexes