Partage
  • Partager sur Facebook
  • Partager sur Twitter

Quelques questions sur le PHP

Désolé pour ce titre ...

    30 décembre 2005 à 22:17:28

    Bonjour
    Je suis nouveau ici et j'ai plusieurs questions à poser sur le php.
    Je viens de lire tout le cours (pour lequel je félicite Matéo21)et certains points demeurent obscures :D
    Voici donc mes questions
    Je cherche à creer un script permettant de noter des logiciels à télécharger.
    J'imagine qu'il doit exister une fonction toute prète ... mais voilà mon problème : comment obtenir le cumul des notes ?
    J'ai également un autre problème : on ne peut pas poster deux fois, j'ai donc creer une table SQL avec 4 champs ID, Note, cumul et IP où l'IP ne peut pas apparaitre 2 fois dans la table.
    Seulement je voudrais mettre ce script sur plusieurs pages pour pouvoir noter plusieurs logiciels ... Le problème est le suivant : comment faire en sorte que l'IP puisse exister plusieurs fois (autant de fois qu'il y a de logiciels à noter) mais que une seule fois par logiciel (je sais pas si je suis très clair ...).
    Voici mon script, du moins le début car je ne sais pas calculer le cumul ... j'ai bien une idée mais bon ^^...
    Désolé je n'arrive pas à mettre le mode code (bug ??)


    <?php
    $localhost = "XXXX";
    $identifiant = "XXX";
    $mdp = "XXXX";

    // Création de la fonction moyenne
    funtion Moyenne($totalnote, $nombrenote)
    {
    $moyenne = $totalnote / $nombrenote;
    return $moyenne;
    }

    // Création du formulaire
    ?>
    Votez pour cette map
    <select name="note" >
    <option value="note0">0 Aucun intérêt</option>
    <option value="note1">1 </option>
    <option value="note2">2</option>
    <option value="note3">3</option>
    <option value="note4">4</option>
    <option value="note5">5 Moyenne</option>
    <option value="note6">6</option>
    <option value="note7">7</option>
    <option value="note8">8</option>
    <option value="note9">9</option>
    <option value="note10">10 Géniale</option>
    </select>

    <?php
    $note = $_post['note'];
    // Connexion
    mysql_connect($localhost, $identifiant, $mdp);
    mysql_select_db("worldedit");
    // On vérifie que l'utilisateur n'a jamais posté
    $retour0 = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM note_map WHERE IP= '' . $_SERVER['REMOTE_ADDR'] . ''');
    $nombre_de_poste_par_utilisateur = mysql_fetch_array($retour0);
    // S'il a déjà posté, on affiche un message d'erreur
    if ($nombre_de_poste_par_utilisateur['nbre_entrees'] != 0);
    {
    echo "Vous avez déjà noté cette map <br />";
    }
    // Sinon on entre la note et l'IP dans la table note_map de la database, celle ci contient 4 champs : ID, Note, cumul et IP
    else
    {
    mysql_query('INSERT INTO note_map VALUES('', '$note', '','' . $_SERVER['REMOTE_ADDR'] . '')'');
    }

    // Maintenant on calcule la moyenne
    // 1 / le nombre de notes
    $retour1 = mysql_query('SELECT COUNT(ID) AS nbre_d_entrees FROM note_map');
    $nombrenote = mysql_fetch_array($retour);

    // 2 / le cumul des notes (note1 + note2 .... note[$nombrenote])
    // Si l'utilisateur est le premier à voter, le cumul est égal à sa note
    if($nombrenote['nbre_d_entrees'] == 1;
    {
    $cumulnote = $note;
    }
    // Sinon on calcul e ce cumul
    else
    {

    }
    mysql_query('UPDATE note_map SET cumul = ' . $cumulnote . ' WHERE ip='' . $_SERVER['REMOTE_ADDR'] . ''');

    // C'EST LA OU CA BLOQUE ...


    • Partager sur Facebook
    • Partager sur Twitter
      30 décembre 2005 à 22:27:05

      pour metre les code y faut utiliser les balise code a gauche quand tu tape un message ....
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        30 décembre 2005 à 22:33:06

        merci worledit pour ce code: mysql_query('UPDATE note_map SET cumul = ' . $cumulnote . '
        ;) il fallais me reveiller :)
        • Partager sur Facebook
        • Partager sur Twitter
          30 décembre 2005 à 22:43:32

          Je sais comment mettre une balise code seulement lorsque je cloqie dessus ça ne marche pas ...

          Et sinon je comprends pas le message précédent ... c'est un truc débile que j'ai fait sur cette ligne ?
          • Partager sur Facebook
          • Partager sur Twitter
            31 décembre 2005 à 0:28:12

            pour la ligne je crois que c'est quelqu'un qui vien de comprendre sa propre erreure...
            sinon pour les IP tu créé ta table genre :
            +---+---+---------+
            |id |ip |logiciel |
            +---+---+---------+

            et tu fais ta requete en disant de vérifier si CE logiciel a été telechargé par CETTE IP
            c'est a dire : mysql_query("SELECT * FROM nomdetatable WHERE ip='".$ip_du_visiteur."' AND logiciel='".$nom_du_logiciel."'");
            et ensuite tu vérifi si la requete renvois un enregistrement!!!
            vala en espérant avoir été clair^^
            • Partager sur Facebook
            • Partager sur Twitter
              31 décembre 2005 à 0:40:28

              Oui c'est tellement idiot que ça devrait marcher :)
              Non plus sérieusement merci je sais même pas pourquoi je n'y ai pas pensé dans mes longues nuits d'insomnie engendrées par les cours de ce site :D

              Il me reste plus qu'à résoudre le misère du cumul des notes ...
              J'avais pensé à un tableau mais je pense que c'est tordu ...

              [code = php]
              $retour1 = mysql_query('Select note from note_map');
              $note1 = mysql_fetch_array($retour1);
              // Création d'un tableau avec les cumuls
              $retour2 = mysql_query('Select cumul from note_map');
              $cumulnote = mysql_fetch_array($retour2);
              // Calcul du cumul en tenant compte du zéro initiale
              $cumulnote['$nombrenote - 1'] = $cumulnote['$nombrenote - 2'] + $note;
              $cumuldesnotes = $cumulnote['$nombrenote - 1'];
              [/code]
              • Partager sur Facebook
              • Partager sur Twitter
                31 décembre 2005 à 0:42:54

                je ne comprend pas trrops ton truc du cumul des notes
                • Partager sur Facebook
                • Partager sur Twitter
                  31 décembre 2005 à 4:15:49

                  // Création de la fonction moyenne
                  funtion Moyenne($totalnote, $nombrenote)
                  {

                  on dit function :)


                  mysql_query('UPDATE note_map SET cumul = ' . $cumulnote . ' WHERE ip='' . $_SERVER['REMOTE_ADDR'] . ''');

                  Ta concaténation est un peu mal faite :) essai comme ça:

                  mysql_query("UPDATE note_map SET cumul = '". $cumulnote ."' WHERE ip='". $_SERVER['REMOTE_ADDR'] ."'");


                  Vala :)

                  *edit* Moi non plus je comprend pas le truc du cumul... enfin je croi que...
                  Tu veut ajouter la note qu'il vien a donner a celles deja enregistrées dans la bdd? si c'est ca tu fait simplement:
                  $note + $cumul / 2

                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 décembre 2005 à 10:53:46

                    Merci pour avoir corriger mes erreurs ...
                    En fait le cumul c'est pour pouvoir calculer la moyenne.
                    Moyenne = total des notes / nombre de notes.
                    Le nombre de note est facile à avoir avec une simple requête SQL mais le total je vois moins bien ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 janvier 2006 à 22:56:39

                      je up ce topic car je ne sais toujours pas comment faire :p

                      Merci d'avance
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 janvier 2006 à 0:10:53

                        tu veux le total des notes de ta table? je sais qu il y a une fonction SLQ mais je m y connais mal en SLQ.
                        sinon tu peux faire

                        $reponse = mysql_query("SELECT note FROM table") or die(mysql_error());
                        while( $retour = mysql_fetch_array($reponse) )
                        {
                           $total = $total + $retour['note'];
                        }

                        tu peux faire qqch comme ca mais c est pas beau :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 janvier 2006 à 0:13:25

                          peu etre faire un id_logiciel pour les différents logiciel ?

                          j'dis sa comme sa c'est une idée ^^
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Quelques questions sur le PHP

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown