Variabelen in een Array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bram

Bram

06/07/2006 17:09:00
Quote Anchor link
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... :)
 
PHP hulp

PHP hulp

07/11/2024 17:49:32
 
Robert Deiman

Robert Deiman

06/07/2006 17:15:00
Quote Anchor link
Je haalt het uit een database? dan kan het op verschillende manieren, dit is er 1:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$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..
 
Bram

Bram

07/07/2006 08:59:00
Quote Anchor link
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?
 
Roy Bongers

Roy Bongers

07/07/2006 09:26:00
Quote Anchor link
'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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$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
 
- SanThe -

- SanThe -

07/07/2006 09:48:00
Quote Anchor link
En waarom zou dit niet werken?

$data = array($VAR1, $VAR2, $VAR3);
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Bram

Bram

07/07/2006 10:06:00
Quote Anchor link
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. :)
 
Bram

Bram

07/07/2006 10:18:00
Quote Anchor link
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...
 
Bram

Bram

07/07/2006 10:41:00
Quote Anchor link
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?
 
Roy Bongers

Roy Bongers

07/07/2006 10:59:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>


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.
 
- SanThe -

- SanThe -

07/07/2006 11:49:00
Quote Anchor link
Getest en werkt gewoon.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$VAR1
=19;
$VAR2=35;
$VAR3=23;
$data = array($VAR1, $VAR2, $VAR3);
echo '<pre>';
print_r($data);
echo '</pre>';
?>
 
Bram

Bram

07/07/2006 11:52:00
Quote Anchor link
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?
 
- SanThe -

- SanThe -

07/07/2006 12:00:00
Quote Anchor link
$data is nu een array()
$data2 is een (tekst)string.
 
Bram

Bram

07/07/2006 12:16:00
Quote Anchor link
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...
 
Roy Bongers

Roy Bongers

07/07/2006 12:22:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Roy Bongers
 
Bram

Bram

07/07/2006 12:25:00
Quote Anchor link
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.
 
Bram

Bram

07/07/2006 12:29:00
Quote Anchor link
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
 
- SanThe -

- SanThe -

07/07/2006 12:38:00
Quote Anchor link
$data = array($row['rood'], $row['blauw'], $row['groen']);
 
Bram

Bram

07/07/2006 12:39:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.