Paramètres de fonction

Résolu/Fermé
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012 - 6 juil. 2012 à 13:15
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012 - 6 juil. 2012 à 15:09
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.
A voir également:

13 réponses

Utilisateur anonyme
6 juil. 2012 à 13:25
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 ?
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 13:35
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.
0
Utilisateur anonyme
6 juil. 2012 à 13:43
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 )
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 13:51
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...
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
6 juil. 2012 à 13:54
Et que donne <?php rating_bar("$TOTO", ''); ?> ?!
0
Pourquoi répondre si tu ne le sais pas ?
Inutile, c'est la même chose que <?php rating_bar($TOTO, ''); ?>
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
6 juil. 2012 à 14:41
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 juil. 2012 à 13:54
<?php rating_bar("'".$TOTO."'", ''); ?>

ou bien
<?php rating_bar("'$TOTO'",''); ?>

entre autres possibilités
0
Kafiristanica Messages postés 263 Date d'inscription mardi 12 juin 2012 Statut Membre Dernière intervention 27 août 2012 28
6 juil. 2012 à 13:56
Bonjour,

<?php rating_bar(" ' ".$TOTO." ' ", ''); ?>

peut etre non ?
0
Utilisateur anonyme
6 juil. 2012 à 14:00
Pourquoi peut-être ?
Non, il y a des espaces en trop.
0
Kafiristanica Messages postés 263 Date d'inscription mardi 12 juin 2012 Statut Membre Dernière intervention 27 août 2012 28
6 juil. 2012 à 14:09
ha oui j'ai oublié de les enlever c'etait pour mieux voir ><
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 13:58
ARG!!

mon $TOTO c'est en fait un $cur_post['poster_id']

Ca ne passe pas..
0
mon $TOTO c'est en fait un $cur_post['poster_id']
À donner de mauvaises informations, on récolte de mauvaises réponses.
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 14:00
rating_bar("'".$cur_post['poster_id']."'", '')


- > Donne : Error: You have an error in your SQL syntax;
0
Utilisateur anonyme
6 juil. 2012 à 14:02
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 ?
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 14:10
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..
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 14:10
<?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.'&amp;q='.$id.'&amp;t='.$ip.'&amp;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;
 }
}
?>
0
Utilisateur anonyme
6 juil. 2012 à 14:29
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
0
tribuforex Messages postés 30 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 16 décembre 2012
6 juil. 2012 à 15:09
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.
0