Variabelen in een Array
Ik heb een array script waarin drie variabelen geprint moeten worden. Deze variabelen komen uit een database. Afhangkelijk van de querry krijg je dus een andere uitkomst bij de array.
Script:
$data = array($VAR1, $VAR2, VAR3);
Maar dit werkt dus niet. $VAR1 tm 3 staan voor een cijfer wat uit de database word gehaald. Er komt dus bijvoorbeeld dit uit:
$data = array(11, 25, 8);
Maar dat gebeurt niet. Weten jullie hoe ik mijn Variablen als invoer voor mijn array krijg? Ik heb de array namelijk wel nodig, of kan de variable $data ook maken met alleen de $VAR1 $VAR2 en $VAR3? Als dat ook kan dan hoor ik het graag.
Alvast bedankt... :)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$teller=1;
while($data=mysql_fetch_array($sql)){
$data[$teller]=$data['kolom'];
$teller++;
}
?>
$teller=1;
while($data=mysql_fetch_array($sql)){
$data[$teller]=$data['kolom'];
$teller++;
}
?>
$data[1] is dan je $var1 uit je uitleg, $data[2] is dan $var2 uit je uitleg enzovoorts..
uiteindelijk moet dat toch weer worden:
$data = array($data1, $data2, $data3 );
Zodat er dus zoiets uitkomt:
$data = array(11, 25, 8);
Ik heb al drievariabelen uit de database, deze staan gelijk aan 3 verschillende rijen in een database.
$VAR1 = $row['blauw'];
$VAR2 = $row['geel'];
$VAR3 = $row['rood'];
De cijfers die in die rijen staan zijn hoeveelheden van die kleur. en moeten dus achter elkaar in de array komen te staan:
$data = array(11, 25, 8);
Is dit mogelijk?
$data[1'];
$data['2'];
$data['3'];
En ja 't is mogelijk.
$data = array($row['rood'], $row['blauw'], $row['geel']);
Verder nog een tip: gebruik logische veriable namen. VAR1, 2 en 3 is niet logisch ;) .
Ik zou 't script van robbert btw zo schrijven:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$data = array();
while($data=mysql_fetch_array($sql))
{
$data[] = $data['kolom'];
}
?>
$data = array();
while($data=mysql_fetch_array($sql))
{
$data[] = $data['kolom'];
}
?>
Wat 't nut van dit script is weet ik niet aangezien je eigenlijk de array kopieert alleen neem je de key's niet meer :-/ . En daar is vast ook een standaard functie voor.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Zelf ben ik deze nog tegen gekomen:
$data1[]=$row['blauw'];
$data2[]=$row['geel'];
$data3[]=$row['rood'];
$data[]=array_merge($data1, $data2, $data3 );
echo var_dump($data);exit;
Maar deze print:
array(1) { [0]=> array(3) { [0]=> string(2) "29" [1]=> string(2) "42" [2]=> string(2) "29" } }
Maar dat is niet het result van array(29, 42, 29)
En wat ik hier mee wil, dit gebruikt een ander script wat ik heb om een taartdiagram te verwerken. Kortom 29% 42% en 29%. Daar heb ik variabel $data voor nodig. Die hij gebruikt om de stukken te berekenen. Hij handled de inhoud van de variabele alleen als de inhoud gelijk is aan result van array(29, 42, 29) en niet:
array(1) { [0]=> array(3) { [0]=> string(2) "29" [1]=> string(2) "42" [2]=> string(2) "29" } }
Ook het script:
$data = array($VAR1, $VAR2, $VAR3);
Werkt niet. :)
$data = array();
while($data=mysql_fetch_array($result))
{
$data[] = $data['blauw'];
$data_2[] = $data['geel'];
$data_3[] = $data['rood'];
}
Omdat er in de tabel nog meer gegevens staan dan alleen deze 3 getallen. Maar, dit werkt ook niet :S
Ik zal wel een aantal dingen over het hoofd zien, mijn excuses daar voor...
Kan ik dat niet overnemen en DAARIN mijn variabelen zetten?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$data = array();
while($data=mysql_fetch_array($sql))
{
$data = array($row['rood'], $row['blauw'], $row['geel']);
print_r($data);
}
?>
$data = array();
while($data=mysql_fetch_array($sql))
{
$data = array($row['rood'], $row['blauw'], $row['geel']);
print_r($data);
}
?>
Dat is toch presies wat je wilt of niet? Ik snap niet waarom je zo moeilijk loopt te doen daar in die while loop.
$data[] = $row['rood'];
$data[] = $row['blauw'];
$data[] = $row['geel'];
is presies 't zelfde als
$data = array($row['rood'], $row['blauw'], $row['geel']);
en als je daar waardes voor invult ipv vars bijv:
$data = array(29, 42, 29);
Dan heb je presies 't resultaat wat je wilt hebben.
met print_r() kun je een array outputten. Evenals var_dump() btw. Als je dan je html source code bekijkt zul je een mooi overzicht krijgen van je array.
Ik heb eens gekeken wat ik krijg als ik $data = array(29, 42, 29) print (kortom $data printen). Ik krijg dan:
Array ( [0] => 29 [1] => 42 [2] => 29 )
Heel logisch, wanneer ik nu dit samenstel:
$data2 = "Array ( [0] => " . $row['punten_rood'] . " [1] => " . $row['punten_groen'] . " [2] => " . $row['punten_blauw'] . " )";
en daarna $data2 print dan krijg ik:
Array ( [0] => 29 [1] => 42 [2] => 29 )
Ook heel logisch, exact hetzelfde. Wanneer ik nu mijn script gebruik om mijn diagram te maken met $data dan zie ik mijn taartdiagram te zien. Wanneer ik mijn diagram aanroep met $data2 dan krijg ik:
Internal error: Chosen locale file for error messages does not exist.
Lekker duidelijk dus. Wanneer ik dus de Array zichzelf met cijfers uit laat rekenen dat werkt het wel, maar stel ik de variable $data2 samen met componenten dan krijg ik een error... waarschijnlijk dus hetzelfde probleem wat ik krijg als ik jullie scripts gebruik... is dit een logische veronderstelling?
$data2 is een (tekst)string.
Nouja ik heb jou script nog eens geprobeerd, SanThe... en het werkt als ik de variabelen dan in php invul, ik krijg ook een grafiek te zien met de juiste gegevens. Maar niet wanneer ik die gegevens uit de DB haal. Dan krijg ik op de plaats van de afbeelding een roodkruisje te zien.
Wanneer het wel werkt (afbeelding):
$rood = "12";
$geel = "45";
$blauw = "30";
$data = array($rood, $geel, $blauw);
Wanneer het niet werkt (roodkruisje):
$rood = "$row[rood]";
$groen = "$row[blauw]";
$blauw = "$row[groen]";
$data = array($rood, $groen, $blauw);
Mijn query is wel goed, want ik lees de gegevens rood, groen en blauw ook uit de database ergens anders op de pagina. Dit geeft geen probleem en parsed gewoon 29 rood, 42 groen en 29 blauw...
edit: en zet error_reporting(E_ALL); boven aan je script.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Hmm, ik het error_reporting(E_ALL); er in staan maar geexclude .... :D
Dus je zegt eigenlijk, eerst de errors fixen (die ik vast krijg nu :P ) en daarna nog eens kijken.
Gewijzigd op 01/01/1970 01:00:00 door Bram
$data = array($row['rood'], $row['blauw'], $row['groen']);
Hartelijk dank, Roy en de rest uiteraard!.
Wat ik heb gedaan is hetvolgende, alle errors er uitgehaald dmv error_report op te volgen. Daarna de include welke de grafiek genereerd voorzien van de inc_connect (naar DB) en voorzien van dezelfde query. Eigenlijk moet dat niet nodig zijn maargoed nu werkt het dus wel... :D
Merci, nogmaals.