resultat sondage

Répondre
tyros
le 11/06/2009 à 03:25
tyros
bonjour,

y a quelque chose qui cloche avec mon code, mais je n'arrive pas a voir c'est quoi. j'ai pris le code sur ce site et je l'ai adapter a mes besoins.

<?php
$sql = $db->prepare("update vote SET nombre = nombre +1 WHERE reponse = ?");
$sql->execute(array($_POST['reponse']));

$tableau_reponses = array();

$tableau_nb_reponses = array();

$statement = $db->prepare('SELECT reponse, nombre FROM vote');
$statement->execute();


while ($data = $statement->fetch()) {

$tableau_reponses[] = $data['reponse'];
$tableau_nb_reponses[] = $data['nombre'];
}

$nb_reponses_du_sondage = count ($tableau_reponses);

$nb_total_reponse = array_sum ($tableau_nb_reponses);

if ($nb_total_reponse == 0) {
echo 'Aucun vote pour l'instant';
}
else {

for ($i = 0; $i < $nb_reponses_du_sondage; $i++) {

echo $tableau_reponses[$i];

$pourcentage = ($tableau_nb_reponses[$i] * 100) / $nb_total_reponse;

$pourcentage = round ($pourcentage, 1);

echo ' ',$pourcentage,' %<br />';
}
echo '<br /><br />Nombre de votes : ', $nb_total_reponse;
}
?>
Keika
le 11/06/2009 à 03:36
Keika
Qu'est-ce qui cloche ? y a t-il une erreur retournée par PHP ou MySQL ?
Le PHP --> C'est dur !
LA GLOBULE
le 11/06/2009 à 08:30
LA GLOBULE
A priori, la première requete SQL n'est pas bonne, il manque des quotes pour entourer une chaine de caractères :

<?php
$sql = $db->prepare("update vote SET nombre = nombre +1 WHERE reponse = '?'");
?>


Il manque aussi une protetcion de caractères à la ligne 24 :

<?php
echo 'Aucun vote pour l\'instant';
?>


PS : prend l'habitude, d'afficher tes erreurs de syntaxe et les erreurs SQL en phase de développement, ça aide.
Galak_Fayyar
le 11/06/2009 à 16:54
Galak_Fayyar
Yo !
Ligne 38 :
echo '<br /><br />Nombre de votes :' , $nb_total_reponse;


Rajoutes bien le ' après : pour fermer le contenu de ton echo.
Galak_Fayyar
LupusMic
le 11/06/2009 à 22:04
LupusMic
(La Globule) Il n'y a pas besoin de quotes autour du marqueur « ? » dans les prepared statement.

Le code collé dans le premier message fait apparaître clairement une erreur de syntaxe (soit louée la coloration syntaxique). Est-ce que tu utilises un éditeur de texte qui colore ton source ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
tyros
le 12/06/2009 à 01:25
tyros
non j'utilise pas d'editeur qui colore la source.


et php me retourne jamais de message d'erreur, est-ce que ca ce peut que mon hébergeur a programmer le serveur pour que php ne renvoi pas de message d'erreur?
tyros
le 12/06/2009 à 01:29
tyros
merci ca fonctionne.

le problème était cette ligne

[code[
echo 'Aucun vote pour l'instant';
[/code]

remplacer par

echo 'Aucun vote pour l\'instant';


mais je comprends pas pourquoi php ne me donne jamais de message d'erreur.
LupusMic
le 12/06/2009 à 01:35
LupusMic
Il va falloir que tu mettes en place un environnement de développement local.

Tes premiers sources ne seront pas sûrs, il faut que tu les testes en local avant de les publier.

Donc :
1- utilises un éditeur de texte qui permet la coloration syntaxique. Vim, Emacs, Scite, UltraEdit, etc.
2- installes un environnement web local. Je ne sais pas si tu travailles sous Microsoft Windows ou un Linux, mais il existe des solutions pour installer un environnement web sur toutes les plate-formes.

Quand à ton problème initial, effectivement, s'était la quote. Mais comme tu as dû le voir, avec la coloration syntaxique ça saute aux yeux. Alors que sans... c'est invisible !

Bon courage à toi.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 12/06/2009 à 21:25
LupusMic
Moi non plus je n'utilises pas PDO :p mais j'ai utilisé les Statement SQL de MySQL. Mais on a tous le droit de se tromper !
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours