[php] var uit extern bestand in array werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$id=1;
$sql = "SELECT * FROM product WHERE productid='$id'";
$result = mysql_query($sql) or die('Kon gegevens niet selecteren<br>'.$sql.'<br>'.mysql_error());
$item = mysql_fetch_array($result);

$config = fopen("product_config.txt", "r");
$i = 0;
while(!feof($config))
{
     $configitem = split(";", fgets($config));
     $field[] = $configitem[1];
}
fclose($config);
echo $field[2]; //geeft netjes titel als resultaat
echo $item[$field[2]] . "<br>"; //geeft een lege regel
echo $item[titel]; //geeft de waarde uit de db uit de kolom titel en werkt goed

code:
1
2
3
4
5
6
7
8
9
10
11
$prodid;productid
$artnr;artnr
$titel;titel
$omschr;omschr
$prijs;prijs
$besteleenheid;besteleenheid
$inhoud;inhoud
$classificatie;classificatie
$gebiedid;gebiedid
$image1;image1
$voorraad;voorraad

php code wil ik gebruiken om mijn scripts breder inzetbaar te maken. Ik gebruik veel code weer bij andere projecten, maar ik verander op verschillende plaatsen de veldnamen continue. Om dit nu heel eenvoudig te maken dacht ik een extern config bestandje te gebruiken en de waarden daaruit te gebruiken. Maar wat wil nou? echo $item[$field[2]] . "<br>"; geeft altijd een leeg resultaat. Hoe ik ook probeer. Het uiteindelijke doel is niet die echo, maar het opbouwen van dynamische code.
Of het uiteindelijke werkt zoals ik wil weet ik niet, maar ik kan nu niet uitstaan dat ik het zo niet werkend krijg. Wat mis ik?
$item[titel] geeft netjes de waarde uit de db terug. En $field[2] geeft netjes 'titel' als resultaat. Dus je zou zeggen... $item[$field[2]] moet werken. Wat ik ook heb geprobeerd is $field[2] hard op titel te zetten, dan werkt het dus wel. Op beide manieren bevat $field[2] dezelfde waarde, maar als het uit de txt file komt werkt het niet, zet ik hem in de code zelf dan werkt het perfect. Ik vind het raar.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Zo dan?
code:
1
echo $item[eval($field[2])] . "<br>";

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
fgets: on a newline (which is included in the return value)

oftewel, je kijkt naar $item[titel\n] en die bestaat niet, wel $item[titel]

www.php.net/trim

edit:
-NMe- :w

[ Voor 15% gewijzigd door Shadowman op 02-05-2005 13:27 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je code houdt geen rekening met newline karakters. Vervang na het splitten van je waarden uit die file eens \n en \r door niets, en dan werkt het waarschijnlijk wel.

Wat je probeert te doen kan trouwens veel eenvoudiger met de mysql_field_name()-functie. ;)

edit:
Shadowman :w

[ Voor 4% gewijzigd door NMe op 01-05-2005 22:55 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Even los van het daadwerkelijek probleem. Je kan dit met PHP doen maar ik zou het niet aanraden. Maak dan gebruik van de standaard mogelijkheden van platte text files, ini en xml bestanden. Als dit soort "tekst" bestanden kunnen eenvoudig worden geparsed en verwerkt. Meestal maak je dan gebruik van een array oid waarmee het gewoon mogelijk is alles te benaderen.

De andere optie is gewoon een php bestand te maken met daarin de variabelen. Dan is het direct te parsen.

[ Voor 33% gewijzigd door ripexx op 01-05-2005 22:58 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Super. Het trimmen van de output was idd het probleem.
Alle andere suggesties ga ik zeker eens bekijken. Bedankt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Kun je volgende keer ook iets duidelijker zijn in wat je wil doen? Ik moest je post 2x lezen voor ik wist wat je aan het doen was. In principe is een topicstart goed als iemand zonder naar je code te kijken kan zien wat je aan het doen bent, en dat lukte bij jou niet zo. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 01 mei 2005 @ 23:05:
Kun je volgende keer ook iets duidelijker zijn in wat je wil doen? Ik moest je post 2x lezen voor ik wist wat je aan het doen was. In principe is een topicstart goed als iemand zonder naar je code te kijken kan zien wat je aan het doen bent, en dat lukte bij jou niet zo. :)
sorry... ik heb er toch mijn best op gedaan, maar ik vond het moeilijk te omschrijven :) Volgende keer doe ik nog beter mijn best ;)
Pagina: 1