Aller au contenu

Probléme miniaturisation images et upload


spidercrash

Sujets conseillés

Bonjour a tous,

Donc j'ai essayer de faire pour tester un form tout simple avec création de miniature dans un dossier nommé mini et de mettre l'image taille réelle dans une dossier pics.

Car pour mon site le but et que la personne up une photo celle ci taille reelle se place dans le dossier pics et la miniature se génére et se place dans le dossier mini

Le problème cela me donne rien du tout même pas de message d'erreur rien et l'image se place pas dans les dossiers désirez pas d'upload je vois pas se qui peut bloquer.

Voici le fichier de transfert.

<form id="ok" method="post" action="photo.php"enctype="multipart/form-data">
<label for="icone">Photo:</label><br />
<input type="file" name="monimage" />
<input type="submit" name="go" value="envoyer" />

</form>

et voici le fichier qui traite l'information


<?php
$dir = '../pics';
$dir_mini = '../mini';
$ratio = 150;

if (isset($_POST['go'])) {

if (empty($_FILES['mon_image']['tmp_name'])) {

$erreur = 'Aucun fichier envoyé.';
}
else {

$tableau = _AT_getimagesize($_FILES['mon_image']['tmp_name']);
if ($tableau == FALSE) {

unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre fichier n\'est pas une image.';
}
else {

if ($tableau[2] == 2) {

if (is_file('../pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
else $file_upload = $_FILES['mon_image']['name'];


copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);

if ($tableau[2] == 2) {

$src = imagecreatefromjpeg($dir.'/'.$file_upload);

if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}

imagejpeg ($im, $dir_mini.'/'.$file_upload);
}


header('location: index.php');
exit();
}
else {

unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre image est d\'un format non supporté.';
}
}
}
}
?>

Merci de votre aide car je but depuis une momen dessus

Lien vers le commentaire
Partager sur d’autres sites

Première chose à faire: print getcwd() qui te dira quel est le répertoire courant, et te dira si tes chemins relatifs "../pics" et "../mini" sont corrects.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Et tes dossiers "pics" et "mini" sont où?

Et il sort d'où ton $real?

Je suppose aussi que l'utilisateur sous lequel le script tourne a le droit d'écrire dans ces répertoires?

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Et tes dossiers "pics" et "mini" sont où?

Et il sort d'où ton $real?

Je suppose aussi que l'utilisateur sous lequel le script tourne a le droit d'écrire dans ces répertoires?

Jacques.

Les dossier pics et mini se situe dans le dossier galerietest les dossier sont en autorisation total

Oui dsl a force de faire des test voici real

print getcwd()


$real = (substr($_SERVER['DOCUMENT_ROOT'],-1) == '/')? $_SERVER['DOCUMENT_ROOT'] : $_SERVER['DOCUMENT_ROOT'].'/' ;

//Et si tu veux poster ton image dans un dossier nommé 'pics' situé à la racine de ton site ce sera donc

$dir = $real.'pics';
$dir_mini = $real.'mini';

$ratio = 150;

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

Moi je mettrais $dir = "pics" ou $dir = "/homez.316/ldq/www/galerietest/pics".

Là ton "real" comme les ../ précédents considèrent que pics et mini sont dans www.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

j'ai fait se que tu m'a dit cela ne change rien :wacko: toujours aucun resultat lorsque je valide il me renvoie le chemin via print getcwd();

mais a aucun moment il upload

Voici le code modifié


<?php

print getcwd();

$dir = "pics";
$dir_mini = "mini";

$ratio = 150;

if (isset($_POST['go'])) {

if (empty($_FILES['mon_image']['tmp_name'])) {

$erreur = 'Aucun fichier envoyé.';
}
else {

$tableau = _AT_getimagesize($_FILES['mon_image']['tmp_name']);
if ($tableau == FALSE) {

unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre fichier n\'est pas une image.';
}
else {

if ($tableau[2] == 2) {

if (is_file('.pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
else $file_upload = $_FILES['mon_image']['name'];


copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);

if ($tableau[2] == 2) {

$src = imagecreatefromjpeg($dir.'/'.$file_upload);

if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}

imagejpeg ($im, $dir_mini.'/'.$file_upload);
}


header('location: index.php');
exit();
}
else {

unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre image est d\'un format non supporté.';
}
}
}
}
?>

