mon echo ne s'affiche pas !!!

Eléphanteau du PHP | 23 Messages

08 nov. 2010, 14:41

bonjour j'ai un problème d'affichage d'un echo le echo en question correspond à du texte inséré en fonction de si le visiteur a déjà voté (grâce à l'ip) voici le code php :

Code : Tout sélectionner

<?php // fonction recuperation de l'ip du visiteur function get_ip(){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif(isset($_SERVER['HTTP_CLIENT_IP'])){ $ip = $_SERVER['HTTP_CLIENT_IP'];} else{ $ip = $_SERVER['REMOTE_ADDR'];} return $ip;}$ip = get_ip(); // fin de fonction get_ip $IDgetted_projet = "-1"; if (isset($_GET['ID'])) { $IDgetted_projet = $_GET['ID']; } // fonction de récupération de la moyenne pour le projet $notemoyenne = "SELECT ROUND(AVG(note)) AS moyenne FROM $rater_dbname.$rater_tableName WHERE IDparentnote='$IDgetted_projet'"; // envoi de la requête $req7 = mysql_query($notemoyenne) or die('Erreur SQL !<br>'.$notemoyenne.'<br>'.mysql_error()); while($data7 = mysql_fetch_assoc($req7)) { // fonction de récupération du nombre de votes $numbervotes = "SELECT COUNT(note) AS nbvotes FROM $rater_dbname.$rater_tableName WHERE IDparentnote='$IDgetted_projet'"; // envoi de la requête $req3 = mysql_query($numbervotes) or die('Erreur SQL !<br>'.$numbervotes.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data3 = mysql_fetch_assoc($req3)) {// on affiche les informations demandées // fonction afficher la note que vous avez donné au projet si vous avez déjà voté $currentvoted = "SELECT note FROM $rater_dbname.$rater_tableName WHERE IP='$ip' AND IDparentnote='$IDgetted_projet'"; // envoi de la requête $req5 = mysql_query($currentvoted) or die('Erreur SQL !<br>'.$currentvoted.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data5 = mysql_fetch_assoc($req5)) {// on affiche les informations demandées // fonction pour savoir si le visiteur a déjà voté $iphashevoted = "SELECT COUNT(IP) AS Ips FROM $rater_dbname.$rater_tableName WHERE IP='$ip' AND IDparentnote='$IDgetted_projet'"; // envoi de la requête $req4 = mysql_query($iphashevoted) or die('Erreur SQL !<br>'.$iphashevoted.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data4 = mysql_fetch_assoc($req4)) {// on affiche les informations demandées if ($data4['Ips'] > 0) { echo '<span id="yourvote">votre note : <font color="#ff9900">'.$data5['note'].'/10</font></span> <span id="changenote">Modifier ma note -></span><p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> '.$data7['moyenne'].' &frasl;10 </font>(<font color="#784e00">'.$data3['nbvotes'].'</font><font size="-1"> votes</font>)</p>';} else { echo '<p id="clicforvote">Cliquez ici pour donner une note à ce projet -></p><p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> '.$data7['moyenne'].' &frasl;10 </font>(<font color="#784e00">'.$data3['nbvotes'].'</font><font size="-1"> votes</font>)</p>';} } } } } ?>
le bloc qui ne s'affiche pas (alors que la condition est remplie vis à vis de la BD) est celui-ci :

Code : Tout sélectionner

echo '<p id="clicforvote">Cliquez ici pour donner une note à ce projet -></p><p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> '.$data7['moyenne'].' &frasl;10 </font>(<font color="#784e00">'.$data3['nbvotes'].'</font><font size="-1"> votes</font>)</p>';}
Modifié en dernier par Lefebvresdesigns le 08 nov. 2010, 15:19, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

08 nov. 2010, 15:00

Un peu de coloration syntaxique:
echo 'bjr'/*'<p id="clicforvote">Cliquez ici pour donner une note à ce projet -></p><p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> '.$data7['moyenne'].' &frasl;10 </font>(<font color="#784e00">'.$data3['nbvotes'].'</font><font size="-1"> votes</font>)</p>'*/;}
Si c'est 'bjr' qui s'affiche, c'est normal, le reste est en commentaire.

Sinon le code est indigeste au possible, aucune indentation, et commentaire à travers le tout.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 23 Messages

08 nov. 2010, 15:20

Si c'est 'bjr' qui s'affiche, c'est normal, le reste est en commentaire.
euh je m'éttais trompé j'ai rectifié c'était juste pour mettre en commentaire ce que je voulais afficher pour voir si ce n'était pas dû aux styles et ce n'est pas le cas car le bjr ne s'affichait pas.

toutefois mon problème n'est toujours pas résolu

Vous pouvez apercevoir la page ici (utilisez firebug car clic droit désactivé) :
http://lefebvresbook.monespace.net/info ... .php?ID=69
Modifié en dernier par Lefebvresdesigns le 07 juin 2011, 11:25, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

08 nov. 2010, 16:48

Voilà pour l'indentation et un peu de lisibilité : (merci vim et ton auto-indent..)

Quatre boucles imbriquées, moi j'abandonne.
<?php
// fonction recuperation de l'ip du visiteur
function get_ip(){
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}
    elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];}
    else{ $ip = $_SERVER['REMOTE_ADDR'];}
    return $ip;
    }

$ip = get_ip();
// fin de fonction get_ip

$IDgetted_projet = "-1";
if (isset($_GET['ID'])) {
     $IDgetted_projet = $_GET['ID'];
     }

// fonction de récupération de la moyenne pour le projet
$notemoyenne = "SELECT ROUND(AVG(note)) AS moyenne FROM $rater_dbname.$rater_tableName WHERE IDparentnote='$IDgetted_projet'";

// envoi de la requête
$req7 = mysql_query($notemoyenne) or die('Erreur SQL !<br>'.$notemoyenne.'<br>'.mysql_error());

while($data7 = mysql_fetch_assoc($req7)) {
    // fonction de récupération du nombre de votes
    $numbervotes = "SELECT COUNT(note) AS nbvotes FROM $rater_dbname.$rater_tableName WHERE IDparentnote='$IDgetted_projet'";
    // envoi de la requête
    $req3 = mysql_query($numbervotes) or die('Erreur SQL !<br>'.$numbervotes.'<br>'.mysql_error());
    // on fait une boucle qui va faire un tour pour chaque enregistrement

    while($data3 = mysql_fetch_assoc($req3)) {
        // on affiche les informations demandées
        // fonction afficher la note que vous avez donné au projet si vous avez déjà voté
        $currentvoted = "SELECT note FROM $rater_dbname.$rater_tableName WHERE IP='$ip' AND IDparentnote='$IDgetted_projet'";
        // envoi de la requête
        $req5 = mysql_query($currentvoted) or die('Erreur SQL !<br>'.$currentvoted.'<br>'.mysql_error());
        // on fait une boucle qui va faire un tour pour chaque enregistrement

        while($data5 = mysql_fetch_assoc($req5)) {
            // on affiche les informations demandées
            // fonction pour savoir si le visiteur a déjà voté
            $iphashevoted = "SELECT COUNT(IP) AS Ips FROM $rater_dbname.$rater_tableName WHERE IP='$ip' AND IDparentnote='$IDgetted_projet'";
            // envoi de la requête
            $req4 = mysql_query($iphashevoted) or die('Erreur SQL !<br>'.$iphashevoted.'<br>'.mysql_error());
            // on fait une boucle qui va faire un tour pour chaque enregistrement
            while($data4 = mysql_fetch_assoc($req4)) {
                // on affiche les informations demandées
                if ($data4['Ips'] > 0) {
                    echo '<span id="yourvote">votre note : <font color="#ff9900">'.$data5['note'].'/10</font></span> <span id="changenote">Modifier ma note -></span><p id="blocvotemoyenne">Note mo
                else {
                    echo '<p id="clicforvote">Cliquez ici pour donner une note à ce projet -></p><p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> '.$data7['moyenne'].' &frasl;10 </font
            }                                                                                                                                                                                       
        }
    }
}
?>  
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 5462 Messages

08 nov. 2010, 16:52

en effet ca pique :shock:
et vive les jointures...

Eléphanteau du PHP | 23 Messages

08 nov. 2010, 16:54

PTDR ! nan mais sérieux ça marchait hier kan j'ai commencé la dernière bouclé et après ça a beugué

ha oui je précise : en local lorsqu'il y a bien un vote déjà enregistré à mon ip à savoir 127.0.0.1 le bloc affiche bien mon vote, un lien pour modifier la note et la moyenne !

Image

sinon tu fais comment pour afficher le code en couleur comme t'as fais ?

Eléphanteau du PHP | 23 Messages

08 nov. 2010, 18:01

au pire expliquez moi comment vous aurriez procédé dans mon cas pour afficher les données en fonction de si le visiteur a déjà voté (avec l'adresse ip)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 nov. 2010, 20:36

salut,

pour le code en couleur c'est la balise ...
 (c'est dans la barre au dessus de la zone de saisie de texte). 

tu peut faire une seule requete du style 
[php]
<?php
$sql = 'select count(IP) as Ips, count(note) as nbvote, note, round(avg(note)) FROM '.mysql_real_escape_string($rater_dbname.$rater_tableName) .'
WHERE IP=\''.mysql_real_escape_string($ip).'\' AND IDparentnote='.mysql_real_escape_string($IDgetted_projet);
?>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

08 nov. 2010, 21:33

salut,

pour le code en couleur c'est la balise ...
 (c'est dans la barre au dessus de la zone de saisie de texte). 

tu peut faire une seule requete du style 
[php]
<?php
$sql = 'select count(IP) as Ips, count(note) as nbvote, note, round(avg(note)) FROM '.mysql_real_escape_string($rater_dbname.$rater_tableName) .'
WHERE IP=\''.mysql_real_escape_string($ip).'\' AND IDparentnote='.mysql_real_escape_string($IDgetted_projet);
?>
@+
sauf que là il va me prendre la moyenne des notes que pour l'ip du visiteur

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 nov. 2010, 22:33

au pire tu fait une sous requete (si mysql >4.0) => http://dev.mysql.com/doc/refman/5.0/fr/ ... eries.html

par exemple
<?php
$sql = 'select count(IP) as Ips, count(note) as nbvote, note, (select round(avg(note)) FROM '.mysql_real_escape_string($rater_dbname.$rater_tableName) .' where IDparentnote='.mysql_real_escape_string($IDgetted_projet).') as moyenne FROM '.mysql_real_escape_string($rater_dbname.$rater_tableName) .'
WHERE IP=\''.mysql_real_escape_string($ip).'\' AND IDparentnote='.mysql_real_escape_string($IDgetted_projet); ?>

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

09 nov. 2010, 00:43

Erreur SQL !
SELECT count(IP) AS Ips, count(note) AS nbvote, note, (SELECT ROUND(AVG(note)) FROM '.mysql_real_escape_string(portfolio2.notesinfo).' WHERE IDparentnote='.mysql_real_escape_string(1).') AS moyenne FROM '.mysql_real_escape_string(portfolio2.notesinfo).' WHERE IP=\''.mysql_real_escape_string(127.0.0.1).'\' AND IDparentnote='.mysql_real_escape_string(1).'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''.mysql_real_escape_string(portfolio2.notesinfo).' WHERE IDparentnote='.mysql_re' at line 1

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 nov. 2010, 01:10

vue la requête c'est clair tu ne fait pas de concaténation :/

a tu essayé le code que je t'ai fournis ou un autre ?

@
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

12 nov. 2010, 18:00

vue la requête c'est clair tu ne fait pas de concaténation :/

a tu essayé le code que je t'ai fournis ou un autre ?

@
c'est le code que tu m'a donné c'est écris real escape string

Eléphanteau du PHP | 23 Messages

28 nov. 2010, 19:07

J'ai trouvé la solution ! voilà le code

Code : Tout sélectionner

<?php // fonction recuperation de l'ip du visiteur function get_ip(){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif(isset($_SERVER['HTTP_CLIENT_IP'])){ $ip = $_SERVER['HTTP_CLIENT_IP'];} else{ $ip = $_SERVER['REMOTE_ADDR'];} return $ip;}$ip = get_ip(); // fin de fonction get_ip $IDgetted_projet = "-1"; if (isset($_GET['ID'])) { $IDgetted_projet = $_GET['ID']; } // fonction de récupération de la moyenne pour le projet $notemoyenne = "SELECT ROUND(AVG(note)) AS moyenne FROM $rater_dbname.$rater_tableName WHERE IDparentnote='$IDgetted_projet'"; // envoi de la requête $req2 = mysql_query($notemoyenne) or die('Erreur SQL !<br>'.$notemoyenne.'<br>'.mysql_error()); $data2 = mysql_fetch_assoc($req2); // fonction de récupération du nombre de votes $numbervotes = "SELECT COUNT(note) AS nbvotes FROM $rater_dbname.$rater_tableName WHERE IDparentnote='$IDgetted_projet'"; // envoi de la requête $req3 = mysql_query($numbervotes) or die('Erreur SQL !<br>'.$numbervotes.'<br>'.mysql_error()); $data3 = mysql_fetch_assoc($req3); // fonction afficher la note que vous avez donné au projet si vous avez déjà voté $currentvoted = "SELECT note FROM $rater_dbname.$rater_tableName WHERE IP='$ip' AND IDparentnote='$IDgetted_projet'"; // envoi de la requête $req4 = mysql_query($currentvoted) or die('Erreur SQL !<br>'.$currentvoted.'<br>'.mysql_error()); $data4 = mysql_fetch_assoc($req4); $nbcurrentvote = "SELECT COUNT(note) FROM $rater_dbname.$rater_tableName WHERE IP='$ip' AND IDparentnote='$IDgetted_projet'"; $req5 = mysql_query($nbcurrentvote) or die('Erreur SQL !<br>'.$nbcurrentvote.'<br>'.mysql_error()); $data5 = mysql_fetch_assoc($req5); // fin de fonction pour savoir si le visiteur a déjà voté ?> <?php if ($data5['COUNT(note)'] == 0){ // Show if recordset not empty ?> <div id="bottom-blocvote"> <p id="clicforvote">Cliquez ici pour donner une note à ce projet -></p> <p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> <?php echo $data2['moyenne']; ?> &frasl;10 </font>(<font color="#784e00"><?php echo $data3['nbvotes']; ?></font><font size="-1"> votes</font>)</p> </div> <?php } // Show if recordset not empty ?> <?php if ($data5['COUNT(note)'] == 1){ // Show if recordset not empty ?> <div id="bottom-blocvote"> <span id="yourvote">votre note : <font color="#ff9900"><?php echo $data4['note']; ?>/10</font></span> <span id="changenote">Modifier ma note -></span> <p id="blocvotemoyenne">Note moyenne :<font color="#ff9900"> <?php echo $data2['moyenne']; ?> &frasl;10 </font>(<font color="#784e00"><?php echo $data3['nbvotes']; ?></font><font size="-1"> votes</font>)</p> </div> <?php } // Show if recordset not empty ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 nov. 2010, 19:15

très bien ajoute le tag résolu stp ;)

@+
Il en faut peu pour être heureux ......