Cherche méthodes pour ajouter photos associer a Un ID

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Cherche méthodes pour ajouter photos associer a Un ID

par fabien_14 » 09 sept. 2006, 18:44

Un petit remontage. Si de bonnes âmes pourrez me donner un coup de main.

Merci.

par fabien_14 » 08 sept. 2006, 14:35

Recoucou

Encore une question

Je viens de l'integrer a mes page ... cependant quand je fait l'insertion du livre dor avec le texte etc ... il a donc un ID admetons : 87 poster par l'user avec l'id : 10

ceux que j'ai fait c'est ceci juste apres la requete qui inseere les donnés dans le livre dor

$rubrique = mysql_insert_id();
ceux qui me donne : 87

Ceux 87 je l'integre dans ma table image dans le champs rubrique afin de lui corréler que les images sont au message 87 poster par l'user 10 .

cependant je viens di penser si qlq poster au meme moments sa peu foutre la dawa ? ya t'il un moyen de lui dire
de prendre le dernier ID du livre dor ecrit par l'user 10. et de retourner son dernier ID lui appartemant ?

J'espere que c clair :?

Merci encore.

PS : je n'arrrive toujours pas a limiter la taille de mes envoi a 600 ko

EDIT 2

Bon Sa commence a etre byzarre ...

Code : Tout sélectionner

//check file extension////////////////////// $ext = strrchr($file_name,'.'); $ext = strtolower($ext); if (($extlimit == "yes") && (!in_array($ext,$limitedext))) { //echo "L'extension du fichier sélectionné n'est pas correcte. <br /><a href=\"#\">retour</a>"; exit(); } //get the file extension.///////////////////// $getExt = explode ('.', $file_name); $file_ext = $getExt[count($getExt)-1]; $sql = mysql_query(" INSERT INTO up_image2 SET nom_image ='$rand_name.$file_ext', id_auteur ='$id_auteur', rubrique = '$rubrique', description = 'blabla', id_parent = '15' ") or die( mysql_error()); //Recuperation du dernier id et renomage///////////////// $rand_name = mysql_insert_id();
Suivant ou je met la requete SQL sa ne fait pas pareil ... dans ce cas la ca me creer bien mes images sur le ftp en les renanmant au bon ID. Cepandant je me suis apercu que j'avai oublié de mettre le nom de limage dans ma base de donné effectivement je n'avais que l'ID mais pas l'extension hors ya 4 extension possible ... donc j'ai rajouter un champs "nom_image" "nom_image ='$rand_name.$file_ext', "

mais dans la base de donnée ca me met ceci

.jpg
75.gif
76.jpg

il ne me met pas le chiffre ... et si je remonte le requete juste aprés

Code : Tout sélectionner

//Recuperation du dernier id et renomage///////////////// $rand_name = mysql_insert_id();
Il me prend comme valeur pour mysql_insert_id() la valeur de la derniere requete soit le livre d'or ...

ji comprend rien dans tous c ordre si qlq peu m'eclaircir.

merci aux bonne ames

par fabien_14 » 08 sept. 2006, 12:27

Je viens de trouver c'etais tous con ... il fallai mettre la requete sql avant le rename ! :shock:

$sql = mysql_query(" INSERT INTO up_image2 SET id_membres ='$userid', rubrique = '1', description = 'blabla', id_parent = '15' ") or die( mysql_error());

//Recuperation du dernier id et renomage
$rand_name = mysql_insert_id();

je pense pas que la requete soi au bon endroit ! si qlq peu m'expliker pkoi il fau metre la requete avant le renomage ?

Aussi je voudrai limiter l'envoi des image a 600 Ko (par exemple) comment faut t'il faire ? et aussi mettre un message d'erreur pour toute les photos qui n'ont pas été envoyées.


merci

par fabien_14 » 08 sept. 2006, 11:44

J'ai essayer alors c'est etrange

sa ne marche que sur une photos , j'ai mi sa

Code : Tout sélectionner

//Recuperation du dernier id et renomage $rand_name = mysql_insert_id();
au lieu de :

Code : Tout sélectionner

//create a random file name $rand_name = md5(time()); $rand_name= rand(0,999999999);
si j'envoi 3 photos : sa me donne sa

Code : Tout sélectionner

Image Thumb: image_up/photos_carnet/12/mini/0 _mini.png grosse image: image_up/photos_carnet/0.jpg Les photos ont bien étaient envoyés elle seront disponible après vérification Image Thumb: image_up/photos_carnet/12/mini/12 _mini.png grosse image: image_up/photos_carnet/12.jpg Les photos ont bien étaient envoyés elle seront disponible après vérification Image Thumb: image_up/photos_carnet/12/mini/13 _mini.png grosse image: image_up/photos_carnet/13.jpg
donc en gros tous marche sauf la premiere qui reste toujours a 0 :? alors que sa devrai etre

Code : Tout sélectionner

Image Thumb: image_up/photos_carnet/12/mini/11 _mini.png grosse image: image_up/photos_carnet/11.jpg

