Sondages en entreprise

Mammouth du PHP | 19672 Messages

17 juin 2005, 10:26

Pour ta première interrogation: fichier texte ou base de données: si tu as le choix,il n'y a pas photo: la base de données va te donner infiniment plus de souplesse et de possibilités de traitement des informations;

Pour la requête, c'est assez simple: tu veux la troisième réponse à le seconde question. Donc on a besoin de deux identifiants:
- 1 - à quel identifiant est raccordée la seconde question et dans quel champ je trouve cet identifiant ? Réponse : dans le champ "question" et c'est la clé 2;
- 2 - Dans quel champ vais-je pouvoir trouver la troisième réponse ? Réponse : dans le champ "reponse2"

On peut donc formuler la requête:

Code : Tout sélectionner

SELECT `réponse2` FROM `sondagetable` WHERE `question` = 2;
Petite remarque: renomme tes champs: pas d'accents, pas de caractères spéciaux ni espace non plus: sous Windows, ça ne posera pas de problème, mais si tu mets en ligne chez un hébergeur avec un système UNIX/Linux, tu vas avoir des surpsises des plus désagréables.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 10:34

ok merci pour les conseils :)
Donc tout cela devrait me donner ceci dans un cas précis:
if ( $Q2 = 2 )
{
$update=SELECT `reponse2` FROM `sondagetable` WHERE `question` = 2;
$update++;
UPDATE `sondagetable` SET `reponse2` = $update WHERE `question` = 2 ;
}
Voila je pense que cela devrait être bon, je vais refaire mes tables et tester :)

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 11:14

Alors pour mon code j'en suis arrivé sur quelque chose comme ca :
@mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");      
@mysql_select_db($bdd,$table) or die("Impossible de se connecter à la base de données");     

if ( $_POST["Q1"] = 1 ) 
{ 
$update=SELECT `reponse1` FROM `sondagetable` WHERE `question` = 1;
$update++; 
UPDATE `sondagetable` SET `reponse1` = $update WHERE `question` = 1; 
} 
J'ai donc une première erreur : Parse error: parse error, unexpected '`' in *****/Sondage/index.php on line 219

J'essaye de lever les ` donc pour tester et j'ai encore une erreur : Parse error: parse error, unexpected T_STRING in *****/Sondage/index.php on line 219

Je me dis que sa doit venir de $update mais je vois pas comment régler ceci :/

Mammouth du PHP | 19672 Messages

17 juin 2005, 11:14

ok merci pour les conseils :)
Donc tout cela devrait me donner ceci dans un cas précis:
if ( $Q2 = 2 )
{
$update=SELECT `reponse2` FROM `sondagetable` WHERE `question` = 2;
$update++;
UPDATE `sondagetable` SET `reponse2` = $update WHERE `question` = 2 ;
}
Voila je pense que cela devrait être bon, je vais refaire mes tables et tester :)
Non, ça ne marchera pas ton script: qu'est-ce que tu veux faire avec $update++ : ça va te renvoyer une erreur, je ne comprends pas ce que tu veux incrémenter au juste ? le résultat ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 11:20

Heu oui je veux juste incrémenter le résultat que je récupère, et le re enregistré, pour le $update++ c'est juste pour incrémenter une variable (C'est comme ça que je fais en C++ du moin :/)

ViPHP
pjl
ViPHP | 2119 Messages

17 juin 2005, 11:41

Prends la peine de relire ton code.
$update correspond à une chaine de caractères et là, tu veux ajouter une unitée à une chaine de caractères.

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 11:46

Je n'avais pas interprété cela comme ca :/

Moi dans $update je veux juste rajouter une valeur numérique en fait ! (un entier). Et en gros donner une valeur à $update je vais prendre la case qui m'interesse dans ma BDD. Mais apparament c'est pas trop ca la syntaxe :X

Mammouth du PHP | 19672 Messages

17 juin 2005, 11:51

Non, $update n'est même pas une chaine de caractère, c'est une ressource retournée par MySQL.

Si le résultat est numérique, il faut commencer par le récupérer pour ensuite l'incrémenter:
<?php
if ( $Q2 = 2 )
{
    $recherche = "SELECT `reponse2` FROM `sondagetable` WHERE `question` = ". $Q2 .";";
    $recup = mysql_query($update);
    while($resultat = mysql_fetch_assoc($recup))
    {
        $resultat['reponse2']++;
        $miseajour = "UPDATE `sondagetable` SET `reponse2` = ". $$resultat['reponse2'] ." WHERE `question` = ". $Q2 .";";
        $maj = mysql_query($miseajour);
        if($maj != false)
        {
            echo("<p>Mise à jour de la réponse effectuée.</p>\n");
        }
    }
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

pinpin
Invité n'ayant pas de compte PHPfrance

17 juin 2005, 11:54

ok je vais essayer ca merci beaucoup.
Normalement j'ai tout ce qu'il me faut pour finir, mais je laisse le topic dans l'état actuel pour le moment au cas ou :)

ViPHP
pjl
ViPHP | 2119 Messages

17 juin 2005, 12:09

Pourquoi 2 requetes alors qu'une devrait suffire ?

pinpin
Invité n'ayant pas de compte PHPfrance

21 juin 2005, 13:49

Salut :)
Voila mon projet avance bien mais j'ai un petit point noir. En effet j'ai cette question rédigé comme ceci :
<b><font color="#333399"> 
4 - Utilisez-vous souvent les communications types (macro, E-mails, courrier)? <br> 
</font></b> 
<input type="radio" name="Q4" value="1">Oui (passez à la question 5)<br>  
<input type="radio" name="Q4" value="2">Non (précisez ci-dessous)<br> <br> 
Si non pourquoi ? <br> 
<input type="checkbox" name="Q4bis[]" value="1">Ne répondent pas à la question <br> 
<input type="checkbox" name="Q4bis[]" value="2">Difficulté à trouver les réponses types dans la base <br> 
<input type="checkbox" name="Q4bis[]" value="3">Par méconnaissance de la base (titre et contenu des communications types) <br> 
<input type="checkbox" name="Q4bis[]" value="4">Autre <br> <br> <br>
Cela aura pour effet que si on coche les deux dernières cases par exemple on aura $Q4bis[3]=4 et $Q4bis[2]=3. J'ai fait des echo pour savoir si les résultats s'interprété comme je le voulais et j'ai bien ce que je voulais.

Ensuite le problème vient au moment de les exploiter, en gros j'ai ca :
if ( $Q4 == 1 ) 
{ 
$recup1=@mysql_query("SELECT reponse1 FROM testsonda"); 
$recup=@mysql_result($recup1,3);
$recup++;
@mysql_query("UPDATE testsonda SET reponse1 = $recup WHERE question = 4"); 
} 
if ( $Q4 == 2 ) 
{ 
$recup1=@mysql_query("SELECT reponse2 FROM testsonda"); 
$recup=@mysql_result($recup1,3);
$recup++;
@mysql_query("UPDATE testsonda SET reponse2 = $recup WHERE question = 4"); 
} 
if ( $Q4bis[0] == 1 ) 
{ 
$recup1=@mysql_query("SELECT reponse3 FROM testsonda"); 
$recup=@mysql_result($recup1,3);
$recup++;
@mysql_query("UPDATE testsonda SET reponse3 = $recup WHERE question = 4"); 
} 
if ( $Q4bis[1] == 2 ) 
{ 
$recup1=@mysql_query("SELECT reponse4 FROM testsonda"); 
$recup=@mysql_result($recup1,3);
$recup++;
@mysql_query("UPDATE testsonda SET reponse4 = $recup WHERE question = 4"); 
} 
if ( $Q4bis[2] == 3 ) 
{ 
$recup1=@mysql_query("SELECT reponse5 FROM testsonda"); 
$recup=@mysql_result($recup1,3);
$recup++;
@mysql_query("UPDATE testsonda SET reponse5 = $recup WHERE question = 4"); 
} 
if ( $Q4bis[3] == 4 ) 
{ 
$recup1=@mysql_query("SELECT reponse6 FROM testsonda"); 
$recup=@mysql_result($recup1,3);
$recup++;
@mysql_query("UPDATE testsonda SET reponse6 = $recup WHERE question = 4"); 
} 
Voile si vous regardez mes posts un peut plus haut vous pouvez voir la structure de ma table.
Pour les boutons de type radio tout marche comme je le souhaite, mais j'ai un problème avec les boutons checkbox ... En effet le résultat s'inscrit dans la base de donnée que si je coche la première case, puis la seconde etc ...
Pour donner un exemple on a 4 checkbox C1 C2 C3 et C4, si je coche C1 & C4, C1 s'enregistre mais pas C4. Si je coche C1 & C2 & C4, C1 & C2 s'enregistre mais pas C4. Si je coche C2 rien s'enregistre.

Voila je vois vraiment pas d'ou sa vient, si vous pouvez m'aider :X
merci :)