SQL et array()

Résolu
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

J'ai un SQL qui me récupérer des infos dans ma BDD et j'aimerais recupérer c'est info pour construire un tableau de type array()

 $q->query($DB,$sSQL1);
	if ($q->numrows()>1) {
	$row=$q->getrow();
                $valuegraph="";
	 while ($row) {
	$valuegraph=$valuegraph.",".$row[1]; 
	$row=$q->getrow();
	}		 			

} 

$values = array($valuegraph);


Le problème c'est qu'en faiseant comme cela, il va me mettre une "," devant le premier
$row[1]

et si je commence par
$valuegraph="0";
, il va me rajouter une colonne avec la valeur 0.

Comment faire pour lui dire de commencer à mettre une "," à partir du deuxième enregistrement ?

Merci par avance de vos réponses.
A voir également:

10 réponses

JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
Ca y est, je viens de trouver la solution,

Au lieu de vouloir créer un tableau avec
array()
, je l'ai créé avec
explode()
et j'ai enlever les " et la tout fonctionne.

Résumé :
$q->query($DB,$sSQL1);
	if ($q->numrows()>1) {

	$row=$q->getrow();
		$premiere_fois=true;
                $valuegraph="";
		    $labelgraph="";
	 while ($row) {
        if($premiere_fois==true){
             $valuegraph=$valuegraph.$row[1]; 
	       $labelgraph=$labelgraph.$row[0];
             $premiere_fois=false;

        }else{
	     $valuegraph=$valuegraph.",".$row[1]; 
	     $labelgraph=$labelgraph.",".$row[0]; 

        }
	     $row=$q->getrow();
        }
	}


//tableau contenant les valeurs à afficher
$data1=explode(",",$valuegraph);

//tableau contenant les labels associés aux valeurs
$label=explode(",",$labelgraph);



Merci à Sky34gl3 pour son aide.
2
Utilisateur anonyme
 
Salut,
$premiere_fois=true;
$q->query($DB,$sSQL1);
	if ($q->numrows()>1) {
	$row=$q->getrow();
                $valuegraph="";
	 while ($row) {
        if($premiere_fois==true){
             $valuegraph=$valuegraph.$row[1]; 
             $premiere_fois=false;
        }else{
	     $valuegraph=$valuegraph.",".$row[1]; 
        }
	     $row=$q->getrow();
        }
	}

par exemple?
0
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
Merci beaucoup,

Cela marche presque puisqu'il me rajoute un guillemet avant et après les données donc il considère mes données comme une seule ligne.

$q->query($DB,$sSQL1);
	if ($q->numrows()>1) {
	$row=$q->getrow();
		$premiere_fois=true;
                $valuegraph="";
		$labelgraph="";
	 while ($row) {
        if($premiere_fois==true){
             $valuegraph=$valuegraph."'".$row[1]."'"; 
	     $labelgraph=$labelgraph."'".$row[0]."'";
             $premiere_fois=false;

        }else{
	     $valuegraph=$valuegraph.",'".$row[1]."'"; 
	     $labelgraph=$labelgraph.",'".$row[0]."'"; 

        }
	     $row=$q->getrow();
        }
	}

//tableau contenant les valeurs à afficher
$data1=array($valuegraph);

//tableau contenant les labels associés aux valeurs
$label=array($labelgraph);



il m'affiche :
array("'2500.00','2196.80','1045.45','25327.47','11662.84'")

au lieu de
array('2500.00','2196.80','1045.45','25327.47','11662.84')
0
Utilisateur anonyme
 
Les guillemets permettent d'afficher des variables sans concaténations.
Essaie comme ça :
$q->query($DB,$sSQL1);
	if ($q->numrows()>1) {
	$row=$q->getrow();
		$premiere_fois=true;
                $valuegraph="";
		$labelgraph="";
	 while ($row) {
        if($premiere_fois==true){
             $valuegraph=$valuegraph.'\''.$row[1].'\'';­ 
	     $labelgraph=$labelgraph.'\''.$row[0].'\'';­
             $premiere_fois=false;

        }else{
	     $valuegraph=$valuegraph.'\''.$row[1].'\''; 
	     $labelgraph=$labelgraph.',\''.$row[0].'\''­; 

        }
	     $row=$q->getrow();
        }
	}
0

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

Posez votre question
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
J'ai déjà essayé et il me renvoit toujours la même chose, il me rajoute " en début et en fin de
$valuegraph
et de
$labelgraph
Ce qui fait qu'il considère que les 2 éléments correspondent à 1 seul ligne.
0
Utilisateur anonyme
 
Autant pour moi, j'étais pas dans l'essentiel du message :
$i=0;
$q->query($DB,$sSQL1);
	if ($q->numrows()>1) {
	$row=$q->getrow();
		$premiere_fois=true;
                $valuegraph="";
		$labelgraph="";
	 while ($row) {
             $valuegraph[$i]=$row[1];­ 
	     $labelgraph[$i]=$row[0];­
             $i++;
	     $row=$q->getrow();
        }
	}
$maxvalue = count( $valuegraph);
$maxlabel = count( $labelgraph ); 
$i=0;
while( $i < $maxvalue )
{
  echo $maxvalue[$i] . '<br />';
  $i++;
}
$i=0;
while( $i < $maxlabel )
{
  echo $labelgraph[$i] . '<br />';
  $i++;
}
?>
0
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
Le script que tu m'as fourni est intéressant mais il affiche le résultat dans la page.
Dans mon cas, je récupére dynamiquement les infos afin de les afficher dans un graphique,
c'est pourquoi, il faut que je récupére les infos sous la forme
$data=array($data1,$data2,...);
$label=array($label1,$label2,...);


Ceci afin de générer mon graphique.
0
Utilisateur anonyme
 
$i=0;
$q->query($DB,$sSQL1);
	if ($q->numrows()>1) {
	$row=$q->getrow();
		$premiere_fois=true;
                $valuegraph="";
		$labelgraph="";
	 while ($row) {
             $valuegraph[$i]=$row[1];­ 
	     $labelgraph[$i]=$row[0];­
             $i++;
	     $row=$q->getrow();
        }
	}

En t'arrêtant là tu as deux array nommés $valuegraph et $labelgraph. Tu les manipules pareil que la manière que tu veux.

Après j'avais juste fait un travail supplémentaire pour afficher le contenu de tes arrays :).
0
JB_A Messages postés 301 Date d'inscription   Statut Membre Dernière intervention   5
 
Mon problème est que lorsque j'affiche le résultat de l'array gérer comme ceci, cela me renvoie :

array(1) { [0]=> string(51) ""2500.00","2196.80","1045.45","28001.57","11662.84"" }


Alors que si je mets les chiffres en dur, il me renvoie bien :

array(5) { [0]=> string(7) "2500.00" [1]=> string(7) "2196.80" [2]=> string(7) "1045.45" 
[3]=> string(8) "25327.47" [4]=> string(8) "11662.84" } 


Tout simplement parce que dans le premier cas il considère que tous les
$valuegraph[$i]
ne correspond qu'à 1 seule ligne à cause des " de début et de fin qui sont ajoutés alors que dans le deuxième cas, les " sont considérés comme des séparateurs de colonne.
0
Utilisateur anonyme
 
Oui effectivement, bien trouvé :p.
Bravo à toi ^^
0