par iclo » 08 sept. 2006, 11:31

Avec une structure à deux tables, après avoir fait une insertion pour une photo (dans la table photo, tu aurais une photo = une ligne) tu peux utiliser mysql_insert_id() qui te renverra l'id autoincrémenté de l'insertion que tu viens d'effectuer.

par fabien_14 » 08 sept. 2006, 11:21

Exacte,

J'ai reusi a faire une premiere insertion dans la base de donnée

$sql = mysql_query(" INSERT INTO up_image2 SET id_membres ='$userid', rubrique = '1', description = 'blabla', id_parent = '15' ") or die( mysql_error());

Pour l'instant j'ai mi tou les truc en dur mais plus tard je metrai les variable ....

Mais un probleme persite comment on peu faire pour renomer l'image en fonction de l'id auto increment ?

c'est a dire que si mon auto increment est a 35 ... et qu'une personne envoi 5 photos que les photos soit renomer 36.jpg, 37.jpg, 38.jpg, 39.jpg, 40.jpg ?

Merci

par iclo » 08 sept. 2006, 11:04

Tu dois l'avoir dans ceci : $_FILES['imgfile']['name'][$key]
Mais attention, aux risques d'avoir des noms communs à plusieurs fichiers.

par fabien_14 » 08 sept. 2006, 11:01

Je revien de faire la structure de la table

