Paramètres de fonction
Résolu
Bonjour,
Mon problème est simple mais je m'arrache les cheveux.. (car je ne trouve pas)
Voici la fonction de base:
function rating_bar($id,$units='',$static='') { ...
Quand je l'appel sur ma page PHP, je fais:
<?php rating_bar('1', ''); ?>
Là, ca marche, $id a une valeur, elle est fixé à 1.
Mais j'aimerai qu'à la place de '1' se soit une autre variable... C'est possible?
Si je mets ca:
<?php rating_bar($TOTO, ''); ?>
Le code génère qu'une seule nouvelle ligne dans ma table SQL nommé id="$TOTO"... Et pas tous les variables de $TOTO.
Merci d'avance pour votre aide, si vous voulez bien prendre le temps de me répondre.
Vincent.
Mon problème est simple mais je m'arrache les cheveux.. (car je ne trouve pas)
Voici la fonction de base:
function rating_bar($id,$units='',$static='') { ...
Quand je l'appel sur ma page PHP, je fais:
<?php rating_bar('1', ''); ?>
Là, ca marche, $id a une valeur, elle est fixé à 1.
Mais j'aimerai qu'à la place de '1' se soit une autre variable... C'est possible?
Si je mets ca:
<?php rating_bar($TOTO, ''); ?>
Le code génère qu'une seule nouvelle ligne dans ma table SQL nommé id="$TOTO"... Et pas tous les variables de $TOTO.
Merci d'avance pour votre aide, si vous voulez bien prendre le temps de me répondre.
Vincent.
13 réponses
-
Tout fonctionne bien avec <?php rating_bar($cur_post['poster_id'], ''); ?>
C'est moi qui faisais n'importe quoi...
UN GRAND MERCI pour votre aide précieuse.
Salutations!
Vincent. -
Déjà), on voit qu'il ne faut pas de ' ' autour de ton $TOTO et que ton code plantera si tu envoies des données avec des apostrophes.
-> retour à la case <?php rating_bar($cur_post['poster_id'], ''); ?>
Par contre, ce qui serait intéressant, c'est le code qui appelle la fonction -
<?php function rating_bar($id,$units='',$static='') { require('_config-rating.php'); // get the db connection info //set some variables $ip = $_SERVER['REMOTE_ADDR']; if (!$units) {$units = 5;} if (!$static) {$static = FALSE;} // get votes, values, ips for the current rating bar $query=mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id' ")or die(" Error: ".mysql_error()); // insert the id in the DB if it doesn't exist already // see: http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/#comment-121 if (mysql_num_rows($query) == 0) { $sql = "INSERT INTO $rating_dbname.$rating_tableName ('id','total_votes', 'total_value', 'used_ips') VALUES ('$id', '0', '0', '')"; $result = mysql_query($sql); } $numbers=mysql_fetch_assoc($query); if ($numbers['total_votes'] < 1) { $count = 0; } else { $count=$numbers['total_votes']; //how many votes total } $current_rating=$numbers['total_value']; //total number of rating added together and stored $tense=($count==1) ? "vote" : "votes"; //plural form votes/vote // determine whether the user has voted, so we know how to draw the ul/li $voted=mysql_num_rows(mysql_query("SELECT used_ips FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id."' ")); // now draw the rating bar $rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth; $rating1 = @number_format($current_rating/$count,1); $rating2 = @number_format($current_rating/$count,2); if ($static == 'static') { $static_rater = array(); $static_rater[] .= "\n".'<div class="ratingblock">'; $static_rater[] .= '<div id="unit_long'.$id.'">'; $static_rater[] .= '<ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">'; $static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>'; $static_rater[] .= '</ul>'; $static_rater[] .= '<p class="static">Note : <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.') <em>This is \'static\'.</em></p>'; $static_rater[] .= '</div>'; $static_rater[] .= '</div>'."\n\n"; return join("\n", $static_rater); } else { $rater =''; $rater.='<div class="ratingblock">'; $rater.='<div id="unit_long'.$id.'">'; $rater.=' <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">'; $rater.=' <li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>'; for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units if(!$voted) { // if the user hasn't yet voted, draw the voting stars $rater.='<li><a href="db.php?j='.$ncount.'&q='.$id.'&t='.$ip.'&c='.$units.'" title="'.$ncount.' sur '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>'; } } $ncount=0; // resets the count $rater.=' </ul>'; $rater.=' <p'; if($voted){ $rater.=' class="voted"'; } $rater.='>Note : <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.')'; $rater.=' </p>'; $rater.='</div>'; $rater.='</div>'; return $rater; } } ?> -
Pourquoi ne donnes-tu pas le code du script ?
Et bien je ne vois pas trop ce que je pourrai donner...
La fonction marche déjàà un autre endroit, mais avec des valeurs fixe, du style :rating_bar('1', '')
La tout ce qu'il me faut c'est que le '1' soit une variable.
Avec <?php $TOTO = $cur_post['poster_id']; rating_bar("'".$TOTO."'", ''); ?>
ca ne marche toujours pas.. -
Si tu as une erreur SQL, c'est que ta requête est mal écrite, c'est un autre problème.
Pourquoi ne donnes-tu pas le code du script ? -
rating_bar("'".$cur_post['poster_id']."'", '')
- > Donne : Error: You have an error in your SQL syntax; -
ARG!!
mon $TOTO c'est en fait un $cur_post['poster_id']
Ca ne passe pas.. -
Bonjour,
<?php rating_bar(" ' ".$TOTO." ' ", ''); ?>
peut etre non ? -
<?php rating_bar("'".$TOTO."'", ''); ?>
ou bien<?php rating_bar("'$TOTO'",''); ?>
entre autres possibilités -
J'ai compris comment résoudre le problème.
Il faut que si $TOTO vaut 5, ca retourne '5' et pas 5
afin d'obtenir<?php rating_bar('5', ''); ?>
et pas<?php rating_bar(5, ''); ?>
sinon c'est mal interprété par la fonction.
Mais comment passer une variable de X à 'X' ?
En faisant ca:<?php rating_bar("'"$TOTO"'", ''); ?>
ca ne marche pas...-
-
-
C'est pas parce que je ne le sais pas, c'est que je n'en suis pas sûr, je me souviens qu'il y a des différences entre les ' et les " en PHP si on utilise le nom d'une variable mais le PHP c'est loin pour moi et que souvent, bon nombre d'erreurs se font à cause de ça.
Donc je réponds car c'est un forum d'entraide et que tu n'es pas le seul autorisé que ça te plaise ou non point barre.
Bref.
-
-
Je n'ai aucune idée de ce que fait ta fonction rating_bar, mais d'après ce que tu décris, la variable $TOTO doit être vide.
Peux-tu montrer ton script (en cachant les mots de passe s'il y en a ) -
Bonjour le père et merci pour ton aide.
Si je mets :<?php rating_bar('$TOTO', ''); ?>
le champ $id dans la table est alors rempli par $TOTO
(Expression... normal)
En revanche, si je mets<?php rating_bar($TOTO, ''); ?>
Une seule ligne est créée et le champ $id dans la table est laissé vide, alors qu'il devrait y avoir création de plusieurs ligne pour toutes les valeurs de $TOTO. -
Bonjour
Attention aux apostrophes autour de $TOTO...
tu es sûr que tu as vraiment essayé<?php rating_bar($TOTO, ''); ?>
Ce ne serait pas plutôt<?php rating_bar('$TOTO', ''); ?>que tu as fait ?