Avatar billede binow Nybegynder
08. marts 2002 - 03:08 Der er 6 kommentarer og
1 løsning

sammensatte variabel navne

Hejsa.

Jeg har nogle tabeller inde i en form, i dem har jeg nogle variabler(som man jo gerne har). Disse har enslydende navne med et nr bagved.

Nu vil jeg gerne gemme dem i databasen men hvordan kan jeg vhja. en løkke få den til at gemme disse navne.

eks.

if ($antal_Baade>0){
    $i = 1;
    while($antal_Baade>=$i){
    $baad_Type = "".baad_Type_nr".$i"."";
      $sql="insert into baad_tabel (Konto_Nr,baad_Type, baad_Navn, ejer_Navn, ejer_Tlf, baad_Vhf, baad_Xpa,baad_Mobil_Navn, baad_Mobil_Nr) values
('$konto_Nr', '$baad_Type', '$baad_Navn_nr$i', '$baad_Ejer_Navn_nr$i','$baad_EjerTlf_nr$i', '$baad_Vhf_nr$i', '$baad_Xpa_nr$i', '$baad_MobTlfEjerNavn_nr$i','$baad_MobTflNr_nr$i')";
    mysql_query($sql)or die(mysql_error());
    $i++;
    };//slut på sql and while
  };//slut på if baade
 

det skulle gerne blive sådan at eks. '$baad_Navn_nr$i' fik værdien fra $baad_Navn_nr1 og næstegang $baad_Navn_nr2 , osv.

Jeg har forsøgt mig med
$baad_Type = "".baad_Type_nr".$i"."";, men det hjalp ikke, så fik jeg bare "baad_Type_nr1" ind i tabellen og det var jo ikke meningen, det var jo værdien af $baad_Type_nr1 der skulle ind i tabellen og ikke navnet på variablen.

Kan nogen hjælpe :-)
Avatar billede dcoder Nybegynder
08. marts 2002 - 03:20 #1
Ville det ikke være nemmere at bruge et array??? Noget i stil med

$baad_type[1]
$baad_type[2]

Og så videre, så kan du bruge

$baad_type[$i] til at indsætte det i databasen :)
Avatar billede binow Nybegynder
08. marts 2002 - 03:29 #2
Jow det ville det sikkert, men når der nu kommer X antal baad_Type_nrZ fra X antal tabeller, sendt fra en form til en anden side, som så skal ned  i db, hvordan skulle jeg så gøre det? Jeg er lidt under tidspres og formen er klar, jeg mangler "kun" at få det ned i db'en.  Hvordan skulle jeg samle alle data om en baad_nrX i et array inden at jeg poster formen?
Avatar billede binow Nybegynder
08. marts 2002 - 03:44 #3
ups. z og x sidder tæt på tastaturet.  det skulle være baad_Type_nrX
Avatar billede binow Nybegynder
08. marts 2002 - 04:02 #4
altså i formen har jeg $baad_Type_nr1, 2,3 osv. jeg ved ikke på forhånd hvor mange, der bliver lavet, det afhænger af hvormange baade folk vil tilmelde.  derfor skal jeg have variabel navnet i sql kaldet til at ændre sig, så det kommer til at hedde $baad_Type_nr1 ,2 ,3 osv.

I html koden er det nemt nok, men hvordan gør jeg det i php, i sql kaldet, inde i while løkken?
Avatar billede olebole Juniormester
08. marts 2002 - 04:03 #5
<ole>
Du kan jo altid evaluere din streng:

$baad_type_nr1 = "noget";

$i = 1;
$str = "\$baad_type_nr".$i;

eval( "\$bla = \"$str\";" );

print $bla;

Det vil returnere 'noget' - som forventet  :o)
/mvh
</bole>
Avatar billede binow Nybegynder
08. marts 2002 - 04:19 #6
Hej olebole

Jeg nåede lige at løse det selv med et lidt kortere svar, men du får point's alligevel som tak for hjælpen, da jeg også tror at dit svar ville have virket.

Jeg har brugt  $baad_Type = ${'baad_Type_nr'.$i};
og det virker :-)

mvh Binow
Avatar billede olebole Juniormester
08. marts 2002 - 05:05 #7
Jamen, selvfølgelig da  =o)
Og det er uden tvivl en bedre metode. Nu er PHP ikke mit 'modersmål' ... det er JavaScript og i den kategori er eval() en funktion, jeg altid 'pisker' brugerne til så vidt muligt at undgå, da den er temmelig langsom (og oftest overflødig).
Netop fordi, PHP ikke er mit 'modersmål', er jeg dog helt sikker på, mit eksempel virker .... det er testet inden post  ;o)
Tak, for points  =o)
/mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester