Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2010, 16h36   #1
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Par défaut Création d'un vote entre deux images

Salut à tous !

Je suis nouveau sur le fofo,alors excusez moi si je ne poste pas au bon endroit...

J'écris car je patauge un peu dans ce que j'aimerais créer : c'est à dire un vote tout simple entre deux photos apparaissant aléatoirement.

J'ai trouvé des scripts pour des votes du style Hot Or Not, avec un choix entre 0 et 10, mais moi ce que j'aimerais faire c'est tout simplement faire apparaitre deux images, pour que l'utilisateur clique sur une (en guise de vote), puis que deux nouvelles images apparaissent au hasard, etc etc. Et ensuite récupérer sur une autre page le top 10 par exemple.

Le système fonctionnerait du style : pour chaque clic sur une photo : +1 pour cette photo et automatiquement -1 pour l'autre alors, afin d'avoir un classement.

Pensez-vous que vous pouvez m'aider ?
D'avance merci
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 18h08   #2
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 294
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 294
Points : 175
Points : 175
Tu n'arrive pas a faire quoi ?
Afficher deux images aléatoires ou le vote ?
Les images proviennent d'une BBD ou d'un répertoire ?
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 19h31   #3
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Ce que je n'arrive pas, c'est pour le vote. C'est à dire le processus de +1 et -1 automatique.

Mes images proviennent d'un répertoire.
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 11h05   #4
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 294
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 294
Points : 175
Points : 175
Ok,

Supposons que tu as les images A et B.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<form id="forma" name="forma" method="post" action="traitement.php">
<img src="A.jpg" width="217" height="310" /><br />
<input type="hidden" name="plus" value="A" />
<input type="hidden" name="moins" value="B" />
<input type="submit" name="Submit" value="Voter" />
</form>
 
<form id="formb" name="formb" method="post" action="traitement.php">
<img src="B.jpg" width="217" height="310" /><br />
<input type="hidden" name="moins" value="A" />
<input type="hidden" name="plus" value="B" />
<input type="submit" name="Submit" value="Voter" />
</form>
Dans le premier formulaire, tu indiques que A = +1 et B = -1
Dans le second, c'est le contraire A = -1 et B = +1

En fait, je ne comprends pas ce qui te pose problème.
Envoie ton code source pour plus d'aide ....
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/11/2010, 21h52   #5
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Merci de ta réponse

Je pars de zéro, j'ai essayé d'adapter un code déjà existant, mais ça revient plus compliqué. Donc je ré-écris tout.

Pour le moment, j'ai mis mon script java pour avoir les images aléatoires :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<SCRIPT LANGUAGE="JavaScript">
			var extention = ".jpg" ;
			var nbimage = 4 ;
			var url;
			var rep;
			var alt;
 
			function Images_Aleatoire()
			{
 
				numimage = Math.round( Math.random() * ( nbimage - 1 ) + 1 );
 
				Page = "index.php";
 
				rep = "photos"; 
				alt = "Votez !"; 
				url = './' + rep + '/' + numimage + extention ;
				document.write ('<div align=center><a href="' + Page + '"><img src="' + url + '" alt="' + alt + '" border=0></a></div>');
			}
		</SCRIPT>
Puis j'ai adapté avec ton code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 <form id="forma" name="forma" method="post" action="traitement.php">
 <SCRIPT language="JavaScript">Images_Aleatoire();</SCRIPT><br />
<input type="hidden" name="plus" value="A" />
<input type="hidden" name="moins" value="B" />
<input type="submit" name="Submit" value="Voter" />
</form>
 
<form id="formb" name="formb" method="post" action="traitement.php">
<SCRIPT language="JavaScript">Images_Aleatoire();</SCRIPT><br />
<input type="hidden" name="moins" value="A" />
<input type="hidden" name="plus" value="B" />
<input type="submit" name="Submit" value="Voter" />
</form>
Deux problèmes avec ce code :
- la personne doit voter deux fois, si je ne dis pas de bêtise ?
- problème plus minime : il faut cliquer sur un bouton. Est-ce possible que le bouton soit l'image en elle-même ?

Merci beaucoup
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 22h00   #6
Responsable Qt & Web sémantique

 
Avatar de dourouc05
 
Homme Thibaut Cuvelier
Étudiant
Inscription : août 2008
Messages : 16 231
Détails du profil
Informations personnelles :
Nom : Homme Thibaut Cuvelier
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : août 2008
Messages : 16 231
Points : 49 765
Points : 49 765
Envoyer un message via MSN à dourouc05 Envoyer un message via Yahoo à dourouc05
Citation:
Envoyé par Le Mascou Voir le message
- la personne doit voter deux fois, si je ne dis pas de bêtise ?
- problème plus minime : il faut cliquer sur un bouton. Est-ce possible que le bouton soit l'image en elle-même ?
Je ne suis pas du tout la discussion, mais peut-être simplement mettre un lien sur l'image pour voter ? Comme ça, les deux problèmes sont résolus d'un seul coup.

Tu auras donc dans ton code HTML :

Code :
<a href="traitement.php?pour=A"><img src="img.jpg"/></a>
Que tu récupères assez normalement dans ton script PHP :

Code :
1
2
3
4
<?php 
 
if($_GET['pour'] == ...)
...
__________________
Le troisième défi Qt !

Vous souhaitez participer aux rubriques Qt ou PyQt/PySide (tutoriels, FAQ, traductions, sources) ? Contactez-moi par MP.

Qt : La FAQ : 200 QR
symfony : sfDoctrineGuard

Pas de question d'ordre technique par MP !
dourouc05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 22h12   #7
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Le problème c'est qu'avec ce système, je ne peux pas avoir deux images aléatoires à chaque rechargement de la page, si ?
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 11h15   #8
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 294
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 294
Points : 175
Points : 175
Citation:
Le problème c'est qu'avec ce système, je ne peux pas avoir deux images aléatoires à chaque rechargement de la page, si ?
Pourquoi pas ? N'est ce pas déjà le cas ?

Citation:
la personne doit voter deux fois, si je ne dis pas de bêtise ?
Non, pas avec ma solution.

Citation:
il faut cliquer sur un bouton. Est-ce possible que le bouton soit l'image en elle-même ?
Oui

Tu peux aussi utiliser la méthode de dourouc05 qui tout à fait valable (sauf que ca ne t'indique que l'image pour et pas la contre).
Mais il s'agit de la méthode GET. Donc, on peux facilement faire monter un vote en trafiquant l'url.
La méthode que je proposais, est la méthode POST. Moins facile à trafiquer et qui indique le l'image pour et l'image contre ...

Pour ma part, si j'avais un système comme le tient à écrire je passerai par une Base de données ....

Parce que tes votes, tu les enregistrent où actuellement ?

PS Il y a une troisième solution qui est les sessions
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 14h46   #9
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Pour l'instant il n'y a rien, j'attendais justement vos avis avant de me lancer. Donc il vaut mieux passer par une BDD, c'est ce que je pensais aussi.

Pour revenir à l'affichage du vote, oui en effet on n'a besoin de voter qu'une seule fois, j'avais mal regardé. Reste le fait de cliquer sur l'image pour voter et non le bouton. Une idée d'adaptation du code ?

PS: Je m'attaque à la BDD en attendant, comme je risque d'avoir quelques petits soucis
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 15h35   #10
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 294
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 294
Points : 175
Points : 175
Tout d'abord, si tu utilise une BDD oublie le Javascript.
Tu utilisera désormais PHP.

Citation:
Donc il vaut mieux passer par une BDD, c'est ce que je pensais aussi.
Ba oui parce que il faut bien garder le résultat des votes quelque part

Pour le bouton image :
Code :
1
2
 
<input type="submit" class="arrondi" value="Envoyer" />
Le css :
Code :
1
2
3
4
5
6
7
8
 
.arrondi {
background:url(images/test.gif);
border:none;
width: 80px; /* largeur à spécifier */
height: 40px; /* longueur à spécifier */
cursor: pointer;
}
Pour la BDD :
Code :
1
2
3
4
5
6
7
 
CREATE TABLE `images` (
  `id_image` int(5) NOT NULL AUTO_INCREMENT,
  `nom_image` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `votes` int(5) NOT NULL,
  PRIMARY KEY (`id_image`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
A adapter selon besoin

Dans ton répertoire image : Nomme tes images avec l'id

Affichage des deux images aléatoires :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
// Connexion à ta base de données
 
// Requete image 1
$sql_image1 = "SELECT * FROM images ORDER BY rand() LIMIT 1";
$result_image1 = mysql_query( $sql_image1, $conn );    
$row_image1 = mysql_fetch_assoc( $result_image1 );
 
// Requete image 2
$sql_image2 = "SELECT * FROM images WHERE id_image != '".$row_image1['id_image']."' ORDER BY rand() LIMIT 1";
$result_image2 = mysql_query( $sql_image2, $conn );    
$row_image2 = mysql_fetch_assoc( $result_image2 );
?>
<!--ICI, tu affiches tes images-->
<?php
mysql_close(); // Déconnexion BDD
?>
Pour le traitement des votes, il te suffit de faire 2 requêtes d'update ...

Voilà en simplifié
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2010, 22h12   #11
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Hello,

Alors quelques petits problèmes ().

J'ai bien créé la table, modifier le CSS, mais je n'arrive pas à afficher les images. J'ai insérer le code suivant dans mon site :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Connexion à ta base de données
 
// Requete image 1
$sql_image1 = "SELECT * FROM images ORDER BY rand() LIMIT 1";
$result_image1 = mysql_query( $sql_image1, $conn );    
$row_image1 = mysql_fetch_assoc( $result_image1 );
 
// Requete image 2
$sql_image2 = "SELECT * FROM images WHERE id_image != '".$row_image1['id_image']."' ORDER BY rand() LIMIT 1";
$result_image2 = mysql_query( $sql_image2, $conn );    
$row_image2 = mysql_fetch_assoc( $result_image2 );
?>
<!--ICI, tu affiches tes images-->
<?php
mysql_close(); // Déconnexion BDD
?>
Mais j'ai des messages d'erreur qui apparaissent alors à la place:

Code :
1
2
3
4
5
6
7
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/132/sda/0/f/local/index.php on line 72
 
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /mnt/132/sda/0/f/local/index.php on line 73
 
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/132/sda/0/f/local/index.php on line 77
 
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /mnt/132/sda/0/f/local/index.php on line 78
Une idée ? D'autre part je n'ai pas trop compris ce que je dois faire par rapport à mes images du répertoire ? Elles se trouvent dans le répertoire "/photos", nommées "1.jpg", "2.jpg", etc.

Encore merci
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 09h18   #12
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 294
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 294
Points : 175
Points : 175
Citation:
Une idée ?
Oui, vous devez établir la connexion avec votre base de données

Pas le temps de vous apprendre PHP
Ici tuto pour grand débutant pressé
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2010, 17h38   #13
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Voilà, ce problème là est réglé Je suis bien connecté à ma BDD.

Maintenant pouvez-vous me ré-expliquer ce que je dois faire pour les images ? Pour l'instant elles sont donc dans "/photos" (dossier à la racine du serveur) sous le nom de "1.jpg", "2.jpg", ...

Désolé pour toutes ces questions...
Mais merci beaucoup !
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 17h44   #14
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
il faut commencer charger la base avec le chemin pour les images ; soit à la main soit avec un script ...

En l'occurence le script sera même très simple vu le nom des images, pas besoin de scanner le disque, il suffit de générer les noms des fichiers
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2010, 18h27   #15
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Citation:
Envoyé par Joker-eph Voir le message
il faut commencer par charger la base avec le chemin pour les images ; avec un script ...
Un peu d'aide pour que je commence ?
Comment dois-je procéder ?
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 18h27   #16
Membre actif
 
Avatar de elcoyotos
 
Inscription : octobre 2006
Messages : 294
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 294
Points : 175
Points : 175
Pas le temps de vous apprendre PHP
Ici tuto pour grand débutant pressé
__________________
Ecoute, sinon ta langue te perdra
L'ouest Américain
elcoyotos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 19h03   #17
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
T'as bien vu la structure de la table images non ?

Tu fais une boucle for($i=1; $i<= nbImage; $i++) et tu inserts à chaque fois dans la table un enregistrement avec pour nom_image $i.jpg et votes 0 ;-)
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2010, 19h35   #18
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Merci des réponses

Alors je galère un peu (beaucoup). Pour résumé ce que j'ai fais :
- j'ai créé un champ "url" avec : VARCHAR(100) et latin_general_ci
- puis j'ai insérer un enregistrement avec : id laissé vide (comme c'est automatique), nom_image : $i.jpg, url : photos/, vote: 0

Est-ce que jusque là c'est bon ?
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 22h20   #19
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Citation:
Envoyé par Le Mascou Voir le message
- puis j'ai insérer un enregistrement avec : id laissé vide (comme c'est automatique), nom_image : $i.jpg, url : photos/, vote: 0
T'as vraiment mis $i.jpg comme nom ? $i est à remplacé par le numéro de l'image et il faut autant d'enregistrement que d'images.
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/11/2010, 18h45   #20
Invité de passage
 
Mascou IV
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Mascou IV

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Ah ben oui, je fais ce que vous me dites ^^

Donc j'ai rentré pour commencé 4 lien d' images dans la BDD. Dans le nom_image, j'ai uniquement mis comme lien "/photos/1.jpg", pas le chemin complet. Est-ce que c'est bon ?

Autrement, je n'ai pas d'image qui s'affiche sur le site.
Voici mon code php pour résumer :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
// Connexion à ta base de données
include("fonctions.php");
 
connectMaBase();
 
// Requete image 1
$sql_image1 = "SELECT * FROM images ORDER BY rand() LIMIT 1";
$result_image1 = mysql_query( $sql_image1, $conn );    
$row_image1 = mysql_fetch_assoc( $result_image1 );
 
// Requete image 2
$sql_image2 = "SELECT * FROM images WHERE id_image != '".$row_image1['id_image']."' ORDER BY rand() LIMIT 1";
$result_image2 = mysql_query( $sql_image2, $conn );    
$row_image2 = mysql_fetch_assoc( $result_image2 );
?>
<!--ICI, tu affiches tes images-->
 
<?php
for($i=1; $i<= nbImage; $i++)
 
?>
 
<input type="submit" name="submit" value="Voter" />
 
<?php
mysql_close(); // Déconnexion BDD
?>
Encore et encore merci beaucoup
Le Mascou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h50.


 
 
 
 
Partenaires

Hébergement Web