Paramètres de fonction

Résolu
tribuforex Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -  
tribuforex Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   143
 
Et que donne <?php rating_bar("$TOTO", ''); ?> ?!
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention   143
 
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
 
<?php rating_bar("'".$TOTO."'", ''); ?>

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

entre autres possibilités
0
Kafiristanica Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour,

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

peut etre non ?
0
Utilisateur anonyme
 
Pourquoi peut-être ?
Non, il y a des espaces en trop.
0
Kafiristanica Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   28
 
ha oui j'ai oublié de les enlever c'etait pour mieux voir ><
0
tribuforex Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
 
ARG!!

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

Ca ne passe pas..
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
rating_bar("'".$cur_post['poster_id']."'", '')


- > Donne : Error: You have an error in your SQL syntax;
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
<?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
 
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   Statut Membre Dernière intervention  
 
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