469 visiteur(s) en ligne
Date actuelle : 29-03-2024, 09:52 AM Bienvenue, Visiteur ! ( Identification S'enregistrer )







 
Avis de script
 
Note de cette discussion :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Auteur Message
Toto Hors ligne
Animateur / Modérateur
******

Messages : 6 415
Inscription : Feb 2007
Réputation : 14
Message : #1
Avis de script
Suite au poste de Troll, je vous demande votre avis sur mon script de sondage.

http://familyk29.free.fr/script_sondage

Ne vous en faite pas pour le design, c'est mon prof de techno qui m'a demandé ce script, on l'adaptera ensuite avec son site.

Comment l'ameliorer techniquement parlant?

Sans oublier (l'incredimentation n'est pas mon truc, faudrait que notepad intègre cette fonction Smile ) :

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Sondage</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php
include("choix.php");
echo $titre; //Affichage du titre
?>
<br/><br/>
<!-- Affichage du sondage-->
<form method="post" action="form.php" enctype="multipart/form-data" name="choix" id="choix">
<select name="choix" id="choix">
<!-- Choix à définir dans choix.php -->
<!-- Ne pas toucher au formulaire, sauf pour rajouter une ligne de choix dans le même exemple-->
<option value=""></option>
<option value="<?php echo "$choix1"?>"><?php echo "$choix1"?></option>
<option value="<?php echo "$choix2"?>"><?php echo "$choix2"?></option>
<option value="<?php echo "$choix3"?>"><?php echo "$choix3"?></option>
</select>
<p><input type="submit" value="Voter!" /></p>
</form>
</body>
</html>



form.php


<?php
include("infoscnx.php");
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM controle_ip WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on permet le vote, et on ajoute l'ip dans la table
{
if (empty($_POST['choix']))
{
echo 'Vous n\'avez pas sélectionné de choix. Cliquez <a href="javascript:window.history.go(-1)">ici</a> pour revenir a la page précédente';
}
else
{
include("choix.php");
include("infoscnx.php");
mysql_query('INSERT INTO controle_ip VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\')');
if ($_POST['choix'] == "$choix1")
{
mysql_query("INSERT INTO nomdelatable VALUES ('".$_POST['choix']."', '', '', '', '', '', '', '', '')");
}
elseif ($_POST['choix'] == "$choix2")
{
mysql_query("INSERT INTO nomdelatable VALUES ('', '".$_POST['choix']."', '', '', '', '', '', '', '')");
}
elseif ($_POST['choix'] == "$choix3")
{
mysql_query("INSERT INTO nomdelatable VALUES ('', '', '".$_POST['choix']."', '', '', '', '', '', '')");
mysql_close();
}
echo 'Votre vote a bien été enregistré! Cliquez <a href="lire.php">ici</a> pour voir les résultats!';
}

}
else // L'ip se trouve déjà dans la table, on interdit le vote
{
echo 'Vous avez déjà voté. Cliquez <a href="javascript:window.history.go(-1)">ici</a> pour revenir a la page précédente';
}
?>



lire.php


<?php
include("choix.php");
include("infoscnx.php");
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE choix1='$choix1'");
$donnees = mysql_fetch_array($retour);

?>
<hr><br/>
Nombre de réponses pour <?php echo "$choix1"?>: <?php echo $donnees['reponse'];?>
<br/><br/>
<?php
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE choix2='$choix2'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$choix2"?>: <?php echo $donnees['reponse'];?>
<br/><br/>
<?php
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE choix3='$choix3'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$choix3"?>: <?php echo $donnees['reponse'];
mysql_close();
?>
<br/><br/>
<hr>
<br/>

<?php

if ("$titre_archive1" == Aucun)
{

}
else
{
?><u>Archives:</u> <br/><br/>
<?php echo '- <i>'.$titre_archive1.'</i>'; ?><br/>
<br/>
<?php
include("choix.php");
include("infoscnx.php");
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE archive_choix1='$archive1'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$archive1"?>: <?php echo $donnees['reponse'];?>
<br/><br/>
<?php
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE archive_choix2='$archive2'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$archive2"?>: <?php echo $donnees['reponse'];?>
<br/><br/>
<?php
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE archive_choix3='$archive3'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$archive3"?>: <?php echo $donnees['reponse'];
mysql_close();
}
if ("$titre_archive2" == Aucun)
{

}
else
{
?><br/><br/>
<?php echo '- <i>'.$titre_archive2.'</i>'; ?><br/>
<br/>
<?php
include("choix.php");
include("infoscnx.php");
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE archive_choix_2_1='$archive_2_1'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$archive_2_1"?>: <?php echo $donnees['reponse'];?>
<br/><br/>
<?php
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE archive_choix_2_2='$archive_2_2'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$archive_2_2"?>: <?php echo $donnees['reponse'];?>
<br/><br/>
<?php
$retour = mysql_query("SELECT COUNT(*) AS reponse FROM nomdelatable WHERE archive_choix_2_3='$archive_2_3'");
$donnees = mysql_fetch_array($retour);
?>
Nombre de réponses pour <?php echo "$archive_2_3"?>: <?php echo $donnees['reponse'];
mysql_close();
}
?>



choix.php


<?php
$titre = "Selection du titre"; //Titre du sondage
$choix1 = "Choix1"; //Selection du premier choix
$choix2 = "Choix2"; //Selection du second choix
$choix3 = "Choix3"; //Selection du troisième choix
//Si choix supplémentaires, rajouter une ligne en respectant l'ordre des chiffres, et en pensant a rajouter une ligne aussi dans index.php
////////////////
$titre_archive1 = "Aucun"; //Nom du 1er sondage archivé, mettre "Aucun", si aucun sondage a archiver
$archive1 = "Archive_Choix1"; //Premier choix du 1er sondage archivé
$archive2 = "Archive_Choix2"; //...
$archive3 = "Archive_Choix3"; //...
////////////////
$titre_archive2 = "Aucun"; //Nom du 2nd sondage archivé, mettre "Aucun", si aucun sondage a archiver
$archive_2_1 = "Archive_Choix_2_1"; //Premier choix du 2eme sondage archivé
$archive_2_2 = "Archive_Choix_2_2"; //...
$archive_2_3 = "Archive_Choix_2_3"; //...
?>



@Troll: J'ai suivi ton conseil pour la connexion a la bdd Smile

Qu'en pensez-vous?


"Dans la vie, j'ai eu le choix entre l'amour, la drogue et la mort. J'ai choisi les deux premières et c'est la troisième qui m'a choisi..."
Jim Morrison
01-06-2008 13:52 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #2
 
Alors évidemment comme même un expert aura toujours un code critiquable (je suis pas expert hein Smile ), il y a des choses critiquables :
  • Tout d'abord, j'ai incrémenté ton fichier form.php correctement, l'autre est long donc je ne le ferai pas par contre.
  • Ensuite, je t'avais dit qu'il fallait mettre des guillemets pr les conditions, mais c'est dans le cas d'une chaine decaractères ! Si c'est une variable tu peux les supprimer (si tu compares les chaines de deux variables).
  • Ensuite encore, j'ai rajouté un "else" après les "elseif" en effet... si quelqu'un envoit un autre choix ?
  • Ta fonction "mysql_close()" n'est pas vraiment appelée au bon moment, à moins que tu n'arrêtes le script avant sa fin naturelle (au dernier ?> rencontré), mais ton mysql_close(); à la fin.
  • Dans le où un choix est bien présent, tu rappelles "infocnx.php" et donc tu as deux connexions à ta base... inutile.
  • Je te conseille d'éviter la méthode du ?>codehtml<?php on retourne à php. En effet ainsi ton serveur se dit "Hop php, hop pas php, hop php, hop pas php... et change de "cerveau" de lecture très souvent (puisqu'il ne lit pas de la même manière le PHP et le HTML). Cependant une liste de "echo '';" n'est pas non plus terrible. La meilleur méthode est la suivante :

    
    &amp;#60;?php
    $display = "";
    if&amp;#40;&amp;#41; &amp;#123;
    ...
    $display .= "Réponse a cette condition";
    &amp;#125;
    else &amp;#123;
    ...
    $display.= "Réponse à cette condition 2";
    &amp;#125;
    echo $display;
    mysq_close&amp;#40;&amp;#41;;
    ?&amp;#62;


Ainsi tu ne fais qu'un seul affichage (économie de ressources), et j'utilise ".=" plutot que "=" comme ça si tu veux rajouter quelque-chose au début de $display, ce qui y est inscrit plus tard ne l'écrase pas, ça s'y ajoute.

Voilà après modifications :



&amp;#60;?php
include&amp;#40;"infoscnx.php"&amp;#41;;
$retour = mysql_query&amp;#40;'SELECT COUNT&amp;#40;*&amp;#41; AS nbre_entrees FROM controle_ip WHERE ip=\'' . $_SERVER&amp;#91;'REMOTE_ADDR'&amp;#93; . '\''&amp;#41;;
$donnees = mysql_fetch_array&amp;#40;$retour&amp;#41;;

if &amp;#40;$donnees&amp;#91;'nbre_entrees'&amp;#93; == 0&amp;#41; // L'ip ne se trouve pas dans la table, on permet le vote, et on ajoute l'ip dans la table
&amp;#123;
if &amp;#40;empty&amp;#40;$_POST&amp;#91;'choix'&amp;#93;&amp;#41;&amp;#41;
&amp;#123;
echo 'Vous n\'avez pas sélectionné de choix. Cliquez &amp;#60;a href="javascript&amp;#58;window.history.go&amp;#40;-1&amp;#41;"&amp;#62;ici&amp;#60;/a&amp;#62; pour revenir a la page précédente';
&amp;#125;
else
&amp;#123;
include&amp;#40;"choix.php"&amp;#41;;
mysql_query&amp;#40;'INSERT INTO controle_ip VALUES&amp;#40;\'' . $_SERVER&amp;#91;'REMOTE_ADDR'&amp;#93; . '\'&amp;#41;'&amp;#41;;
if &amp;#40;$_POST&amp;#91;'choix'&amp;#93; == $choix1&amp;#41;
&amp;#123;
mysql_query&amp;#40;"INSERT INTO nomdelatable VALUES &amp;#40;'".$_POST&amp;#91;'choix'&amp;#93;."', '', '', '', '', '', '', '', ''&amp;#41;"&amp;#41;;
&amp;#125;
elseif &amp;#40;$_POST&amp;#91;'choix'&amp;#93; == $choix2&amp;#41;
&amp;#123;
mysql_query&amp;#40;"INSERT INTO nomdelatable VALUES &amp;#40;'', '".$_POST&amp;#91;'choix'&amp;#93;."', '', '', '', '', '', '', ''&amp;#41;"&amp;#41;;
&amp;#125;
elseif &amp;#40;$_POST&amp;#91;'choix'&amp;#93; == $choix3&amp;#41;
&amp;#123;
mysql_query&amp;#40;"INSERT INTO nomdelatable VALUES &amp;#40;'', '', '".$_POST&amp;#91;'choix'&amp;#93;."', '', '', '', '', '', ''&amp;#41;"&amp;#41;;
&amp;#125;
else &amp;#123;
mysql_close&amp;#40;&amp;#41;;
die&amp;#40;"Ce choix n'existe pas, ne trichez pas !"&amp;#41;;
&amp;#125;
echo 'Votre vote a bien été enregistré! Cliquez &amp;#60;a href="lire.php"&amp;#62;ici&amp;#60;/a&amp;#62; pour voir les résultats!';
&amp;#125;

