Images + commentaires des internautes

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 : Images + commentaires des internautes

par fabrice88250 » 26 juin 2008, 09:47

Tout est ok sa fonctionne maintenant.
Merci beaucoup pour votre aide.

par b.jerome » 26 juin 2008, 01:16

pour ajouter la colone pas de probleme :) par contre pour le reste je bloque.
C'est pas bien compliquer

Au moment du post du commentaire tu ajoutes une requette update. Ca donnera quelque chose du genre...
UPDATE photosnap SET compteur = compteur+1 WHERE id = id_de_la_photo

par fabrice88250 » 25 juin 2008, 21:42

pour ajouter la colone pas de probleme :) par contre pour le reste je bloque.

par b.jerome » 24 juin 2008, 18:01

pour faire (simple) si j'etais toi j'ajouterais une colone 'compteur' (par exemple ou le nom que tu souhaites) dans la table photosnap. Et après chaque commentaire je lui ajouterais +1 pour enregistré le nombre de commentaires de chaque photos. Il ne te resterais plus qu'a afficher le compteur avec $resultat['compteur']

personnelement je trouve la fonction count() assez consommatrice et sur des tables bien remplis ca peut être vraiment pénalisant pour des informations pas vraiment primordiales (mais cen'est que mon avis)

par fabrice88250 » 24 juin 2008, 13:12

me revoilà.
bon alors j'arrive a faire afficher le total des commentaires postés.
par contre, je n'arrive pas a faire en sorte d'affiché le nombre total des commentaires posté en fonction de la photo. de plus j'aimerai que le total en fonction de la photo apparaisse juste a l'endroit ou je met l'image com.png qui revoir sur l'ajout de commentaire.

voilà ou j'en suis pour le moment :
<?php
 
$nb = 3;               // Nombre d'affichages souhaités sur une ligne

// requête SQL 
$sql = "SELECT *, DATE_FORMAT(date,'%d/%m/%Y - %H:%i') as date FROM `photosnap` ORDER BY `id` DESC";
// envoie de la requête
$req = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error
());  
// affichage des résultats avec $nb résultats par ligne
echo'<table>';
$i = 1;

while($resultat = mysql_fetch_array($req)) {

if($i == 1) { echo'<tr>'; }

echo'<td align="center"> 
        <div id="cadresnap">' , $resultat['prenom'] , ' 
        <img src="../snap/' , $resultat['photo'] , '" alt="' , $resultat['prenom'] , ' a mis sa trombine sur photos vosges" /></br> 
        <div class="com" id="com">
		<a href="photo-snap-com.php?id=' , $resultat['id'] , '" style="color: #FF9900; text-decoration: none;" onclick="window.open(\'\',\'popup\',\'width=400,top=0,left=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0\')" target="popup"> <img src="../images/com.png" alt="ajouter un commentaire" border="0"></a> 
		</div>
        <div class="date">' , $resultat['date'] , ' </div>         
        </div> 
    </td>'; 


$i++;
if($i > $nb) { echo'</tr>'; $i = 1; }
}
echo'</table>';
?>

// affichage du total des commentaires postés
<?PHP
$data = mysql_query("SELECT count(idcom) FROM photosnapcom");
$donnees = mysql_fetch_array($data);
$nbr = $donnees[0];
echo  $donnees['0'].' commentaires ont été poster dans cette galerie';
 ?>

par fabrice88250 » 21 juin 2008, 17:49

tres bien sa fonctionne merci. j'en voie presque le bout.
il ne me reste plus que l'affichage des commentaire qui ont été enregistrés en fonction de la photo.
j'essai de mettre ça en place et je reviens pour vous dire si sa fonctionne.

-- Edit

bon alors voilà ou j'en suis. je n'arrive pas a affiché le nbr de commentaires en fonction de la photo. De plus j'aimerai que le nbr de com s'affiche justre a coté de l'image com.png que je fait affiché pour faire un lien et ajouté un commentaire.
<?php
 
$nb = 3;               // Nombre d'affichages souhaités sur une ligne

// requête SQL 
$sql = "SELECT *, DATE_FORMAT(date,'%d/%m/%Y - %H:%i') as date FROM `photosnap` ORDER BY `id` DESC";
// envoie de la requête
$req = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error
());  
// affichage des résultats avec $nb résultats par ligne
echo'<table>';
$i = 1;

while($resultat = mysql_fetch_array($req)) {

if($i == 1) { echo'<tr>'; }

echo'<td align="center"> 
        <div id="cadresnap">' , $resultat['prenom'] , ' 
        <img src="../snap/' , $resultat['photo'] , '" alt="' , $resultat['prenom'] , ' a mis sa trombine sur photos vosges" /></br> 
        <div class="com" id="com">
		<a href="photo-snap-com.php?id=' , $resultat['id'] , '" style="color: #FF9900; text-decoration: none;" onclick="window.open(\'\',\'popup\',\'width=400,top=0,left=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0\')" target="popup"> <img src="../images/com.png" alt="ajouter un commentaire" border="0"></a> 
		</div>
        <div class="date">' , $resultat['date'] , ' </div>         
        </div> 
    </td>'; 


$i++;
if($i > $nb) { echo'</tr>'; $i = 1; }
}
echo'</table>';
?>


// j'affiche le nombre total des commentaires stockés dans la table photosnapcom.
<?PHP
$data = mysql_query("SELECT count(idcom) FROM photosnapcom");
$donnees = mysql_fetch_array($data);
$nbr = $donnees[0];
echo  $donnees['0'].' commentaires ont été poster dans cette galerie';
 ?>

par b.jerome » 21 juin 2008, 17:06

C'est normal, c'est par ce que tu as du mettre la colone ID en clé primaire. Une colone en primary key ne peut être NULL et ne peux pas recevoir 2 fois la même valeur. Il faut enlevé la primary key sur cette colonne. Si tu veux conserver une colone en primary key, tu peux par exemple ajouter une colone id_truc en auto_increment.

Code : Tout sélectionner

CREATE TABLE `photosnapcom` ( `pid` mediumint(75) NOT NULL auto_increment, `id` mediumint(75), nom varchar(128) NOT NULL default '', commentaire text NOT NULL, PRIMARY KEY (`pid`) );

par fabrice88250 » 21 juin 2008, 14:52

Sa fonctionne... enfin presque. En fait si j'enregistre un commentaire (1er commentaire) sur un photo sa fonctionne.
Par contre si on essai de mettre un deuxieme commentaire sur la meme photo on a ce message d'erreur qui est retourné :shock:

Code : Tout sélectionner

Erreur SQL !INSERT INTO photosnapcom(id, nom, commentaire) VALUES('22','fabrice','essai commentaire numero 2') Duplicate entry '22' for key 1

par b.jerome » 21 juin 2008, 13:32

oui par exemple.

Code : Tout sélectionner

<a href=\'photo-snap-com.php?id=' .$resultat['id'].'\'>ajouter un commentaire</a>
ensuite il faut déterminer si ta page c'est un simple formulaire ou une page qui affiche ta photo en detail et les divers commentaires déjà postés, plus le formulaire...

Si c'est simplement un formulaire... tu ajoutes un champ hidden avec l'id de la photo qui est passé via ton l'url...


Code : Tout sélectionner

<form action="photo-snap-valide.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="id_photo" value="<?php echo $id; ?>"> <p>&nbsp; </p> <table border="0" cellspacing="10" cellpadding="0"> <tr> <td><div align="right">Nom </div></td> <td><input type="text" name="nom" /></td> </tr> <tr> <td>Commentaire</td> <td><textarea name="commentaire" id="commentaire" maxlength="255"></textarea></td> </tr> <tr> <td>&nbsp;</td> <td><input name="submit" type="submit" value="Valider" /></td> </tr> </table> </form>

par fabrice88250 » 21 juin 2008, 13:19

ben déja au niveau du lien pour ouvrir le formulaire de commentaire.

est ce que c'est ça qu'il faut faire ?
echo'<td align="center">
		<div id="cadresnap">
		<img src="../snap/' , $resultat['photo'] , '"/></br>
		' , $resultat['prenom'] , '</br>
		' , $resultat['date'] , '</br>
		<a href=\'photo-snap-com.php?id=' .$resultat->id.'\'>ajouter un commentaire</a>
		</div> 

par b.jerome » 21 juin 2008, 13:01

Qu'est ce qui t'embete ? Qu'est ce que tu as essayer ?

par fabrice88250 » 21 juin 2008, 12:52

ok je pense que j'ai compris les alias. Par contre j'arrive pas a mettre le tout en place

par b.jerome » 21 juin 2008, 12:00

Dac donc dans le lien qui enméne vers ton formulaire il faut inclure l'id de la photo.
$sql = "SELECT a.*,b.nom,b.commentaire FROM `photosnap` AS a  LEFT JOIN `photosnapcom` AS b ON   a.id = b.id WHERE `a.id`= "ID"  \\ => ID DE LA PHOTO AFFICHER";
a.* correspond a la table `photosnap`
b.* a la table `photosnapcom`

En faite dans mon exemple j'ai créer des ALIAS des tables. ( `photosnap` AS a ) et ( `photosnapcom` AS b ).

par fabrice88250 » 21 juin 2008, 11:49

mon formulaire de commentaire est independant. il a sa propore page. j'aimerai que le formulaire s'ouvre en cliquant sur un lien qui serrait en dessous de chaque photo depuis la page photosnap.

merci pour ton exemple mais je comprend pas tres bien. A quoi correspond a, b ...

par b.jerome » 21 juin 2008, 11:43

Un exemple...
$sql = "SELECT a.*,b.nom,b.commentaire FROM `photosnap` AS a  LEFT JOIN `photosnapcom` AS b ON   a.id = b.id ORDER BY `a.id` DESC"; 
//il faut ensuite que tu récupéres $resultat['id'] dans le formulaire de commentaire.

Par contre ton formulaire de commentaire il se trouve dans la page ou tu affiches une photo unique ou dans la page du tableau des photos ?