Just nu i M3-nätverket
Gå till innehåll
menJada1

SQl till $vLabels = array('Jan','Feb');

Rekommendera Poster

Har nu letat på alla forum inklusive denna. Lag inlägg på en befinlig tråd men inte hittat något svar. Är desperat behov av hjälp.

 

Skall använda mig av ett diagram script men skall få datan hämtad från en databas. problemet är att variablen ser ut som fäljande

 

$vLabels = [color="#0000ff"]array[/color]('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

 

Kan nogon assistera mig i detta problem. Mina kunskaper är lagom men denna lilla nöt knäcker jag inte.

 

Scriptet i sin helhet.

 

$vCht4 = [color="#0000ff"]array[/color](5,7,3,15,7,8,2,2,2,11,22,3);
$vLabels = [color="#0000ff"]array[/color]('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

$ochart = [color="#0000ff"]new[/color] chart(500,260,10, '[color="#006400"]#eeeeee');[/color]
$ochart->setTitle("Results Chart","[color="#006400"]#000000",7);[/color]
$ochart->setPlotArea(SOLID,"[color="#006400"]#444444", '#dddddd');[/color]
$ochart->setFormat(0,',','.');
$ochart->addSeries($vCht4,'line','Results', SOLID,'[color="#006400"]#000000', '#0000ff');[/color]
$ochart->setXAxis('[color="#006400"]#000000', SOLID, 5, "Results");[/color]
$ochart->setYAxis('[color="#006400"]#000000', SOLID, 2, "");[/color]
$ochart->setLabels($vLabels, '[color="#006400"]#000000', 1, VERTICAL);[/color]
$ochart->setGrid("[color="#006400"]#bbbbbb", DASHED, "#bbbbbb", DOTTED); [/color]
$ochart->plot('');

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Givetvis, men frågan är inga problem hur får jag ut så att den fråge varibaln blir som följande.

 

$vCht4 = [color="#0000ff"]array[/color](5,7,3,15,7,8,2,2,2,11,22,3);

 

Det rä det som är kruxet

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Givetvis, men frågan är inga problem

Jag tror du missuppfattade Anjuna Moon. Om någon ska kunna svara på din fråga skulle det underlätta om du ställer den. Vad var det du ville att vi skulle hjälpa dig med?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ok det tackar jag för men hur skulle det se ut. Har provat allt men får inte fram någon data. Så jag misstänker att jag gör något kopiöst fel.

 

Hittade detta förslag men det funkade ju givetvis inte

 

$query4 = [color="#ff0000"]mysql_query[/color]("SELECT data FROM tabell WHERE ID = '14'");
[color="#0000ff"]while[/color]($row = mysql_fetch_[color="#0000ff"]array[/color]($query4, MYSQL_ASSOC)) {
$vCht4[] = [color="#ff0000"]number_format[/color]($row[impressions], 0, '.', '');

 

[inlägget ändrat 2004-07-07 23:14:02 av menJada]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Kan inte säga hur syntaxen ser ut i PHP, men när du öppnat ditt recordset så ger arrRecords=RecSet.GetRows() en x-dimensionell array där första dimensionen är radnummer och andra kolumnnumret. Dvs, arrRecords(0)(0) första kolumnen i första raden, arrRecords(3)(5) 6:e kolumnen i 4:e raden.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Det där var mycket överkurs för mig.

 

Om du har lärt dig tänket kring recordsets så är det inte så komplicerat. Se följande resultat från en påhittad query, från en tabell med två kolumner:

 

Kol1 Kol2

----- -----

1 a

2 b

3 c

 

Rad 1 innehåller 2 kolumner. Kolumn 1 innehåller värdet "1" och kolumn 2 innehåller värdet "a"

 

Detta mostvarar i den flerdimensionella arrayen arr(0)(0) och arr(0)(1)

Den första parentesens värde är alltså radnumret minus 1. Den andra parentesen innehåller kolumnnumret minus 1

 

Kolumnnummer avgörs hur du skriver din SQL-fråga:

SELECT Kol1, Kol2 .... osv.

ger att Kol1 blir första kolumnen (i arrayen med värdet 0 enligt ovan) och Kol2 blir andra kolumnen osv.

 

Hoppas det hjälpte lite mer.

 

AnjunaMoon

____________________________________________________________

/* There is nothing more permanent than a temporary solution... */

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Om jag nu förstått det hela rätt och fortsätter på Anjuna Moons inlägg.

 

om 'data' i din query bara innehåller 1 värde och du använder MYSQL_ASSOC så ser varje rad i ditt svar ut som så här: array(label->data) och följdaktligen blir $vCht4 som följer:

 

array(array(label=>data),array(label=>data), ...)

 

för att nå t ex första 'data' värdet måste du ange det som:

 

$vCht4[0][label] == data

 

och för att löpa igenom och hämta alla data nåt sånt här:

 

foreach($vCht4 as $label=>$data) {

// vad du nu ska göra med $data

}

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Diagram scriptet gör en foreach på varabeln

 

$vCht4 = array(5,7,3,15,7,8,2,2,2,11,22,3);

 

Jag har fått felmeddelanden när jag försökt att lösa detta själv dock utan resultat. Men som du beskriver det så blir det ju 2st värden. Jag vill bara ha in ett värde från flera rader efter varandra som ovan.

 

Och jag fattar forfarande inte. Vilket jag är hemst ledsen för.

 

Och MYSQL_ASSOC är jag inte ens säker på om jag skall använda. Hittade en lösning från annat forum som jag inte lyckades få igång

 

Detta är vad jag vill göra:

 

$query4 = [color="#ff0000"]mysql_query[/color]("SELECT [color="#ff0000"]date[/color] FROM statistik ORDER BY [color="#ff0000"]date[/color] DESC");
[color="#0000ff"]while[/color]($row = mysql_fetch_[color="#0000ff"]array[/color]($query4))
{

$vLabels = [color="#0000ff"]array[/color]($row[dates]);
}

Och jag vill få datan att bli

$vLabels = [color="#0000ff"]array[/color](5,7,3,15,7,8,2,2,2,11,22,3);

 

Sedan som sagt gör scriptet en foreach och populerar digrammet med Labels.

 

??????????????????????????????

Vad göra, fattar ingen ting och det är säker det lättaste i världen :(

 

/JB

 

[inlägget ändrat 2004-07-08 21:45:51 av menJada]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Okidoki, såg att jag skrivit lite knas i mitt förra inlägg åxå. Men den kod du postade nu ska nog gå att fixa till:

$query4 = [color="#ff0000"]mysql_query[/color]("SELECT [color="#ff0000"]date[/color] FROM statistik ORDER BY [color="#ff0000"]date[/color] DESC");
[color="#0000ff"]while[/color]($row = mysql_fetch_[color="#0000ff"]array[/color]($query4))
{

$vLabels[] = [color="#0000ff"]array[/color]($row[[color="#ff0000"]date[/color]]);
}

 

Det som är ändrat är [parentesen] efter vLabels som gör att värdena sparas ackumulerat i vLabels och får ett numeriskt index. Det andra är att jag ändrade $row[dates] till $row[date] (Om det är så att du klistrat in koden rätt av från ditt script så har $vLabels varit tom, om det är så att du har skrivit 'date' i scriptet har $vLabels bara innehållit värdet array(3) när du kommit till slutet av while-loopen.

 

 

Och då ska till slut bli:

 

$vLabels = array(5,7,3,15,7,8,2,2,2,11,22,3);

 

(Hoppas jag)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tack, du är en klippa! Nu fungerar bilden i alla fall. Men det står ARRAY i istället för som det skall vara datum??

 

[color="#ff0000"]header[/color]("Content-Type: image/png");
[color="#0000ff"]require[/color]("./panachart.[color="#0000ff"]php[/color]");

[color="#0000ff"]include[/color]("variablar.[color="#0000ff"]php[/color]");
    $query4 = [color="#ff0000"]mysql_query[/color]("SELECT [color="#ff0000"]date[/color] FROM statistik WHERE campagnID = 14 ORDER BY [color="#ff0000"]date[/color] DESC LIMIT 10");
    [color="#0000ff"]while[/color]($row = mysql_fetch_[color="#0000ff"]array[/color]($query4)){

    $vLabels[] = [color="#0000ff"]array[/color]($row[[color="#ff0000"]date[/color]]);
}
   	$vCht4 = [color="#0000ff"]array[/color](1,2,3,4,5,6);

$ochart = [color="#0000ff"]new[/color] chart(450,130,5, '[color="#006400"]#eeeeee');[/color]
$ochart->setTitle("AVAd Stats","[color="#006400"]#000000",2);[/color]
$ochart->setPlotArea(SOLID,"[color="#006400"]#444444", '#dddddd');[/color]
$ochart->setFormat(0,',','.');
$ochart->addSeries($vCht4,'line','Series1', SOLID,'[color="#006400"]#FF0000', '#FF0000');[/color]
$ochart->setYAxis('[color="#006400"]#000000', SOLID, 2, "");[/color]
$ochart->setLabels($vLabels, '[color="#006400"]#000000', 1, VERTICAL);[/color]
$ochart->setGrid("[color="#006400"]#bbbbbb", DASHED, "#bbbbbb", DOTTED);		[/color]
$ochart->plot('');

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Lätt fixat.

 

Raden:

$vLabels[] = array($row[date]);

ändrar du till:

$vLabels[] = $row[date];

 

Så ska det funka! (Jag håller tummarna för det i alla fall)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

TACK!!!!!!!!!!!!!!!!!!!

 

Du är en klippa men det är riktigt pinsamt att jag strandat på detta.

Har hållit på ett tag med detta men fått tunnelseende.

 

Än en gång TACK!

 

/JB

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Tack själv för poängen :)

 

Det var jag som gav dig poängen =)

Tyckte du hade lagt så mkt tid på tråden att du var värd ett par poäng.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Godag nu var man här igen och strular till det för omvärlden.

Fler array problem.

 

Nu vill jag göra en beräkning av sql resultat och få in det i en ny array, men får som vanligt fel.

 

Detta har jag lyckats med:

 

$query4 = [color="#ff0000"]mysql_query[/color]("SELECT SUM(impressions) [color="#0000ff"]as[/color] SumImpressions, SUM(spela) [color="#0000ff"]as[/color] SumSpela, SUM(klick) [color="#0000ff"]as[/color] SumKlick, [color="#ff0000"]date[/color] FROM statistik GROUP BY [color="#ff0000"]date[/color] ORDER BY id DESC LIMIT 0,20");
[color="#0000ff"]while[/color]($row = mysql_fetch_[color="#0000ff"]array[/color]($query4)){
$procent_spel = $row[sumSpela] / $row[sumImpressions] *100;
$procent_click = $row[sumKlick] / $row[sumImpressions] *100;
$sqlData1 = [color="#0000ff"]array[/color]_reverse("$procent_spel");[color="#006400"]// Reverces the array[/color]
[color="#0000ff"]echo[/color] "$sqlData1 ";
[color="#0000ff"]echo[/color] "$procent_spel ";

 

felet är att det inte verkar vara en array. Då jag skall reversa den får jag meddelande:

 

Warning: array_reverse(): The argument should be an array in /home/a/adstat/www/1.4/admin/diagrams/test.php on line 7

 

På den sita echo delen får jag fram mina värden??

1.0412514344386

OSV.

 

Tacksam för hjälp

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

$sqlData1 = [color="#0000ff"]array[/color]_reverse("$procent_spel");[color="#006400"]// Reverces the array[/color]

 

felet är att det inte verkar vara en array.

Korrekt, sånt som står inom citationstecken kallas strängar. Om $procent_spel är en array så skickar du in den genom att säga:

$sqlData1 = [color="#0000ff"]array[/color]_reverse($procent_spel);[color="#006400"]// Reverces the array[/color]

 

Dessutom är det mycket bättre att ställa nya frågor i en ny tråd istället för att fylla på en gammal, annars riskerar man att förlora svar på att nytillkomna läsare inte orkar sätta sig in i hela problematiken (som ju faktiskt är rätt ickerelaterad till problemet).

 

På den sita echo delen får jag fram mina värden??

Det beror på att echo tycker det är helt ok att få en sträng, då slipper den göra om arrayen till en sträng själv (vilket är det du gör när du sätter variabeln inom citationstecken).

[inlägget ändrat 2004-07-19 21:45:28 av fhe]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

OK, ledsen för det. Men ibland har jag blivit tillsagd att forsätta på trådar så jag gjorde det.

 

Jag har nu ändrat lite i koden, men problem kvartår.

 

include("variablar.php");

$query4 = mysql_query("SELECT SUM(impressions) AS SumImpressions, SUM(spela) AS SumSpela, SUM(klick) AS SumKlick, date FROM statistik GROUP BY date ORDER BY id DESC LIMIT 0,20");

while($row = mysql_fetch_array($query4)){

$procent_spel[] = $row[sumSpela] / $row[sumImpressions] *100;

$sqlData1 = array_reverse($procent_spel);// Reverces the array

echo "$sqlData1 ";;

}

 

Denna skriver ut.

 

Array Array Array Array Array Array Array Array Array Array Array

 

verkar som jag inte får till:

 

$procent_spel[] = $row[sumSpela] / $row[sumImpressions] *100;

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
verkar som jag inte får till:

 

$procent_spel[] = $row[sumSpela] / $row[sumImpressions] *100;

mellan [] i $row[sumSpela] ska det stå en sträng eller ett tal som indexerar dig in i $row.

Förslagsvis:

$procent_spel[] = $row['SumSpela'] / $row['SumImpressions'] *100;

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

OK provade det. Får nu i alla fall rätt LIMIT men det står forfarande

 

ArrayArrayArray

 

 

[color="#0000ff"]include[/color]("variablar.[color="#0000ff"]php[/color]");
$query4 = [color="#ff0000"]mysql_query[/color]("SELECT SUM(impressions) [color="#0000ff"]as[/color] SumImpressions, SUM(spela) [color="#0000ff"]as[/color] SumSpela, SUM(klick) [color="#0000ff"]as[/color] SumKlick, [color="#ff0000"]date[/color] FROM statistik GROUP BY [color="#ff0000"]date[/color] ORDER BY id DESC LIMIT 0,20");
[color="#0000ff"]while[/color]($row = mysql_fetch_[color="#0000ff"]array[/color]($query4)){
$procent_spel[] = $row['SumSpela'] / $row['SumImpressions'] *100;
$sqlData1 = [color="#0000ff"]array[/color]_reverse($procent_spel);[color="#006400"]// Reverces the array[/color]
[color="#0000ff"]echo[/color] "$sqlData1 ";;
}

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Sluta använda arrayen som om den vore en sträng. Börja med att ta bort echo och skriva ut arrayen med "print_r($sqlData1);" istället. Om det är en array kommer resultatet att bli betydligt trevligare (lägger du dessutom ett <pre> resp. </pre> före och efter blir det snyggare om det är en html-sida).

 

ex.

[color="#0000ff"]echo[/color] "<pre>";
[color="#0000ff"]print[/color]_r($sqlData1);
[color="#0000ff"]echo[/color] "</pre>";

 

Om du envist vill fortsätta att använda echo och betrakta arrayen som en sträng så får du helt göra om den till en sträng först med:

[color="#0000ff"]echo[/color] [color="#ff0000"]implode[/color](",", $sqlData1);

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...