Envoyer des photos vers Base MySql
Fermé
galaxico
Messages postés
4
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2011
-
1 juil. 2011 à 17:51
galaxico Messages postés 4 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 7 juillet 2011 - 6 juil. 2011 à 18:18
galaxico Messages postés 4 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 7 juillet 2011 - 6 juil. 2011 à 18:18
A voir également:
- Envoyer des photos vers Base MySql
- Comment partager des photos - Guide
- Toutes mes photos - Guide
- Formules excel de base - Guide
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Transférer photos android vers pc - Guide
3 réponses
salut,
voila une idée,
sur une nouvelle table du cree un champs compteur que tu va lire a chaque enregistrement, ensuite +1 et du revoie le nombre a la basse de donnée
tu obtiens le chiffre
Pour la lettre si ton formulaire limite le nombre image a uploadé tu peux faire un truc du genre
$image1= $_POST['image1'];
$lettre_image1=A;
$nom_image1= le nombre que tu recupérer a basse + $lettre_image1
ensuite de reste a renomer le fichier avant l'enregistrement
voila une idée,
sur une nouvelle table du cree un champs compteur que tu va lire a chaque enregistrement, ensuite +1 et du revoie le nombre a la basse de donnée
tu obtiens le chiffre
Pour la lettre si ton formulaire limite le nombre image a uploadé tu peux faire un truc du genre
$image1= $_POST['image1'];
$lettre_image1=A;
$nom_image1= le nombre que tu recupérer a basse + $lettre_image1
ensuite de reste a renomer le fichier avant l'enregistrement
bon, j'ai déjà le script qui ajout les photo en bianire dans des champs BLOB mais, d'après ce qu'on m'a dit la base deviendera de plus en plus lourde, et c'est mieux d'enregistrer juste l'URL des photos dans la base et les photos dans un repertoire dans la racine du site...je sais comment manipuler les URL des photos mais juste en affichage, et je l'ai déjà fait...je met les photos manuellement dans le dossier IMAGES dans la racine du site, puis j'insère les URL dans la table img et j'affiche les photos avec <img src="'.$url.'" width="250" height="239"> ...
le prb c'est comment avec un formulaire HTML envoyer des photos dans le dossier qui se retrouvera dans la racine du site, et mettre l'URL dans la base de données...
voici je script complèt pour insérer les photos en BLOB dans la base :
- la page index.php
<html>
<head>
<title>Stock d'images</title>
</head>
<body>
<?php
include ("transfert.php");
// si le variable Fic "champ image" est plein, on execute la fonction transfert
if ( isset($_FILES['fic']) )
{
transfert();
}
?>
<h3>Envoi d'une image</h3>
<!-- enctype="multipart/form-data" c'est pour que le navigateur du client transfère les données binaires correctement. -->
<form enctype="multipart/form-data" action="#" method="post">
<!-- le champ caché name="MAX_FILE_SIZE" permet d'empêcher le transfert de fichier supérieur à 1.050.000 octets-->
<input type="hidden" name="MAX_FILE_SIZE" value="1050000" />
<input type="file" name="fic" size=50 value="" />
<input type="submit" value="Envoyer" />
</form>
<p><a href="index.php">Liste</a></p>
</body>
</html>
- le page transfert.php
<?php
function transfert ()
{
// création de variales
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 1050000; // vous pouver modifier la taille....
// on met le fichier dans le dossier temporaire
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{ echo('<script> alert("Envoi non effectue"); </script>');
return false;
}
else
{
// on attribue la taille de l'image sélectionée au variable de taille
$img_taille = $_FILES['fic']['size'];
// on compare la taille de l'image avec la taille qu'on a préciser comme un maximum
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
else{echo('<script> alert(" 1 image enregistree \n Envoi bien effectue "); </script>');}
// attribution des valeurs récupéré aux variables après la validation de l'image
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
// l'appel de la page connexion.php pour se connecter à la base de données
include ("connexion.php");
// le fichier est stocké physiquement dans un répertoire temporaire du serveur.
// "file_get_contents" c'est pour récupérer le contenu binaire
$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
$req = "INSERT INTO
images (img_nom, img_taille, img_type, img_blob)
VALUES ('$img_nom' , '$img_taille' , '$img_type' , '".addslashes ($img_blob)."') ";
$ret = mysql_query ($req) or die (mysql_error ());
return true;
}
}
?>
- la page de connexion à la base : connexion.php
<?php
$hote = 'localhost';
$base = 'img';
$user = 'root';
$pass = '';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
?>
- la base de données img :
créer la base img et éxecuter la requête suivante pour créer la table :
CREATE TABLE 'images' (
'img_id' INT NOT NULL AUTO_INCREMENT ,
'img_nom' VARCHAR( 50 ) NOT NULL ,
'img_taille' VARCHAR( 25 ) NOT NULL ,
'img_type' VARCHAR( 25 ) NOT NULL ,
'img_blob' LONGBLOB NOT NULL ,
PRIMARY KEY ( 'img_id' )
)
et voilà pour ceux qui cherche à ajouter des photos en binaire dans la BDD...
le prb c'est comment avec un formulaire HTML envoyer des photos dans le dossier qui se retrouvera dans la racine du site, et mettre l'URL dans la base de données...
voici je script complèt pour insérer les photos en BLOB dans la base :
- la page index.php
<html>
<head>
<title>Stock d'images</title>
</head>
<body>
<?php
include ("transfert.php");
// si le variable Fic "champ image" est plein, on execute la fonction transfert
if ( isset($_FILES['fic']) )
{
transfert();
}
?>
<h3>Envoi d'une image</h3>
<!-- enctype="multipart/form-data" c'est pour que le navigateur du client transfère les données binaires correctement. -->
<form enctype="multipart/form-data" action="#" method="post">
<!-- le champ caché name="MAX_FILE_SIZE" permet d'empêcher le transfert de fichier supérieur à 1.050.000 octets-->
<input type="hidden" name="MAX_FILE_SIZE" value="1050000" />
<input type="file" name="fic" size=50 value="" />
<input type="submit" value="Envoyer" />
</form>
<p><a href="index.php">Liste</a></p>
</body>
</html>
- le page transfert.php
<?php
function transfert ()
{
// création de variales
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 1050000; // vous pouver modifier la taille....
// on met le fichier dans le dossier temporaire
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{ echo('<script> alert("Envoi non effectue"); </script>');
return false;
}
else
{
// on attribue la taille de l'image sélectionée au variable de taille
$img_taille = $_FILES['fic']['size'];
// on compare la taille de l'image avec la taille qu'on a préciser comme un maximum
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
else{echo('<script> alert(" 1 image enregistree \n Envoi bien effectue "); </script>');}
// attribution des valeurs récupéré aux variables après la validation de l'image
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
// l'appel de la page connexion.php pour se connecter à la base de données
include ("connexion.php");
// le fichier est stocké physiquement dans un répertoire temporaire du serveur.
// "file_get_contents" c'est pour récupérer le contenu binaire
$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
$req = "INSERT INTO
images (img_nom, img_taille, img_type, img_blob)
VALUES ('$img_nom' , '$img_taille' , '$img_type' , '".addslashes ($img_blob)."') ";
$ret = mysql_query ($req) or die (mysql_error ());
return true;
}
}
?>
- la page de connexion à la base : connexion.php
<?php
$hote = 'localhost';
$base = 'img';
$user = 'root';
$pass = '';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
?>
- la base de données img :
créer la base img et éxecuter la requête suivante pour créer la table :
CREATE TABLE 'images' (
'img_id' INT NOT NULL AUTO_INCREMENT ,
'img_nom' VARCHAR( 50 ) NOT NULL ,
'img_taille' VARCHAR( 25 ) NOT NULL ,
'img_type' VARCHAR( 25 ) NOT NULL ,
'img_blob' LONGBLOB NOT NULL ,
PRIMARY KEY ( 'img_id' )
)
et voilà pour ceux qui cherche à ajouter des photos en binaire dans la BDD...
galaxico
Messages postés
4
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
7 juillet 2011
6 juil. 2011 à 18:18
6 juil. 2011 à 18:18
voilà j'ai trouvé comment ajouter l'URL de la photo dans la base de données et l'image dans un dossier du racine du site et c'est beaucoup plus pratique que le stockage en binaire...je partage
--------------------------------
la page index.html
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<form method="post" action="envoi_image.php" enctype="multipart/form-data">
<label FOR="icone"></label>
<input type="file" name="icone" id="icone" /><br />
<input type="submit" name="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
----------------------------------
la page envoi_image.php
<?php
// création des variables
$dossier = 'Images/'; // dossier de destination qui va contenir les photos
$maxsize = '1048576'; // la taille max
$maxwidth = '2000'; // la largeur max
$maxheight = '2000'; // la hauteur max
IF ($_FILES['icone']['error'] > 0)
{
$erreur = 'Erreur lors du transfert';
}
else
{
IF ($_FILES['icone']['size'] > $maxsize)
{
$erreur = 'Le fichier est trop gros';
}
else
{
$extensions_valides = array('jpg','jpeg','gif','png');
$extension_upload = strtolower( substr( strrchr($_FILES['icone']['name'], '.'),1));
IF (in_array($extension_upload,$extensions_valides))
{
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
IF (!$image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
{
$erreur = 'Image trop grande';
}
else
{
$nom = "{$_FILES['icone']['name']}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);
$images = $dossier.$nom;
IF ($resultat)
{
echo 'Transfert reussi';
include ("connexion.php");
$image = $images;
mysql_query("INSERT INTO img VALUES('', '" . $image . "')");
}
else
{
echo 'Echec du transfert';
}
}
}
else
{
echo 'Extension incorrect';
}
}
}
?>
-------------------------------------------------
la page connexion.php
<?php
$hote = 'localhost';
$base = 'image';
$user = 'root';
$pass = '';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
?>
----------------------------------------------------
la base de données : image
table : img avec deux champs
champ 1 : id - smallint(3) - UNSIGNED ZEROFILL - Auto_increment
champ 2 : image - varchar(50)
--------------------------------
la page index.html
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<form method="post" action="envoi_image.php" enctype="multipart/form-data">
<label FOR="icone"></label>
<input type="file" name="icone" id="icone" /><br />
<input type="submit" name="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
----------------------------------
la page envoi_image.php
<?php
// création des variables
$dossier = 'Images/'; // dossier de destination qui va contenir les photos
$maxsize = '1048576'; // la taille max
$maxwidth = '2000'; // la largeur max
$maxheight = '2000'; // la hauteur max
IF ($_FILES['icone']['error'] > 0)
{
$erreur = 'Erreur lors du transfert';
}
else
{
IF ($_FILES['icone']['size'] > $maxsize)
{
$erreur = 'Le fichier est trop gros';
}
else
{
$extensions_valides = array('jpg','jpeg','gif','png');
$extension_upload = strtolower( substr( strrchr($_FILES['icone']['name'], '.'),1));
IF (in_array($extension_upload,$extensions_valides))
{
$image_sizes = getimagesize($_FILES['icone']['tmp_name']);
IF (!$image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
{
$erreur = 'Image trop grande';
}
else
{
$nom = "{$_FILES['icone']['name']}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);
$images = $dossier.$nom;
IF ($resultat)
{
echo 'Transfert reussi';
include ("connexion.php");
$image = $images;
mysql_query("INSERT INTO img VALUES('', '" . $image . "')");
}
else
{
echo 'Echec du transfert';
}
}
}
else
{
echo 'Extension incorrect';
}
}
}
?>
-------------------------------------------------
la page connexion.php
<?php
$hote = 'localhost';
$base = 'image';
$user = 'root';
$pass = '';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
?>
----------------------------------------------------
la base de données : image
table : img avec deux champs
champ 1 : id - smallint(3) - UNSIGNED ZEROFILL - Auto_increment
champ 2 : image - varchar(50)