Toon posts:

[php] variabele in variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik submit een flexibel form en wil dan checken welke variabelen er zijn en die in de database gooien. Ik doe dit op de volgende manier:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$invoeren=new db;   
    $invoeren -> query("SELECT * FROM levensduren ORDER BY id_levensduur ASC");
    $aantal_levensduren = $invoeren->num_rows();
    for($x=1; $x < $aantal_levensduren; $x++)
    {
        $invoeren->next_record();
        $id_levensduur=$invoeren->Record["id_levensduur"];
        echo $id_levensduur;
        $temp = "form_type".$id_levensduur;
        $temp2 = "form_type_prijs".$id_levensduur;

        if ($$temp == 'j')
        {
            $invoeren->query("INSERT INTO data_pl (id_product,id_levensduur,prijs) VALUES ('$max_product_id','$id_levensduur','".$$temp2."')");
        }
    }


Als ik de query: query("SELECT * FROM levensduren ORDER BY id_levensduur ASC"); uitvoer krijg ik 6 resultaten met de waarden 1 t/m 6 .

Het for loopje gaat de eerste keer goed en hij insert netjes de waarden in de database. Wanneer ik dan naar het volgende id_levensduur wil gaan, door next_record() dan gaat het niet goed en wordt id_levensduur gelijk aan ''. Terwijl dit eigenlijk '2' moet zijn. Wie ziet wat ik fout doe?

p.s. ik gebruik PHPLib voor degenen die het niet gezien hadden. :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ik ben toch heel vreselijk bang dat je hiervoor de PHP Lib documentatie na moet kijken.

Of gewoon geen PHPlib gebruiken :X

Post hier even wat je erover in de docs kon vinden.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Volgens mij ligt het niet aan phplib maar aan een structurele denkfout. In PHPlib doet next_record() dit in ieder geval:

next_record() advances the cursor through the current query result and updates the Record, Row, Errno and Error instance variables.

Returns true, if there is a new result record. Returns false, if done with the current result set. If Auto_Free is true, free_result() is called automatically before false is returned.

Werkte altijd perfect om de resultaten 1 voor 1 door te lopen en ik heb er nog nooit problemen mee gehad.

Verwijderd

Volgens mij zit het probleem hierin:
PHP:
1
if ($$temp == 'j')


Dubbele dollartekens zeggen (als ik de theorie goed heb onthouden) dat de parser de inhoud van de string moet nemen, en die op zijn beurt als de naam van een variabele moet parsen, dus eigenlijk zeg je:
PHP:
1
if( $form_type1 == 'j' )

En de variabele $form_type1 wordt voor zover ik kan zien nergens geset, dus waarschijnlijk heb je in je tabel een entry met prijs=0;

Tenminste, als ik me de $$ functionaliteit goed herinner.

[ Voor 0% gewijzigd door Verwijderd op 21-10-2002 12:54 . Reden: 3x scheepsrecht? ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Cronjob>> klopt, zo werken die
variable variables noemen ze dat. Vieze zooi, als je het mij vraagt.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
nee, de variabele $form_type1 die wordt op de vorige pagina op het form geset. Het is gewoon een waarde die hij van het form meekrijgt.

Het probleem is dat de waarden van dat form ook variabel zijn, dus dat $form_type1 de ene keer wel bestaat en de andere keer niet.

Daarom doe ik ook: $temp = "form_type".$id_levensduur;
$temp2 = "form_type_prijs".$id_levensduur;

Om de aanwezige variabelen in deze pagina weer opnieuw op te bouwen. Ik heb het idee dat de variabele $form_type na 1 keer overschreven wordt met '' op de een of andere manier, aangezien hij daarna $form_type is ipv bijv: $form_type2

Code tages kan je gebruiken door '[php]' en '[//php]' (1 slash) te gebruiken. Bedankt voor je hulp. Ik pruts nog even verder.

Verwijderd

Topicstarter
Ok, kan vieze zooi zijn, maar wat is een andere oplossing?

Verwijderd

Topicstarter
Ik heb hem al, ik overschreef telkens de recordset invoeren door de query die ik in de if loop deed. Stom van me. Soms kan je zo lelijk over dingen heen kijken.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

* drm wijst naar 't Afbeeldingslocatie: http://images.tweakers.net/forum/templates/got/images/icons/edit.gif knopje ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1