Rechercher : dans
Par :

SQL et array()

Dernière réponse le 29 jui 2008 à 11:19:49 JB_A, le 28 jui 2008 à 15:22:43 
 Signaler ce message aux modérateurs

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.
Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « SQL et array() » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
Gestion des paramètres SQL VoirSQL présente un certain nombre de paramètres au niveau d'Oracle qu'il est possible de visualiser à travers la commande : SHOW ALL Pour modifier la valeur d'un paramètre il suffit d'utiliser la commande : SET NOM_PARAM VALEUR
Sauvegarde automatique d'une BDD sous SQL EXPRESS 2005 VoirSi vous vous voulez automatiser une sauvegarde d'une base de données sous SQL server express, il existe une solution simple grâce à un fichier .bat. Créez un nouveau fichier texte. Ce fichier doit contenir les informations suivantes: SET...
Télécharger MS SQL Migrate VoirPour des raisons pratique ou quasiment professionnel, il est nécessaire de convertir des bases de données entre différents formats. Le principal, c’est qu’il n’y ait aucune perte de donnée lors de la conversion. MS SQL Migrate est...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

1

Sky34gl3, le 28 jui 2008 à 16:36:09

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?

Répondre à Sky34gl3

2

JB_A, le 28 jui 2008 à 18:25:05

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')

Répondre à JB_A

3

Sky34gl3, le 28 jui 2008 à 19:34:11

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();
        }
	}

Répondre à Sky34gl3

4

JB_A, le 28 jui 2008 à 19:41:42

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.

Répondre à JB_A

5

Sky34gl3, le 28 jui 2008 à 20:04:50

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++;
}
?>

Répondre à Sky34gl3

6

JB_A, le 28 jui 2008 à 20:43:30

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.

Répondre à JB_A

7

Sky34gl3, le 28 jui 2008 à 20:52:35

$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 :).

Répondre à Sky34gl3

8

JB_A, le 28 jui 2008 à 23:44:36

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.

Répondre à JB_A

9

JB_A, le 29 jui 2008 à 00:10:41
  • +1

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.

Répondre à JB_A

10

 Sky34gl3, le 29 jui 2008 à 11:19:49

Oui effectivement, bien trouvé :p.
Bravo à toi ^^

Répondre à Sky34gl3