CREATE TABLE `up_image2` (
`id_photos` int(10) NOT NULL default '0',
`id_membres` int(10) NOT NULL default '0',
`rubrique` int(10) NOT NULL default '0',
`description` text NOT NULL,
`id_parent` int(10) NOT NULL default '0',
PRIMARY KEY (`id_photos`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Donc si j'ai bien compris il faut que pour chaque photos envoyé sa s'insere comme un nouvel enregistrement ?

par fabien_14 » 08 sept. 2006, 10:53

Je commence a voir, je vait regarder la structure de la base de donnée effectivement c'est pas top.

Sinon j'ai deja une zone membre avec id ... Id_auteur est ici pour justement corréler l'image a son auteur.

Pour les dossier j'etais parti pour avoir une creation des dossier dynamique afin de pouvroir structurer tous ceci. Je vai voir ceci :)

Sinon j'ai donc reussi a faire tou ca (creation de dossier) et upload multiple.

Cependant (meme si je vai revoir la structure de la BDD image avec ce code

Code : Tout sélectionner

<?php if ($_GET['e'] == TRUE ) { $rub = "1"; $idme = "$userid"; $aaa = "$rub$idme"; $path_big = "image_up/photos_carnet"; $path_thumbs = "$path_big/$aaa/mini"; if(file_exists("$path_big/$aaa/index.html")) { echo ""; } else { mkdir ("$path_big/$aaa", 0777); mkdir ("$path_big/$aaa/mini", 0777); $fichier = fopen("$path_big/$aaa/index.html", "w+"); } //the new width of the resized image. $img_thumb_width = 100; // in pixel $extlimit = "yes"; //Do you want to limit the extensions of files uploaded (yes/no) //allowed Extensions $limitedext = array(".gif",".jpg",".png",".jpeg",".bmp"); //check if folders are Writable or not //please CHOMD them 777 if (!is_writeable($path_thumbs)){ die ("Erreur: Le dossier <b>($path_thumbs)</b> n'est pas accessible"); } if (!is_writeable($path_big)){ die ("Erreur: Le dossier <b>($path_big)</b> n'est pas accessible"); } //if the for has submittedd if (isset($_POST['upForm'])){ foreach ($_FILES['imgfile']['tmp_name'] as $key => $value) { $file_tmp=$value;//nom reel de l'image $file_type = $_FILES['imgfile']['type'][$key]; $file_name = $_FILES['imgfile']['name'][$key]; $file_size = $_FILES['imgfile']['size'][$key]; //check if you have selected a file. //if(!is_uploaded_file($file_tmp)){ //echo "Error: Veuillez sélectionner une image!. <br />--<a href=\"#\">retour</a>"; //exit(); //exit the script and don't do anything else. //} //check file extension $ext = strrchr($file_name,'.'); $ext = strtolower($ext); if (($extlimit == "yes") && (!in_array($ext,$limitedext))) { //echo "L'extension du fichier sélectionné n'est pas correcte. <br /><a href=\"#\">retour</a>"; exit(); } //get the file extension. $getExt = explode ('.', $file_name); $file_ext = $getExt[count($getExt)-1]; //create a random file name $rand_name = md5(time()); $rand_name= rand(0,999999999); //get the new width variable. $ThumbWidth = $img_thumb_width; //keep image type if($file_size){ if($file_type == "image/pjpeg" || $file_type == "image/jpeg"){ $new_img = imagecreatefromjpeg($file_tmp); }elseif($file_type == "image/x-png" || $file_type == "image/png"){ $new_img = imagecreatefrompng($file_tmp); }elseif($file_type == "image/gif"){ $new_img = imagecreatefromgif($file_tmp); } //list width and height and keep height ratio. list($width, $height) = getimagesize($file_tmp); $imgratio=$width/$height; if ($imgratio>1){ $newwidth = $ThumbWidth; $newheight = $ThumbWidth/$imgratio; }else{ $newheight = $ThumbWidth; $newwidth = $ThumbWidth*$imgratio; } $resized_img = imagecreatetruecolor($newwidth,$newheight); imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); //save image Imagepng ($resized_img,"$path_thumbs/$rand_name _mini.png"); ImageDestroy ($resized_img); ImageDestroy ($new_img); echo "<br>Image Thumb: <a href=\"$path_thumbs/$rand_name _mini.png\" target=\"_new\" >$path_thumbs/$rand_name _mini.png</a>"; } //envoyer la grosse image///////////////////// move_uploaded_file ($file_tmp, "$path_big/$aaa/$rand_name.$file_ext"); echo "<br>grosse image: <a href=\"$path_big/$rand_name.$file_ext\" target=\"_new\">$path_big/$rand_name.$file_ext</a>"; echo "<br /><h3>Les photos ont bien étaient envoyés elle seront disponible après vérification</h3>"; } ?> <br /><br/> <? }}else{ //if the form hasn't been submitted. } ?> <br /><h3>Formulaire d'envoie de photos</h3> <form method="post" name="upForm" enctype="multipart/form-data" action="index.php?dest=up&e=1"> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /><br /> <input type="file" name="imgfile[]" /> <br /><br /> <input type="Submit" name="upForm" value="Envoie de l'image" /> <br /><br /> <img src='' name='img_vv' width='0'> </form>
Comment on reconnais le nom de l'image a inserer dans la base ?

Code : Tout sélectionner

INSERT INTO `up_image` VALUES (1, '1', 'root', '5', '25', 'image1', 'image2', 'image3', 'image4', 'image5', '', '', '', '', '');
Les images 1;2;3;4;5 je ne vois pas les variable :?

Merci !!!

par iclo » 08 sept. 2006, 10:41

Salut, je vais me permettre de te donner quelques conseils.

Ta structure de base de donnée me fait un peu peur, car si les gens ont peu de photos (1 ou 2 en moyenne par ex) ce ne sera pas très optimal, d'avoir tout des champs vide pour les autres photos. Ensuite il est possible qu'un jour tu souhaites permettre d'avoir plus que 9 photos par membre.

Il vaudrait mieux avoir deux tables: une Membre, avec les informations propres à un membre, et une autre avec les couples idPhotos et IdMembres. le champ idMembre faisant référence au champ id de la table membre.
Avec cette structure, tu n'es pas limité sur le nombre de photo.

Ensuite, je ne comprends pas trop pourquoi tu dois avoir une création dynamique de répertoire, la base de donnée te permet de faire le lien entre les photos et les membres, tu peux donc les stocker toutes dans un même dossier.
Par la même occasion, il est nécessaire d'utiliser un nom unique pour les fichiers photos, pour qu'il n'y ai pas de remplacement d'une photo existante par celle d'un autre membre, pour ça l'idPhoto de la table des photos, peut-être utilisé vu qu'il sera en autoincrément et donc unique.

par Cyrano » 08 sept. 2006, 10:32

Tu devrais jeter un coup d'oeil ici pour voir comment tu pourrais avantageusement optimiser cette structure.

par fabien_14 » 08 sept. 2006, 10:27

Me revoila ... pas bcp dormi dédiou ji arriverai.

pour la structure de la base de donnée c'est mieux de faire comme ceci pour stoker les images ?

CREATE TABLE `up_image` (
`id` int(10) NOT NULL default '0',
`id_auteur` varchar(10) NOT NULL default '',
`nom_auteur` varchar(40) NOT NULL default '',
`rubrique` varchar(5) NOT NULL default '',
`id_parent` varchar(10) NOT NULL default '',
`image1` varchar(50) NOT NULL default '',
`image2` varchar(50) NOT NULL default '',
`image3` varchar(50) NOT NULL default '',
`image4` varchar(50) NOT NULL default '',
`image5` varchar(50) NOT NULL default '',
`image6` varchar(50) NOT NULL default '',
`image7` varchar(50) NOT NULL default '',
`image8` varchar(50) NOT NULL default '',
`image9` varchar(50) NOT NULL default '',
`image10` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Merci :)

par fabien_14 » 08 sept. 2006, 00:51

--- Edit jai changer de code

par charabia » 07 sept. 2006, 15:14

Evites de stocker des images en BDD. Stockes juste l'URL ;)

par fabien_14 » 07 sept. 2006, 15:12

Ok merci :)

je vois a peu pret le principe.

Je vais essayer de me basé la dessus pour inserer les images : http://www.supinfo-projects.com/fr/2006 ... s_mysql/4/

je pense revenir :) j'aurai sans doute d'autre question ;)