En tout cas merci de ton aide si précieuse ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si Jcaron te propose d'afficher le répertoire courant, c'est aussi pour que tu l'utilises dans ton script. En effet, j'ai pris l'habitude avec les années de toujours passer en adressage absolu (vue serveur) pour l'upload d'images, parce que ça a des tendances à ne pas marcher toujours comme on veut.

Les dossiers dans lesquel tu dois envoyer tes images sont donc, dans ce cas :

$dir = getcwd()."/pics";
$dir_mini = getcwd()."/mini";

Avant de te lancer dans des choses compliquées, avec création de la miniature, bla, et bla, essaye juste de faire un formulaire qui envoie une image, point. C'est un premier pas, pour tester les adresses d'envoi, les noms, les choses de ce genre. Ensuite, complexifie ton programme en rajoutant la miniature, mais ne grille pas les étapes !

Il existe également des classes PHP très bien foutues pour gérer les images, avec création de miniature et autres. J'en ai utilisé une récemment, et complètement adoptée !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si Jcaron te propose d'afficher le répertoire courant, c'est aussi pour que tu l'utilises dans ton script. En effet, j'ai pris l'habitude avec les années de toujours passer en adressage absolu (vue serveur) pour l'upload d'images, parce que ça a des tendances à ne pas marcher toujours comme on veut.

Les dossiers dans lesquel tu dois envoyer tes images sont donc, dans ce cas :

$dir = getcwd()."/pics";
$dir_mini = getcwd()."/mini";

Avant de te lancer dans des choses compliquées, avec création de la miniature, bla, et bla, essaye juste de faire un formulaire qui envoie une image, point. C'est un premier pas, pour tester les adresses d'envoi, les noms, les choses de ce genre. Ensuite, complexifie ton programme en rajoutant la miniature, mais ne grille pas les étapes !

Il existe également des classes PHP très bien foutues pour gérer les images, avec création de miniature et autres. J'en ai utilisé une récemment, et complètement adoptée !

Merci pour ton conseil, j'ai tester se que t m'a dit en faisant

<?php

print getcwd();

$dir = getcwd()."/pics";
$dir_mini = getcwd()."/mini";

$ratio = 150;

Et cela ne m'affiche toujours que /homez.316/ldq/www/galerietest

Justement j'ai essayer plein de possibilité ( BLob , miniature a la volée..)

mais tous comment problème trop long.

Donc c'est pour cela que je me suis lancer la dessus pourtant le script je le trouve trés simple

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

Pas la peine de citer le message précédent, on vient de le lire ;)

Conseil méthode : quand un programme ne fait pas ce que tu attends de lui, amuse-toi à mettre des "echo 'étape X';" à plusieurs endroits de ton programme, avec X le numéro, pour voir où il passe, où il ne passe pas, pourquoi il y passe, etc. Il y a pas mal de débogage à faire...

Là par exemple, je devine déjà le chemin qu'il prend :


<input type="file" name="monimage" />

 if (empty($_FILES['mon_image']['tmp_name']))

Entre monimage, et mon_image, la différence est de taille. D'ailleurs, si tu ajoutes un "echo $erreur" à la fin de ton programme, tu devrais voir un peu... :)

Lien vers le commentaire
Partager sur d’autres sites

Ben quand ça marche pas, il n'y a qu'un seule chose à faire: débugger :-) La méthode la plus simple, c'est de rajouter des traces, par exemple un print "trace 1" et ainsi de suite, dans les différentes parties du code. Ca te permettra de savoir où tu passes, et donc de cerner l'endroit où ça ne marche pas comme tu voudrais. Ensuite tu vas pouvoir vérifier les valeurs qui sont traitées/testées et/ou les valeurs de retour de certaines fonctions.

Ajoute aussi un print_r($_POST), et pareil pour $_FILES, ça te permet de voir ce que ton script reçoit.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

j'ai placé une echo a la fin de la page et là j'obtient une erreur

Warning: Cannot modify header information - headers already sent by (output started at /homez.316/logisdesq/www/galerietest/photo.php:3) in /homez.316/logisdesq/www/galerietest/photo.php on line 53