&amp;#125;
else // L'ip se trouve déjà dans la table, on interdit le vote
&amp;#123;
echo 'Vous avez déjà voté. Cliquez &amp;#60;a href="javascript&amp;#58;window.history.go&amp;#40;-1&amp;#41;"&amp;#62;ici&amp;#60;/a&amp;#62; pour revenir a la page précédente';
&amp;#125;
mysql_close&amp;#40;&amp;#41;;
?&amp;#62;





Pour les archives je ne pige pas bien alors je dis rien.

Pour l'affichage il y a ce que j'ai dit au-dessus qui s'applique, mais aussi :



if &amp;#40;"$titre_archive2" == Aucun&amp;#41;



En correcte ça donne :



if&amp;#40;$titre_archive2 == "Aucun"&amp;#41;


Car les strings doivent être entre "", PHP les reconnait quand meme des fois sans les "" mais ca risque de foirer car il peut prendre ca pour une constante.

Enfin, je te conseillerai de réduire le nombre de requetes.

Tu fais 3 requetes pour la même table !

Pourquoi ne pas faire :



$ressource = mysql_query&amp;#40;"SELECT choix FROM tatable ORDER BY choix"&amp;#41;or die&amp;#40;mysql_error&amp;#40;&amp;#41;&amp;#41;;
$compteurs = array&amp;#40;&amp;#41;;
while&amp;#40;list&amp;#40;$choix&amp;#41; = mysql_fetch_row&amp;#40;$ressource&amp;#41;&amp;#41; &amp;#123;
if&amp;#40;$choix == 1&amp;#41; &amp;#123;
$compteurs&amp;#91;1&amp;#93;++;
&amp;#125;
elseif&amp;#40;$choix == 2&amp;#41; &amp;#123;
$compteurs&amp;#91;2&amp;#93;++;
&amp;#125;
elseif&amp;#40;$choix == 3&amp;#41; &amp;#123;
$compteurs&amp;#91;3&amp;#93;++;
&amp;#125;
&amp;#125;




Après bien sûr, à toi de voir, et de remplacer les valeurs.

Une chose encore, penses à mettre des "or die(mysql_error());" derrière tes mysql_query(), sinon quand tu auras une erreur SQL tu auras plus de mal pour le débuggage.

Sinon, dernière chose, ton module de sondage ne pourra gérer qu'un seul sondage par IP, car tu gère les IP dans une table sans dire pour quel sondage c'est, donc si avec mon IP je vote au sondage 1, je pourrai pas voter au sondage 2.



Je crois que c'est tout. :mrgreen:


Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
01-06-2008 18:04 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Toto Hors ligne
Animateur / Modérateur
******

Messages : 6 415
Inscription : Feb 2007
Réputation : 14
Message : #3
 
Alors merci pour ta réponse détaillée, mais j'avoue que j('ai pas trop compris avec les $display et tout ces machins.. Bref je retiendrait pour les " et pour le else si qqun choisi un autre choix.

Il n'y aura qu'un seul sondage a la fois, donc pas de soucis à ce niveau.

Ah et dernière question, existe t-il un programme/logiciel qui incredimenterai le script automatiquement?

"Dans la vie, j'ai eu le choix entre l'amour, la drogue et la mort. J'ai choisi les deux premières et c'est la troisième qui m'a choisi..."
Jim Morrison
02-06-2008 09:06 AM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
PankkypH Hors ligne
Informaticien moyen
***

Messages : 213
Inscription : May 2008
Réputation : 0
Message : #4
 
Citation :Ah et dernière question, existe t-il un programme/logiciel qui incredimenterai le script automatiquement?

Je me permets d'intervenir d'un point de vue vocabulaire : incrédimenter n'existe pas, tu veux sûrement parler de incrémenter (comment le dit Troll), qui signifie "augmenter une valeur", par exemple (en C/C++):

variable = variable++;


Mais pour le décalage des paragraphes, on appelle plutôt cela indenter, soit faire une indentation.

Voilà, simple mise au point de relou du français Tongue
Cela dit ça peut toujours servir...

Pour tenter de répondre à la question, Eclipse gère l'indentation, si ça n'y est pas par défaut tu peux faire CTRL+SHIFT+F.

02-06-2008 10:28 AM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Toto Hors ligne
Animateur / Modérateur
******

Messages : 6 415
Inscription : Feb 2007
Réputation : 14
Message : #5
 
Ouais, moi et ma fâcheuse technique de lire en diagonale, je crois comprendre des mots, qui ne veulent rien dire ^^ Merci de m'avoir repris Wink

Je vais regarder ce que propose Eclipse Smile

"Dans la vie, j'ai eu le choix entre l'amour, la drogue et la mort. J'ai choisi les deux premières et c'est la troisième qui m'a choisi..."
Jim Morrison
02-06-2008 12:52 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #6
 
Oui d'ailleurs la proemière fois j'avais dit (dans l'autre sujet) indentation, et là je crois qu'en lisant ton "incrédimenter" du coup j'ai dû écrire "incrémenter"... :roll:

Je ne connais pas Eclipse mais Notepad++ gère en partie l'indentation, je ne crois pas qu'il aille jusqu'à la faire automatiquement mais si tu regarde sur le site officiel de notepad++ je pense que tu devrais bien trouver un plugin (car ils sont nombreux) qui le fera.

Sinon il y a Quanta+ pour Linux, ou BlueFish (linux également) qui le font. Mais je ne crois pas qu'ils soient disponibles pour Windows.

Remarque, si tu utilises Virtual Desktop tu pourras sûrement utiliser Quanta Plus sous Windows.

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
02-06-2008 15:01 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Toto Hors ligne
Animateur / Modérateur
******

Messages : 6 415
Inscription : Feb 2007
Réputation : 14
Message : #7
Avis de script
Ouais, je vais me pencher sur les plugins, car Eclipse c'est surtout pour programmer le java..

"Dans la vie, j'ai eu le choix entre l'amour, la drogue et la mort. J'ai choisi les deux premières et c'est la troisième qui m'a choisi..."
Jim Morrison
02-06-2008 15:02 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse




Discussions apparemment similaires...
Discussion : Auteur Réponses : Affichages : Dernier message
  Aide sur un script PHP regord 5 7 010 06-07-2012 16:40 PM
Dernier message: Troll
  [Résolu] [PHP] Besoin d'aide sur un script de gestion d'offres Quentin 14 8 948 03-01-2012 08:11 AM
Dernier message: Troll
  [Résolu] Avis et conseil sur site internet bzh35 12 10 418 11-09-2010 10:12 AM
Dernier message: TotofTeam
  [php/javascript]aide sur un script Nell95 8 6 693 18-07-2010 10:27 AM
Dernier message: Troll
  [php] petit script avec function time() et date() sheitan 8 6 551 01-11-2008 10:53 AM
Dernier message: Troll
  Script Miniature Rammstein_666 21 10 773 16-10-2008 20:22 PM
Dernier message: Troll
  [Résolu] Problème de script de Livre d'Or Quentin 13 8 637 13-10-2008 14:44 PM
Dernier message: -Sh4D0w-
  [Résolu] Script pour lire plusieurs articles sur une même page sheitan 11 8 158 24-07-2008 16:49 PM
Dernier message: Troll
  [Résolu] Problème avec un script Rem's 5 5 601 03-06-2008 20:56 PM
Dernier message: Troll
  Script "Recherche" à vérifier svp Aethiryas 11 6 305 02-06-2008 17:13 PM
Dernier message: Troll

Aller à :


Utilisateur(s) parcourant cette discussion : 1 visiteur(s)