par
eternalsufferin » 06 sept. 2011, 11:36
Bonjour,
j'ai un petit formulaire dans lequel on peut envoyer un titre et une image. Seulement, mon code fait que le contenu du champs de l'image est envoyé comme un simple texte et n'est donc pas stockée dans une super globale $_FILE. Du coup, elle n'arrive pas sur le serveur ftp.
J'aimerai juste que lorsqu'on envoi un titre et une image, ces 2 variables sont stockées dans une base de données, que l'image se retrouve sur mon serveur ftp et qu'il soit renvoyé dans la page du formulaire, grâce à ajax, un petit texte du genre : Image envoyée avec succès. (je ne veux pas afficher l'image dans le formulaire).
Voici mon code :
Page du formulaire :
<script type="text/javascript" src="../SCRIPTS/js/oXHR.js"></script>
<script type="text/javascript">
<!--
function request(callback) {
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
}
};
var nom = encodeURIComponent(document.getElementById("nom").value);
var categorie = encodeURIComponent(document.getElementById("categorie").value);
xhr.open("POST", "envois/insertCategorie.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("nom="+nom+"&categorie="+categorie);
}
function readData(sData) {
document.getElementById("resultat").innerHTML = sData;
}
//-->
</script>
<fieldset>
<legend>Ajouter une catégorie</legend>
<form action="envois/insertCategorie.php" method="post" name="standard_use" id="standard_use" enctype="multipart/form-data">
<p>
<label>Nom : </label>
<input type="text" id="nom" style="width:283px;"/>
</p>
<p>
<label>Image : </label>
<input type="file" id="categorie" />
</p>
<input type="button" onclick="request(readData);" value="Ajouter la catégorie" />
</form>
</fieldset>
<div id="resultat"></div>
Page insertCategorie.php :
<?php
//on verifie que les 2 variables ne sont pas nulles
$nom = (isset($_POST["nom"])) ? $_POST["nom"] : NULL;
$categorie = (isset($_POST["categorie"])) ? $_POST["categorie"] : NULL;
if ($nom && $categorie) {
include('../../SCRIPTS/connect.php');
$dossier = '../../IMAGES/Categories/';
$fichier = basename($_FILES['categorie']['name']);
$taille_maxi = 100000000;
$taille = filesize($_FILES['categorie']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['categorie']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)){ //Si l'extension n'est pas dans le tableau
$erreur = 'Seuls les fichiers de type png, gif, jpg et jpeg sont acceptés';
}
if($taille>$taille_maxi){
$erreur = 'Fichier trop volumineux';
}
if(!isset($erreur)){ //S'il n'y a pas d'erreur, on upload
$fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['categorie']['tmp_name'], $dossier . $fichier)){
echo 'Chargement effectué avec succès !';
$sqlCompteNbCat = 'select * from CATEGORIE';
$result= mysql_query($sqlCompteNbCat);
$emplacement = mysql_num_rows($result);
//insertion dans la bdd
$sqlInsertCat = 'insert into CATEGORIE values ("","'.$nom.'","'.$emplacement.'","'.$fichier.'")';
mysql_query ($sqlInsertCat) or die ('Erreur SQL !'.$sqlInsertCat.'<br />'.mysql_error());
} else { //Sinon (la fonction renvoie FALSE).
echo 'Echec de la creation';
}
} else {
echo $erreur;
}
} else {
echo "Il faut remplir les 2 champs.";
}
?>
Actuellement, ce script me renvoie, dans la balise "resultat" : Seuls les fichiers de type png, gif, jpg et jpeg sont acceptés
Aidez moi s'il vous plait

Bonjour,
j'ai un petit formulaire dans lequel on peut envoyer un titre et une image. Seulement, mon code fait que le contenu du champs de l'image est envoyé comme un simple texte et n'est donc pas stockée dans une super globale $_FILE. Du coup, elle n'arrive pas sur le serveur ftp.
J'aimerai juste que lorsqu'on envoi un titre et une image, ces 2 variables sont stockées dans une base de données, que l'image se retrouve sur mon serveur ftp et qu'il soit renvoyé dans la page du formulaire, grâce à ajax, un petit texte du genre : Image envoyée avec succès. (je ne veux pas afficher l'image dans le formulaire).
Voici mon code :
Page du formulaire :
[html]<script type="text/javascript" src="../SCRIPTS/js/oXHR.js"></script>
<script type="text/javascript">
<!--
function request(callback) {
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
}
};
var nom = encodeURIComponent(document.getElementById("nom").value);
var categorie = encodeURIComponent(document.getElementById("categorie").value);
xhr.open("POST", "envois/insertCategorie.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("nom="+nom+"&categorie="+categorie);
}
function readData(sData) {
document.getElementById("resultat").innerHTML = sData;
}
//-->
</script>
<fieldset>
<legend>Ajouter une catégorie</legend>
<form action="envois/insertCategorie.php" method="post" name="standard_use" id="standard_use" enctype="multipart/form-data">
<p>
<label>Nom : </label>
<input type="text" id="nom" style="width:283px;"/>
</p>
<p>
<label>Image : </label>
<input type="file" id="categorie" />
</p>
<input type="button" onclick="request(readData);" value="Ajouter la catégorie" />
</form>
</fieldset>
<div id="resultat"></div>[/html]
Page insertCategorie.php :
[php]<?php
//on verifie que les 2 variables ne sont pas nulles
$nom = (isset($_POST["nom"])) ? $_POST["nom"] : NULL;
$categorie = (isset($_POST["categorie"])) ? $_POST["categorie"] : NULL;
if ($nom && $categorie) {
include('../../SCRIPTS/connect.php');
$dossier = '../../IMAGES/Categories/';
$fichier = basename($_FILES['categorie']['name']);
$taille_maxi = 100000000;
$taille = filesize($_FILES['categorie']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['categorie']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)){ //Si l'extension n'est pas dans le tableau
$erreur = 'Seuls les fichiers de type png, gif, jpg et jpeg sont acceptés';
}
if($taille>$taille_maxi){
$erreur = 'Fichier trop volumineux';
}
if(!isset($erreur)){ //S'il n'y a pas d'erreur, on upload
$fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['categorie']['tmp_name'], $dossier . $fichier)){
echo 'Chargement effectué avec succès !';
$sqlCompteNbCat = 'select * from CATEGORIE';
$result= mysql_query($sqlCompteNbCat);
$emplacement = mysql_num_rows($result);
//insertion dans la bdd
$sqlInsertCat = 'insert into CATEGORIE values ("","'.$nom.'","'.$emplacement.'","'.$fichier.'")';
mysql_query ($sqlInsertCat) or die ('Erreur SQL !'.$sqlInsertCat.'<br />'.mysql_error());
} else { //Sinon (la fonction renvoie FALSE).
echo 'Echec de la creation';
}
} else {
echo $erreur;
}
} else {
echo "Il faut remplir les 2 champs.";
}
?>[/php]
Actuellement, ce script me renvoie, dans la balise "resultat" : Seuls les fichiers de type png, gif, jpg et jpeg sont acceptés
Aidez moi s'il vous plait :priere: