dépot de petites annonces avec photo

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 : dépot de petites annonces avec photo

par mere-teresa » 03 juin 2005, 09:36

<?php
MYSQL_CONNECT($serveur,$login,$pass);

/* Prend le nom de lactivite dans la table numact*/
mysql_select_db("$base");
$query="select * from $table where rubrique='$cat' order by date desc";
$result=mysql_query($query);
$champs=mysql_num_fields($result);
$lignes=mysql_num_rows($result);

if ($lignes!=0) {
while ($rows = mysql_fetch_array($result))
         	{
// là dans le traitement mets un echo $rows['nomfichier']
echo "<table border='1' cellpadding='2' cellspacing='0' width='100%'>
			</center><tr><td><table border='0' cellpadding='0' cellspacing='0' width='100%'><tr><td><b>".$rows[1]."</b></td><td align='right'>";
//pas de parenthèses pour echo mais seulement pour print()
echo date("j/m/Y",$rows[7]);
echo "</td></tr></table></td></tr><tr><td>".$rows[4]."</td></tr><tr><td><table border='0' cellpadding='0' cellspacing='0' width='100%'><tr>
<td>Email:<a href='mailto:".$rows[3]."'>".$rows[3]."</a></td><td align='right'>";
 if ($rows[6]!=0) {
echo"Tel:$rows[6]";
}
echo "</td></tr></table></td></tr></table><br>";
}
echo "";//a quoi sert ce echo ?

echo "<br><br>
<center><a href='javascript:history.back()'>Retour</a></center>";}
else {echo "Il n'y a pas d'annonce correspondant à cette rubrique<br><br><center><a href='javascript:history.back()'>Retour</a></center>";}

mysql_free_result($result);
MYSQL_CLOSE();
?>
</b></font>
</body>

voila voila je ne sait pas trop comment faire pour que ces satanées photo s'affiche
Il est où le résultat des photos ? (C'est $rows[3] ?)
Pas de parenthèses pour echo...

Et pourquoi ne pas demander l'affichage de tous tes résultats ? (une boucle sur $i et $rows[$i] tout ça quoi...puisque tu comptes le nb de lignes de résultats, tu devrais pouvoir...

Et puis pour une meilleure organisation, vaut mieux remplir un $petiteannonce (avec .= ) et à la fin l'afficher (echo $petiteannonce) plutôt que de mettre des echo partout...

par Cyrano » 03 juin 2005, 09:31

Même réponse, si tu exécutes directement ta requête SELECT dans phpMyAdmin, qu'est-ce que tu as comme retour ?

par dentafas » 03 juin 2005, 08:57

bonjour
$query="insert into $table values ('0', '$nom', '$auteur', '$email', '$contenu', '$rubrique', '$telephone', '$time', '$file_name')";
$requete = mysql_db_query($base, $query);
en fait cette fonction sauvegarde mes champs ds ma base mais le probleme ce n'est pas le '0' c'est de faire afficher l'annonce avec la photo

j'arrive à faire afficher l'annonce (le texte) mais pas l'image
voici mon code


<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		
		<title>Petites annonces</title>
		<csscriptdict>
	</head>

	<body>
		<font face="arial">
			<b>
			<table border="0" cellpadding="4" cellspacing="0" width="100%" height="100%" bgcolor="white">
				<tr>
					<td valign="top">
						<center>
							<br>
<?
include("conf.php3");
$table="annonces";



MYSQL_CONNECT($serveur,$login,$pass);

/* Prend le nom de lactivite dans la table numact*/
mysql_select_db("$base");
$query="select * from $table where rubrique='$cat' order by date desc";
$result=mysql_query($query);
$champs=mysql_num_fields($result);
$lignes=mysql_num_rows($result);

if ($lignes!=0) {
while ($rows = mysql_fetch_array($result))
         	{
echo ("<table border='1' cellpadding='2' cellspacing='0' width='100%'>


			</center><tr>
				<td>
					<table border='0' cellpadding='0' cellspacing='0' width='100%'>
						<tr>
							<td><b>$rows[1]</b></td>
							<td align='right'>");echo date("j/m/Y",$rows[7]); echo ("</td>
						</tr>
					</table>
				</td>
			</tr>
			<tr>
				<td>$rows[4]</td>
			</tr>
			<tr>
				<td>
					<table border='0' cellpadding='0' cellspacing='0' width='100%'>
						<tr>
							<td>Email:<a href='mailto:$rows[3]'>$rows[3]</a></td>
							<td align='right'>"); if ($rows[6]!=0) {echo"Tel:$rows[6]";}
							echo ("</td>
						</tr>
					</table>
				</td>
			</tr>
		</table>
<br>
");
}
echo "";

echo "<br><br>
<center><a href='javascript:history.back()'>Retour</a></center>";}
else {echo "Il n'y a pas d'annonce correspondant à cette rubrique<br><br><center><a href='javascript:history.back()'>Retour</a></center>";}

mysql_free_result($result);
MYSQL_CLOSE();
?>
</b></font>
</body>

voila voila je ne sait pas trop comment faire pour que ces satanées photo s'affiche

par Cyrano » 02 juin 2005, 19:22

as-tu un message d'erreur ? sinon, fais afficher ta requête et teste la directement dans phpMyAdmin et reviens avec le message d'erreur.

Cible probable: tu mets dans les valeurs '0' en premier élément que je soupçonne d'être la clé primaire, si cette valeur existe déjà, tu te fais jeter, dans ce cas, ne mets rien, juste ''.

par dentafas » 02 juin 2005, 16:36

j'ai vendu la peu de l'ours avant de l'avoir tuer


jai juste un petit soucis lorsque je veux afficher l'image dans mon annonce
je fais comme ca mais apparement ca n'est pas bon

$query="insert into $table values ('0', '$nom', '$auteur', '$email', '$contenu', '$rubrique', '$telephone', '$time', '$file_name')";
$requete = mysql_db_query($base, $query);

par capou » 02 juin 2005, 16:12

oui c'est pas normal , car je prend exprès une photo plus grosse que 100Ko et une fois la photo chargé mon echo m'affice 0 en taille alors qu'avec une photo plus petite il m'affiche bien sa bonne taille....
Je comprends pas trop là

par Cyrano » 02 juin 2005, 16:04

:cry: Ne m'oubliez pas cyranoooooooo.... snif !!!
Je t'avais effectivement oublié, mais je vois pas trop la solution parce que le problème est bizarre. Pas normal que tu n'aies pas de message d'erreur puisqu'en mettant la condition à vrai (image > 100 000, ça doit générer un message et la taille sera mesurée quand même... il doit manquer un bout de code quelque part.

par capou » 02 juin 2005, 16:00

:cry: Ne m'oubliez pas cyranoooooooo.... snif !!!

par dentafas » 02 juin 2005, 15:43

oki ptdr désolé nous nous étions mal compris

c ca :

<input name="userfile" type="file" enctype="multipart/form-data"/>

mais ca y est c bon je viens de résolver ce probleme :D en fait faut encore que je m'excuse car tu à totalement raison la mise en forme c hyper important :oops:


merci pour tout mere teresa et cyrano


que la force soit avec vous!!!!!!!!!!!!!!!

par mere-teresa » 02 juin 2005, 15:34

mon input c'est
<form name="FormName" action="ajout.php3" method="post">
Heu presque...l'input c'est le champ où l'utilisateur va indiquer quel fichier il veut DL

par capou » 02 juin 2005, 15:33

Beh Cirano , c'est bisard car j'ai fais un echo de la taille, et les photos qui sont plus petites s'upload et le echo m'indique la taille , mais lorsque la photo est + grande , le msg d'erreur n'apparait pas, l'upload ne se fait pas et le echo m'indique 0 en taille ...

par dentafas » 02 juin 2005, 15:21

mon input c'est
<form name="FormName" action="ajout.php3" method="post">

par Cyrano » 02 juin 2005, 15:10

normal: remplace
if( filesize($_FILES['photo']['tmp_name']) > $taille_max) 
Par
if($_FILES['photo']['size'] > $taille_max) 

par mere-teresa » 02 juin 2005, 15:10

Oui apparemment, il ne connaît pas de case de tableau (PHP) avec $_POST['userfile'], aurais-tu nommé ton <input> (HTML) autrement que 'userfile' ?

Par exemple dans le tuto, c'est :

Code : Tout sélectionner

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

par capou » 02 juin 2005, 15:06

Moi j'ai juste un pb avec la taille de la photo.
Si je mets par exemple 100000 en taille_max, mon code ne me sort pas le msg d'erreur "Votre fichier doit faire moins de 100Ko". Il réagit comme si la photo avait bien été uploadé.
Mais elle n'est quand meme pas dans mon répertoire.

Je vous donne mon code au cas ou:
<?php

if(isset($_FILES['photo']))
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
  $taille_max = 100000;
  
  // vÈrifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sÈlectionner un fichier de type png, gif ou jpg !';  
  }
  
  if( filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 100Ko !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
	$dest_dossier = ".foto/".$dest_fichier;
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, '¿¡¬?ƒ?«»… ÀÃÕŒœ“”‘’÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ<breve>??¸´´<caron>', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier);
  }
}

?>

Code : Tout sélectionner

<html> <body> <!-- Erreur ? --> <?php if(isset($erreur)){ echo '<p>', $erreur ,'</p>'; } ?> <!-- Formulaire --> <!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" --> <form method="POST" action="30.php" enctype="multipart/form-data"> <!-- Limiter la taille des fichiers ‡ 500Ko --> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> <fieldset> <legend>Envoi de fichiers</legend> <!-- champs d'envoi de fichier, de type file --> <p><label for="photo">Photo :</label><input type="file" name="photo" /></p> <p><label for="photo_2"></label><!-- bouton d'envoi --> </p> <p> <input type="submit" name="envoi" value="Envoyer les fichiers" /> </p> </fieldset> </form> </body> </html>