Posez votre question Signaler

SQL et array() [Résolu]

JB_A 277Messages postés 19 juin 2008Date d'inscription 24 novembre 2010Dernière intervention - Dernière réponse le 29 juil. 2008 à 11:19
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.
Lire la suite 

SQL et array() »

10 réponses
Réponse
+2
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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?
Ajouter un commentaire
Réponse
+0
moins plus
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')
Ajouter un commentaire
Réponse
+0
moins plus
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();
        }
	}
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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++;
}
?>
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
$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 :).
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
Oui effectivement, bien trouvé :p.
Bravo à toi ^^
Ajouter un commentaire
Ce document intitulé « SQL et array() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook