Variabelen in een Array
Hoi mensen ik zit met een probleem waar jullie waarschijnlijk het antwoord wel op weten maar waar ikzelf het antwoord niet van kan vinden. Als ik op array zoek kom ik een hoop tegen behalve dit: Hoe voeg ik variabelen toe aan 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... :)
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... :)
Je haalt het uit een database? dan kan het op verschillende manieren, dit is er 1:
$data[1] is dan je $var1 uit je uitleg, $data[2] is dan $var2 uit je uitleg enzovoorts..
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..
Uhm ja. Maar ik moet dus eigenlijk 3 verschillende data in 1 array krijgen... als ik jou voorbeeld zou gebruiken dan heb ik $data1 $data2 en $data3. En ben ik dus net zo ver.
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?
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?
't voorbeeld van robbert geeft een array hoor.
$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:
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.
$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
En waarom zou dit niet werken?
$data = array($VAR1, $VAR2, $VAR3);
$data = array($VAR1, $VAR2, $VAR3);
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Ik zal het script van Roy nog eens proberen.
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. :)
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. :)
Ik heb het script van Rob op deze manier gebruikt:
$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...
$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 iemand mij anders vertellen wat een array eruit knalt als ik $data = array(29, 42, 29); gebruikt? Wat is dan de echte inhoud van $data?
Kan ik dat niet overnemen en DAARIN mijn variabelen zetten?
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.
Getest en werkt gewoon.
Uhm... ok.
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?
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?
$data is nu een array()
$data2 is een (tekst)string.
$data2 is een (tekst)string.
Hmm, der zit dus wel een verschil in... tja dan is de error logisch natuurlijk.
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...
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...
Oh wacht je zit met GD te kloten? Zet je header eens ff uit (commentaar van maken) en kijk eens wat voor erros je krijgt. Dat rood kruisje geeft aan dat je afbeelding niet goed is en 99,999% van de tijd heb je dan een error in je script zitten :) .
edit: en zet error_reporting(E_ALL); boven aan je script.
edit: en zet error_reporting(E_ALL); boven aan je script.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
Hehe :)
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.
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.
Tja, ik heb report aangezet en de errors verholpen. Maar wat bedoel je met je header uitzetten? Ik heb geen header tag gebruikt... dus kan ik deze niet uizetten... ik krijg overigens nog steeds een kruisje...
Gewijzigd op 01/01/1970 01:00:00 door Bram
$data = array($row['rood'], $row['blauw'], $row['groen']);
OK DAN! HET WERKT!
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.
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.




