<?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'];
$dossier = 'Images/';
$maxsize = '1048576';
$maxwidth = '2000';
$maxheight = '2000';
//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
{
if ($_FILES['icone']['error'] > 0)
{
echo 'Erreur lors du transfert';
}
else
{
if ($_FILES['icone']['size'] > $maxsize)
{
echo '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)
{
echo 'Image trop grande';
}
elseif (file_exists($dossier . $_FILES['icone']['name']))
{
echo 'Le nom de votre photo éxiste déjà merci de la renommer';
}
else
{
$nom = "{$_FILES['icone']['name']}";
$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom); if ($resultat) {
echo 'Transfert réussi';
$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 = mysql_real_escape_string($nom);
$image = $dossier.$nom;
$description = mysql_real_escape_string($_POST['description']);
$numannonce=mysql_insert_id();
mysql_query("INSERT INTO images VALUES('','" . $nom . "', '" . $description. "', '" . $image . "', '" . $numannonce . "')");
Parse("resultat","merci $MAILUTILISATEURS, vous etes a present enregistre et votre annonce est enregistré");
}
else
{
echo 'Echec du transfert';
}
}
}
else
{
echo 'Extension incorect';
}
}
}
}
}
elseif (!empty($_POST))
{
echo 'Le Mot de passe est different du premier.';
}
?>
Et dans mon code comment utiliser la fonction imagecopyresized() pour qu'il recopie dans le dossier miniature car je doit utiliser cela<?php
// Fichier et nouvelle taille
$filename = '$nom';
$width=50px;
$height=50px;
// Content type
header('Content-type: image/miniature/jpeg');
// Calcul des nouvelles dimensions
list($width, $height) = getimagesize($filename);
// Chargement
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// Redimensionnement
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Affichage
imagejpeg($thumb);
?>
Tu dois ajouter un argument à la fonction suivante avec le chemin et le nom de la miniature pour l'enregistrer :Et dans mon code comment utiliser la fonction imagecopyresized() pour qu'il recopie dans le dossier miniature car je doit utiliser cela
imagejpeg($thumb, 'tonDossier/TonImage.jpg');
Si tu veux, tu peux même mettre un troisième argument INT pour la qualité de la miniature. (de 0 à 100)<?php
$sql= 'SELECT * FROM annonces';
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());
//Ta boucle
while($data=mysql_fetch_array($req))
{ // ici la boucle qui permet d'effectuer la recherche
?>
<tr>
<td><?php echo $data ['departement']; ?></td>
<td><?php echo $data ['region']; ?></td>
<td><?php echo $data ['categorie']; ?></td>
<td><?php echo $data ['souscategorie']; ?></td>
<td><?php echo $data ['typeannonce']; ?></td>
<td><?php echo $data ['titreannonce']; ?></td>
<td><?php echo $data ['descriptionannonce']; ?></td>
<td><?php echo $data ['prix'].'<br /><br />'; ?></td>
</tr>
<?php
}
mysql_free_result ($req);
mysql_close ();
?>
<?php
et pour apercevoir les images sous formes de galerie j'ai se script<html>
<head>
<title>Ma galerie</title>
</head>
<body>
<?php
// cette portion à déjà été détaillé
$tableau = array();
$dossier = opendir ('./php/Images/');
while ($fichier = readdir ($dossier)) {
if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
$tableau[] = $fichier;
}
}
closedir ($dossier);
$nbcol=5;
$nbpics = count($tableau);
if ($nbpics != 0) {
echo '<table>';
for ($i=0; $i<$nbpics; $i++){
if($i%$nbcol==0) echo '<tr>';
// noter bien que l'on place un lien vers le fichier mini.php qui va générer nos miniatures. On ajoute un argument, le nom de fichier image à miniaturiser
echo '<td><a href="php/Images/' , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" /></a></td>';
if($i%$nbcol==($nbcol-1)) echo '</tr>';
}
echo '</table>';
}
else echo 'Aucune image à afficher';
?>
</body>
</html>
Je souhaitera que l'annonce numéro 1 ai l'image associé a celui ci.Code : Tout sélectionner
$sql = "SELECT * FROM images WHERE numannonce = '$numannonce'";
où est le problème ?mais ma clé étrangére faisant la jointure est numannonce dans la table images
je ne comprent pas trop làoù est le problème ?mais ma clé étrangére faisant la jointure est numannonce dans la table images
<?php
include 'php/connect.php';
$sql= 'SELECT `region`,`titreannonce`,`descriptionannonce`,`prix`,`date`,`image`
FROM `annonces` AS a,`images` AS i
WHERE a.numannonce = i.numannonce';
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());
$tableau = array();
while($data=mysql_fetch_array($req))
{
?>
<table>
<tr>
<?php echo '<td><a href="php/Images/' , $data['image'] , '"><img src="mini.php?f=' , $data['image'] , '" alt="$data['image']" /></a></td>';?>
<td><?php echo $data ['departement']; ?></td>
<td><?php echo $data ['region']; ?></td>
<td><?php echo $data ['categorie']; ?></td>
<td><?php echo $data ['souscategorie']; ?></td>
<td><?php echo $data ['typeannonce']; ?></td>
<td><?php echo $data ['titreannonce']; ?></td>
<td><?php echo $data ['descriptionannonce']; ?></td>
<td><?php echo $data ['prix'].'<br /><br />'; ?></td>
</tr>
</table>
<?php
}
mysql_free_result ($req);
mysql_close ();
?>
Mais photo se miniaturise a la volet.<?php
// on défini notre ratio pour nos miniatures (CF. plus haut pour des explications
$ratio = 150;
// on défini le répertoire qui contient nos images de grande taille
$dir = './php/Images/';
// si aucune image n'est donnée en arguments, on redirige le visiteur vers l'accueil de la galerie
if (!isset($_GET['f'])) {
header('location: galerie.php');
exit();
}
else {
// on récupère le nom de fichier à miniaturiser
$image = $_GET['f'];
// on récupère les infos de cette image
$data = @getimagesize('./php/Images/'.$image);
// si il ne s'agit pas d'un fichier image, on redirige le visiteur vers l'accueil de la galerie
if ($data == FALSE) {
header('location: galerie.php');
exit();
}
else {
// si notre image est de type jpeg
if ($data[2] == 2) {
// on crée une image à partir de notre grande image à l'aide de la librairie GD
$src = imagecreatefromjpeg($dir.'/'.$image);
// on teste si notre image est de type paysage ou portrait
if ($data[0] > $data[1]) {
$im = imagecreatetruecolor(round(($ratio/$data[1])*$data[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$data[1])*$data[0]), $ratio, $data[0], $data[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$data[0])*$data[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($data[1]*($ratio/$data[0])), $data[0], $data[1]);
}
// contrairement au premier cas où l'on créait un fichier sur le disque dur, ici, comme on génère des images à la volée, on envoie un header au navigateur web du visiteur lui disant que le fichier mini.php va en fait générer une image de type jpeg, soit du type mime image/jpeg.
header ("Content-type: image/jpeg");
imagejpeg ($im);
}
elseif ($data[2] == 3) {
$src = imagecreatefrompng($dir.'/'.$image);
if ($data[0] > $data[1]) {
$im = imagecreatetruecolor(round(($ratio/$data[1])*$data[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$data[1])*$data[0]), $ratio, $data[0], $data[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$data[0])*$data[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($data[1]*($ratio/$data[0])), $data[0], $data[1]);
}
header ("Content-type: image/png");
imagepng ($im);
}
}
}
?>
le problème c'est que mes images n'apparaisse pas a la place de l'image j'obtient $data[$image]
Désolé une erreur de ma par voici le code modifiéUtilises "LEFT JOIN" (dans ce cas) pour les jointures et gardes where pour les critères de sélection, c'est plus clair.
Par ailleurs je vois que tu veux afficher des champs comme par exemple "departement" mais où les as-tu sélectionnés dans ta requête ?
Les champs sélectionnés dans ton exemple sont `region`,`titreannonce`,`descriptionannonce`,`prix`,`date`,`image` ... et rien d'autre.
Il faut que tu travailles encore un peu avec les tutos, un autre ici
<?php
include 'php/connect.php';
$sql= 'SELECT `region`,`titreannonce`,`descriptionannonce`,`prix`,`date`,`image`
FROM `annonces` AS a,`images` AS i
WHERE a.numannonce = i.numannonce';
$req= mysql_query($sql) or die ('erreur sql §<br />'.$sql.'<br />'.mysql_error());
$tableau = array();
while($data=mysql_fetch_array($req))
{
?>
<table>
<tr>
<?php echo '<td><a href="php/Images/' , $data['image'] , '"><img src="mini.php?f=' , $data['image'] , '" alt="Image" /></a></td>'; ?>
<td><?php echo $data ['region']; ?></td>
<td><?php echo $data ['titreannonce']; ?></td>
<td><?php echo $data ['descriptionannonce']; ?></td>
<td><?php echo $data ['prix'].'<br /><br />'; ?></td>
</tr>
</table>
<?php
}
mysql_free_result ($req);
mysql_close ();
?>
Mais toujours impossible d'afficher l'image cela bloc a se niveau là
<?php echo '<td><a href="php/Images/' , $data['image'] , '"><img src="mini.php?f=' , $data['image'] , '" alt="Image" /></a></td>'; ?> je pense ou dans mon fichier mini car j'ai essayer cela echo '<a href="apercu.php?id_img='.$data[image].'"><img src="php/'.$data[image].'" alt="'.$data[image].'" title="'.$data[image].'" WIDTH=100 HEIGHT=100 /></a>';
Et la sa marche mais cette méthode m'intéresse pas car les photos gardent leur poids d'origine et ne sont pas redimensionnées en miniature c'est pour cela qu'il y a le script mini