Ah ben il y a de l'évolution les images se mettre bien dans mini et pics.

sa marche niquel a part le message d'erreur :)

Je pence que c'était bien dut a mes_images et mesimages

par contre dans n'importe quel endroit de mon code je peut mettre un print(trace1), puis print(trace2).

... ou cela doit etre mit aprés les }

Car je viens d'essayer cela

if (isset($_POST['go'])) {

if (empty($_FILES['mon_image']['tmp_name'])) {

$erreur = 'Aucun fichier envoyé.';
}
[b]print("trace1");[/b]
else {

$tableau = _AT_getimagesize($_FILES['mon_image']['tmp_name']);
if ($tableau == FALSE) {

unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre fichier n\'est pas une image.';
}

mais cela me met une erreur ( Parse error: syntax error, unexpected T_ELSE in /homez.316/logisdesq/www/galerietest/photo.php on line 17)

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

Le message d'erreur, c'est normal, il disparaîtra quand tu auras viré tous les echo et print de ton programme.

Pour les images, c'est logique que ça vienne de ce que je t'ai signalé dans le message précédent... C'est comme si tu disais à quelqu'un de t'appeler sur ton fixe alors que tu n'étais pas chez toi. Les programmes sont bêtes, ils font ce que tu leur dis ;)

Pour le déboguage, tu vois, Jcaron et moi-même t'avons proposé la même chose, au même moment, c'est sûrement qu'il y a une part de vrai. Afficher des informations, c'est permettre de savoir comment réagit le programme et par où il passe. Tu peux les mettre partout où tu veux, et si il en manque un à l'affichage, tu sauras que ton programme n'est pas passé par là.

Lien vers le commentaire
Partager sur d’autres sites

En tout cas je vous remercie énormément, de plus maintenant je vais placer des petites traces a chaque fois que je code :smartass:

C'est vrai j'ai jamais pensé a cela mais très utile.

Je vais peaufiné le code et rajouter des fonctions ajout du liens de l'image dans une tables et gestion des nom en double.

Si j'ai un problème je re-posterai dans le même post en tout cas merci de votre aide 0

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

Donc j'ai avancer j'ai agrandi mon formulaire puis les enregistrements dans ma tables voici se que sa donne

Page Index :


<?php

echo("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");

/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */

$serveur = "zzzz";

$admin = "zzzz";

$mdp = "zzzz";

$base = "zzzz";

/* On récupère si elle existe la valeur de la région envoyée par le formulaire */

$idr = isset($_POST['region'])?$_POST['region']:null;

?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>petite annonce gratuite pour particulier encart publicitaire pour profesionnel - mon espace</title>
<meta http-equiv="Content-Type" content="text/html";
charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css"
title="Design espace" href="css/ajoutannonce_style.css" />
</head>
<body>

<div id="annonce"></div>


<div id="entete">

</div>

<div id="corps">

<img src="contenu/logisdesannonces.png" alt="logisdesannonces" class="logisdesannonces" />
<img src="contenu/logo.png" alt="logo" class="logo" />
<div id="bouton">
<a href="divers.html"><img src="contenu/divers.png" alt="divers" class="divers" border="0"/></a>
<a href="vehicule.html"><img src="contenu/vehicule.png" alt="vehicule" class="vehicule" border="0"/></a>
<a href="hightech.html"><img src="contenu/high-tech.png" alt="hightech" class="hightech" border="0"/></a>
<a href="immobilier.html"><img src="contenu/immobilier.png" alt="immobilier" class="immobilier" border="0"/></a>
<a href="animaux.html"><img src="contenu/animaux.png" alt="animaux" class="animaux" border="0"/></a>
<a href="espacepro.html"><img src="contenu/boutonpro.png" alt="bouton" class="bouton" border="0"/></a>
</div>
<a href="http://www.logisdesannonces.fr/accueil.html"><img src="contenu/bouton_accueil.png" alt="accueil" class="accueil" border="0"/></a>

</div>
<div id="formulaire">
Votre region :<br />
<?php

/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()

* car on aura besoin de la connexion un peu plus loin dans le script */

$connexion = mysql_pconnect($serveur, $admin, $mdp);

if($connexion != false)

{

$choixbase = mysql_select_db($base, $connexion);

$sql1 = "SELECT `id_region`, `region`".

" FROM `region`".

" ORDER BY `id_region`";

$rech_regions = mysql_query($sql1);

$code_region = array();

$region = array();

/* On active un compteur pour les régions */

$nb_regions = 0;

if($rech_regions != false)

{

while($ligne = mysql_fetch_assoc($rech_regions))

{

array_push($code_region, $ligne['id_region']);

array_push($region, $ligne['region']);



/* On incrémente de compteur */

$nb_regions++;

}

}

?>

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<select name="region" id="region" onchange="document.forms['chgdept'].submit();">


<option value="-1">- - - Choisissez une région - - -</option>

<?php

for($i = 0; $i < $nb_regions; $i++)

{

?>

<option value="<?php echo($code_region[$i]); ?>"<?php echo((isset($idr) && $idr == $code_region[$i])?" selected=\"selected\"":null); ?>><?php echo($region[$i]); ?></option>

<?php

}

?>

</select>


</form>
<br />
<form id="ok" method="post" action="php/validationannonce.php"enctype="multipart/form-data">

<?php

mysql_free_result($rech_regions);

/* On commence par vérifier si on a envoyé un numéro de région et le cas échéant s'il est différent de -1 */



if(isset($idr) && $idr != -1)

{

/* Cération de la requête pour avoir les départements de cette région */

$sql2 = "SELECT `id_departement`, `departement`".

" FROM `departement`".

" WHERE `id_region` = ". $idr ."".

" ORDER BY `id_departement`;";

if($connexion != false)

{

$rech_dept = mysql_query($sql2, $connexion);

/* Un petit compteur pour les départements */

$nd = 0;

/* On crée deux tableaux pour les numéros et les noms des départements */

$code_dept = array();

$nom_dept = array();

/* On va mettre les numéros et noms des départements dans les deux tableaux */

while($ligne_dept = mysql_fetch_assoc($rech_dept))

{

array_push($code_dept, $ligne_dept['id_departement']);

array_push($nom_dept, $ligne_dept['departement']);

$nd++;

}

/* Maintenant on peut construire la liste déroulante */

?>


Votre departement :<br />
<select name="departement" id="departement">

<?php

for($d = 0; $d<$nd; $d++)

{

?>

<option value="<?php echo($code_dept[$d].'-'.$nom_dept[$d]); ?>"<?php echo((isset($dept_selectionne) && $dept_selectionne == $code_dept[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_dept[$d]." (". $code_dept[$d] .")"); ?></option>



<?php

}

?>

</select>

<?php

}

/* Un petit coup de balai */

mysql_free_result($rech_dept);

}

?>
<br />

<label for="NOMUTILISATEURS">Nom:</label><br />
<input type="text" name="NOMUTILISATEURS" id="NOMUTILISATEURS" size="20" /><br />
<label for="MAILUTILISATEURS">Email:</label><br />
<input type="text" name="MAILUTILISATEURS" id="MAILUTILISATEURS" size="20" /><br />
<label for="MDP">Mot de passe:</label><br />
<input type="password" name="MDP" id="MDP" size="20" /><br />
<label for="MDPBIS">Retapez votre mot de passe:</label><br />
<input type="password" name="MDPBIS" id="MDPBIS" size="20" /><br />
<label for="TELEPHONE">Téléphone:</label><br />
<input type="text" name="TELEPHONE" id="TELEPHONE" size="20" /><br />
<span>Vous n'étes pas obliger de le mentionner.</span><br /><br />

<label for="typeannonce">Type d'annonce:</label><br />
<label>
<input type="radio" name="typeannonce" value="vends" />Je vends
</label>
<label>
<input type="radio" name="typeannonce" value="donne" />Je donne
</label>
<label>
<input type="radio" name="typeannonce" value="troc" />Je troc
</label>
<br /><br />

<label for="categorie">Sélectionner une catégorie:</label><br />
<select name="categorie" id="categorie">
<option value="0">Votre catégorie</option>
<option value="divers">Divers</option>
<option value="vehicules">Véhicules</option>
<option value="immobilier">Immobilier</option>
<option value="high-tech">High-Tech</option>
<option value="animaux">Animaux</option>
</select>

<br /><br />
<label for="souscategorie">Sélectionner un sous catégorie:</label><br />
<select name="souscategorie" id="souscategorie">
<optgroup label="DIVERS">
<option value="select">Votre sous-catégorie</option>
<option value="antiquite-art">Antiquité-Art</option>
<option value="bricolage-jardin-chauffage">Bricolage-Jardin-Chauffage</option>
<option value="meuble-decoration">Meuble-Décoration</option>
<option value="vetements">Vêtements</option>
<option value="puericulture">Puériculture</option>
<option value="livres">Livres</option>
<option value="loisir">Loisir</option>
<option value="collections">Collections</option>
<option value="musique">Musique</option>
<option value="jeux-jouets">Jeux-Jouets</option>
<option value="sport">Sport</option>
</optgroup>
<optgroup label="VEHICULES">
<option value="voiture">Voiture</option>
<option value="moto-scooter">Moto-Scooter</option>
<option value="camping-car">Camping car</option>
<option value="caravane">Caravane</option>
<option value="utilitaire">Utilitaire</option>
<option value="bateau-nautisme">Bateau-Nautisme</option>
<option value="pieces-accessoire auto">Piéces-Accessoire auto</option>
<option value="pieces-accessoire moto">Piéces-Acessoire moto</option>
<option value="pieces-accessoire nautisme">Piéces-Accessoire nautisme</option>
<option value="pieces-accessoire camping car">Piéces-Accessoire camping car</option>
</optgroup>
<optgroup label="IMMOBILIER">
<option value="location">Location</option>
<option value="location saisonniere">Location saisonnère</option>
<option value="vente maison">Vente Maison</option>
<option value="vente appartement">Vente appartement</option>
<option value="vente propriete">Vente propriété</option>
<option value="vente hotel particulier">Vente hotel particulier</option>
<option value="vente garage">Vente garage</option>
<option value="immeuble">Immeuble</option>
<option value="vente constructeur">Vente constructeur</option>
<option value="investisseur">Investisseur</option>
<option value="renovation">Rénovation</option>
<option value="etang">Etang</option>
<option value="corps de ferme">Corps de ferme</option>
</optgroup>
<optgroup label="HIGH-TECH">
<option value="hifi-photo-video">Hifi-Photo-Video</option>
<option value="informatique">Informatique</option>
<option value="jeux video">Jeux video</option>
<option value="musique-film">Musique-Film</option>
<option value="telephonie">Téléphonie</option>
<option value="autre">Autre</option>
</optgroup>
<optgroup label="ANIMAUX">
<option value="achat-vente">Achat-Vente</option>
<option value="adoption-don">Adoption-Don</option>
<option value="services">Services</option>
<option value="accessoires">Accessoires</option>
</optgroup>
</select>
<br />
<label for="titreannonce">Titre de l'annonce:</label><br />
<input type="titreannonce" name="titreannonce" id="titreannonce" size="20" /><br />
<span>Décriver précisement en quelques mots le titre de votre annonces</span><br /><br />
<label for="descriptionannonce">Description de l'annonce :</label><br />
<textarea name="descriptionannonce" id="descriptionannonce" rows="5" cols="30"></textarea><br />
<label for="prix">Prix:</label><br />
<input type="prix" name="prix" id="prix" size="10" /><br />
<label for="icone">Photo de l'annonce:</label><br />
<input type="file" name="mon_image"id="icone" />

<?php

echo '<input type="hidden" name="region" id="region" value="'.$region[$idr - 1].'"/>';

?>



<input type="submit" name="ok" id="ok" value="envoyer" />

</form>





<?php

/* Terminé, on ferme la connexion */

mysql_close($connexion);

}

else

{

/* Si on arrive là, c'est pas bon signe, il faut vérifier les

* paramètres de connexion, mot de passe, serveur pas démarré etc... */


}

?>
<br /><br /><br /><br /><br /><br />




</div>
<div id="fondlogin">

</div>
<div id="login">VOUS ÊTES INSCRIT ?

<div id="formlogin">
Espace résérvé au particulier<br />
</div>
<div id="form">
<form method="post" action="../php/loginpart.php">

<label for="MAILUTILISATEURS">Email:</label><br />
<input type="text" name="MAILUTILISATEURS" id="MAILUTILISATEURS" size="20" /><br />
<label for="MDP">Mot de passe:</label><br />
<input type="password" name="MDP" id="MDP" size="20" /><br /><br />
<input type="submit" value="Valider" />
</form>
</div>
<div id="mpsoublie">
<a href="renouvellementmps.html""style=color:white;">Mot de passe oublié ?</a>
</div>

</div>
<div id="pied_de_page">
<div id="boutonbas">
<a href="information.html"><img src="contenu/information.png" alt="information" class="information" border="0"/></a>
<a href="contact.html"><img src="contenu/contact.png" alt="contact" class="contact" border="0"/></a>
<a href="newsletters.html"><img src="contenu/newsletters.png" alt="newsletters" class="newsletters" border="0"/></a>
<a href="offre.html"><img src="contenu/offre.png" alt="offre" class="offre" border="0"/></a>
<a href="aide.html"><img src="contenu/aide.png" alt="aide" class="aide" border="0"/></a>

</div>
</div>

</body>

</html>

Et voici ma page de traitement

a savoir que lorsque l'on enregistre le formulaire il y a des donnée qui parte dans la table utilisateurs puis annonces puis image.


<?php
// Fonction pour parser les variables vers FLASH
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode($valeur);
}

if (!empty($_POST) && $_POST['MDP'] == $_POST['MDPBIS']) {

// traitement
$categorie=$_POST['categorie'];
$typeannonce=$_POST['typeannonce'];
$souscategorie=$_POST['souscategorie'];
$titreannonce=$_POST['titreannonce'];
$descriptionannonce=$_POST['descriptionannonce'];
$prix=$_POST['prix'];

$departement=$_POST['departement'];
$region=$_POST['region'];

$NOMUTILISATEURS=$_POST['NOMUTILISATEURS'];
$MAILUTILISATEURS=$_POST['MAILUTILISATEURS'];
$MDP=$_POST['MDP'];
$MDPBIS=$_POST['MDPBIS'];
$TELEPHONE=$_POST['TELEPHONE'];


//ici on commence avec les requêtes MySQL pour vérifier dans la table

include ('connect.php');//ici on inclut le fichier avec l'accès MySQL.
$crypt=md5($MDP);

$sql = "SELECT * FROM utilisateurs WHERE MAILUTILISATEURS = '$MAILUTILISATEURS'";//On sélectionne dans la table "UTILISATEUR" le login qui a pour valeur la variable "$login"
$req = mysql_query($sql)or die(mysql_error());
$result = mysql_numrows($req);// on compte le nombre de résultats

if($result!=0) // le login existe déjà
{
Parse("resultat","email '$MAILUTILISATEURS' existe deja, desole"); //alors on renvoi au Flash que le login '$MAILUTILISATEURS' existe déjà
}
else //sinon le login n'existe pas
{
print getcwd();

//dossier ou seront stocket les miniature et les images
$dir = getcwd()."/pics";
$dir_mini = getcwd()."/mini";

//taille des miniature
$ratio = 150;

//recuperation du post du formulaire
if (isset($_POST['ok'])) {
// on teste si le champ permettant de soumettre un fichier est vide ou non
if (empty($_FILES['mon_image']['tmp_name'])) {

$erreur = 'Aucun fichier envoyé.';
}
else {


// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier
$tableau = _AT_getimagesize($_FILES['mon_image']['tmp_name']);
if ($tableau == FALSE) {
// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur
unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre fichier n\'est pas une image.';
}

else {

if ($tableau[2] == 2) {

if (is_file('.pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
else $file_upload = $_FILES['mon_image']['name'];

// on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille
copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);

if ($tableau[2] == 2) {
// on crée une image à partir de notre grande image à l'aide de la librairie GD
$src = imagecreatefromjpeg($dir.'/'.$file_upload);
// on teste si notre image est de type paysage ou portrait
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
// on copie notre fichier généré dans le répertoire des miniatures
imagejpeg ($im, $dir_mini.'/'.$file_upload);


}

else
{
$nom = "{$_FILES['mon_image']['name']}";
//Insertion de l'utilisateur
$sql = "INSERT INTO utilisateurs (NOMUTILISATEURS,MAILUTILISATEURS,MDP,TELEPHONE) VALUES ('$NOMUTILISATEURS','$MAILUTILISATEURS','$crypt','$TELEPHONE')"; //Alors on insert dans la table le nouvel utilisateur
mysql_query ($sql);

$NUMUTILISATEURS=mysql_insert_id();
//Insertion de l'annonce
$sql2 = "INSERT INTO annonces (categorie,typeannonce,souscategorie,titreannonce,descriptionannonce,prix,date,departement,region,NUMUTILISATEURS) VALUES ('$categorie','$typeannonce','$souscategorie','$titreannonce','$descriptionannonce','$prix','".date("Y-m-d H:i:s")."','$departement','$region','$NUMUTILISATEURS')";
$req = mysql_query($sql2)or die(mysql_error());


$image = $dir.$nom;
$miniature = $dir_mini.$nom;
$numannonce=mysql_insert_id();
//Insertion du chemin des images
mysql_query("INSERT INTO images VALUES('','" . $image. "', '" . $miniature . "', '" . $numannonce . "')");

Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");

}
}
else {
// si notre image n'est pas de type jpeg
unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre image est d\'un format non supporté.';
}
}
}
}
}
}
elseif (!empty($_POST))
{
echo 'Le Mot de passe est different du premier.';
}
?>

L'image s'enregistre mais mes tables ne s'allimente plus :unsure:

Le controle du doublons d'utilisateur marche

et le controle saisie mot de passe marche aussi

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

Est-ce-que tu as essayé d'appliquer la méthode qu'on t'a donné précédemment pour essayer de trouver le problème par toi-même? Je ne crois pas. Si c'était le cas, tu aurais trouvé que l'insertion n'est jamais exécutée, et c'est normal, puisque en gros, tu fais:


si (image est jpeg)
{
si (image est jpeg)
{
convertir image
}
sinon
{
inserer en base
}
}

Au passage, quand tu fais du copier-coller, pense à "ré-indenter" le code, pour qu'il soit correctement aligné par rapport à la structure (fonctions, if, etc.). Les {} qui vont ensemble doivent être au même niveau, et au même niveau que le if, else, etc. correspondant. Ca aide énormément la lecture. N'importe quel éditeur décent permet de modifier ça d'un coup sec pour un bloc entier (sous Windows, souvent en tapant "tab" ou "shift-tab" pendant que le bloc est sélectionné).

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

bon j'ai reprit a zéro lorsque cela marché le transfert.

je viens d'essayer cela

donc j'ai fait cela


include ('connect.php');
$nom = "{$_FILES['mon_image']['name']}";
$image = $dir.$nom;
$miniature = $dir_mini.$nom;
$sql = "INSERT INTO images (image,miniature) VALUES ('$image','$miniature')";
$req = mysql_query($sql)or die(mysql_error());

}

mais dans ma base le liens passe bien mais cela mais exemple

/homez.316/aaa/www/galerietest/picsIMG_0015

alors que sa devrait mettre

/homez.316/aaa/www/galerietest/pics/IMG_0015

j'ai fait cela

$nom = "/{$_FILES['mon_image']['name']}";

et sa marche

donc je viens de finir tout mon code et c'est bon, j'ai fait étape par étape et j'ai trouvé mes problème voici le code total, je ne c'est pas si il y a mieu a faire


<?php
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode($valeur);
}

if (!empty($_POST) && $_POST['MDP'] == $_POST['MDPBIS']) {

// traitement
$categorie=$_POST['categorie'];
$typeannonce=$_POST['typeannonce'];
$souscategorie=$_POST['souscategorie'];
$titreannonce=$_POST['titreannonce'];
$descriptionannonce=$_POST['descriptionannonce'];
$prix=$_POST['prix'];
$departement=$_POST['departement'];
$region=$_POST['region'];
$NOMUTILISATEURS=$_POST['NOMUTILISATEURS'];
$MAILUTILISATEURS=$_POST['MAILUTILISATEURS'];
$MDP=$_POST['MDP'];
$MDPBIS=$_POST['MDPBIS'];
$TELEPHONE=$_POST['TELEPHONE'];

include ('connect.php');
$crypt=md5($MDP);

//On sélectionne dans la table "UTILISATEUR" le login qui a pour valeur la variable "$login"
$sql = "SELECT * FROM utilisateurs WHERE MAILUTILISATEURS = '$MAILUTILISATEURS'";
$req = mysql_query($sql)or die(mysql_error());
// on compte le nombre de résultats
$result = mysql_numrows($req);
// le login existe déjà
if($result!=0)
{
Parse("resultat","email '$MAILUTILISATEURS' existe deja, desole"); //alors on renvoi au Flash que le login '$MAILUTILISATEURS' existe déjà
}
else //sinon le login n'existe pas
{



//dossier ou seront stocket les miniature et les images
$dir = getcwd()."/pics";
$dir_mini = getcwd()."/mini";

//taille des miniature
$ratio = 150;

//recuperation du post du formulaire
if (isset($_POST['ok'])) {
// on teste si le champ permettant de soumettre un fichier est vide ou non
if (empty($_FILES['mon_image']['tmp_name'])) {

$erreur = 'Aucun fichier envoyé.';
}
else {


// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier
$tableau = _AT_getimagesize($_FILES['mon_image']['tmp_name']);
if ($tableau == FALSE) {
// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur
unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre fichier n\'est pas une image.';
}


else {



if ($tableau[2] == 2) {

if (is_file('.pics/'.$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
else $file_upload = $_FILES['mon_image']['name'];


// on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille
copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);

if ($tableau[2] == 2) {
// on crée une image à partir de notre grande image à l'aide de la librairie GD
$src = imagecreatefromjpeg($dir.'/'.$file_upload);
// on teste si notre image est de type paysage ou portrait
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
// on copie notre fichier généré dans le répertoire des miniatures
imagejpeg ($im, $dir_mini.'/'.$file_upload);


}

include ('connect.php');
$sql = "INSERT INTO utilisateurs (NOMUTILISATEURS,MAILUTILISATEURS,MDP,TELEPHONE) VALUES ('$NOMUTILISATEURS','$MAILUTILISATEURS','$crypt','$TELEPHONE')"; //Alors on insert dans la table le nouvel utilisateur
mysql_query ($sql);
$NUMUTILISATEURS=mysql_insert_id();
$sql2 = "INSERT INTO annonces (categorie,typeannonce,souscategorie,titreannonce,descriptionannonce,prix,date,departement,region,NUMUTILISATEURS) VALUES ('$categorie','$typeannonce','$souscategorie','$titreannonce','$descriptionannonce','$prix','".date("Y-m-d H:i:s")."','$departement','$region','$NUMUTILISATEURS')";
$req = mysql_query($sql2)or die(mysql_error());

$nom = "/{$_FILES['mon_image']['name']}";
$image = $dir.$nom;
$miniature = $dir_mini.$nom;
$numannonce=mysql_insert_id();
$sql3 = "INSERT INTO images (image,miniature,numannonce) VALUES ('$image','$miniature','$numannonce')";
$req = mysql_query($sql3)or die(mysql_error());


Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");



}
else {
// si notre image n'est pas de type jpeg
unlink($_FILES['mon_image']['tmp_name']);
$erreur = 'Votre image est d\'un format non supporté.';
}
}
}

}
}
}
elseif (!empty($_POST))
{
echo 'Le Mot de passe est different du premier.';
}

?>

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

par contre je souhaiterai tester les doublons si une photo porte le meme nom l'utilisateur doit changer le nom je pensé faire


if (file_exists($dir . $_FILES['mon_image']['name']))
{
echo 'Le nom de votre photo éxiste déjà merci de la renommer';
}

mais comment le placer

Deplus j'ai essayé d'afficher un de mes test avec photo mais la photo apparait pas

quand je fait un clic droit sur la photo elle pointe vers

---http://www.xxx.fr/homez.316/xxx/www/php/mini/IMG_0007.jpg---

Se qui est normal car cela est dut a getcwd()

sachant que je fait appelle a cette image via

<img src="<?php echo  $data['miniature']?>"/> 

voyez vous de quoid je parle ?

Modifié par spidercrash
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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