webForumDet fria alternativet

alla värden i en array?

7 svar · 283 visningar · startad av greymane

greymaneMedlem sedan juli 2001711 inlägg
#1

hur gör man för att plocka ut alla värden ur exempelvis $_POST när man skickat data via ett formulär? kan man loopa igenom en array som inte är sifferindexerad?

vad jag vill göra är att automatiskt bygga en sql-tabell utifrån de fält som finns i ett givet formulär.

SPiNMedlem sedan mars 20007 896 inlägg
#2

hur gör man för att plocka ut alla värden ur exempelvis $_POST när man skickat data via ett formulär? kan man loopa igenom en array som inte är sifferindexerad?

Det finns många sätt att göra det på, ett sätt är att använda funktionen array_shift() eller array_pop(). Ett annat är att använda en foreach-slinga, ännu ett är att använda en while-slinga med list() och each().

array_shift()/array_pop()

while( $currentElement = array_shift( $myArray ) ) {
     echo $currentElement;
}
//
while( $currentElement = array_pop( $myArray ) ) {
     echo $currentElement;
}

Skillnaden mellan dem är att array_shift() tar ut värdet på första index, medan array_pop() tar ut värdet på sista index först.

foreach

foreach( $myArray as $currentKey => $currentValue ) {
     echo "På platsen " . $currentKey . " fanns värdet " . $currentValue . ".<br />";
}

while

while( list( $currentKey, $currentValue ) = each( $myArray ) ) {
     echo "På platsen " . $currentKey . " fanns värdet " . $currentValue . ".<br />";
}

vad jag vill göra är att automatiskt bygga en sql-tabell utifrån de fält som finns i ett givet formulär.

Skulle du kunna förklara lite mer hur du menar?

greymaneMedlem sedan juli 2001711 inlägg
#3

jag har ett formulär med fnamn och enamn (och förmodligen minst 15 formulärobjekt till :) ). det hade då varit smidigt att slippa skapa sql-tabellen manuellt. tabellen skapas på genom att ta namnen på variablerna o sätta dem som kolumnnamn. tabellen skulle sett ut: ID, fnamn, enamn (och förmodligen minst 15 kolumner till).

var jag tydligare nu?

MatteMedlem sedan aug. 20002 975 inlägg
#4

För att plocka fram allt från ett skickat formulär så kan du använda det här:

foreach($_POST as $key => $val){
  // Gör något med posterna
}

Där läggs namnen på formulärselementen i $key och värdet på densamma i $val. Då kan du lägga uppgifterna i arrayer, eller på annat sätt använda variablerna för att bygga upp din sql-fråga. Jag har själv använt den metoden för att bygga upp INSERT och UPDATE satser.

Utifrån din fråga så skulle ju alla tabeller se likadana ut, så det kanske istället vore bättre att ha en fast fråga att hämta när en tabell ska skapas.

Sedan får man intrycket att du ska ha en egen tabell för varje användare. Jag vet inte vad du tänkt göra för något, men du skulle kanske fundera på om du verkligen inte kan göra, vad du nu tänker göra, med endast en tabell och i den ett fält med användarid, som du kan köra mot för dina SELECT, INSERT och UPDATE.

greymaneMedlem sedan juli 2001711 inlägg
#5

tack! precis vad jag behövde!

nä jag ska bara göra det en gång, så jag får _en_ formuläranpassad tabell utan att behöva göra så mycket manuellt :) *lat*

tack ska ni ha båda två!

greymaneMedlem sedan juli 2001711 inlägg
#6

jag har nog inte förstått riktigt. jag känner att jag gjort ett dumt fel, men jag vet itne var. jag får:

Warning: Invalid argument supplied for foreach() in /www/dev/mk_table/mk_table.php on line 4

när jag använder

foreach($_POST as $key => $val){
  // Gör något med posterna
}
MatteMedlem sedan aug. 20002 975 inlägg
#7

Det enda jag på raken kan tänka mig (finns säker fler saker) som kan ge ett sådant felmeddelande är att du har en version av PHP som är tidigare än 4.1.0. I såfall byt ut $_POST mot $HTTP_POST_VARS.

Felmeddelandet säger alltså att variabeln $_POST inte finns.
Kolla så att du skrivit rätt och inte t.ex $POST.

greymaneMedlem sedan juli 2001711 inlägg
#8

jag hade visst en äldre version än jag trodde :) tackar!

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)