webForumDet fria alternativet

Modifiera kod som loopar alla formulärfält

3 svar · 447 visningar · startad av Annakay

AnnakayMedlem sedan sep. 2003143 inlägg
#1

Har ett beställningsformulär med en kodsnutt som lägger allt formulärinnehåll i en textsträng som sen ska skickas via e-post.

Jag är inte så haj på PHP och skulle vilja modifiera nedanstående kod till att BARA lägga till i textsträngen de formulärfält som:

  • har ett namn som börjar på "antal_" OCH har ett värde större än 0
  • har ett namn som börjar på "summa_" OCH har ett värde större än 0
  • heter "totalsumma"
$message.="Kundens order:\n";
  foreach($_POST as $key => $val){
     if (is_array($val)){
        $message.="Item: $key\n";
        foreach($val as $v){
           $v = stripslashes($v);
           $message.="   $v\n";
        }
     } else {
        $val = stripslashes($val);
        $message.="$key: $val\n";
     }
  }

Snälla rara söta någon... :)

manganMedlem sedan feb. 2003216 inlägg
#2
$message.="Kundens order:\n";
foreach($_POST as $key => $val){
    // Hitta alla som börjar på antal_ och har större antal än 0
    if((strpos($key, "antal_") === 0) AND $val > 0){
        $message.= "Lägg till vad du nu vill ha";
    }
    // Hitta alla som börjar på summa_ och har större antal än 0
    if((strpos($key, "summa_") === 0) AND $val > 0){
        $message.= "Lägg till vad du nu vill ha";
    }
    // Hitta totalsumma
    if($key == "totalsumma"){
        $message.= "Lägg till vad du nu vill ha";
    }
}

Inte testat men borde funka typ såhär. Sen beror det ju på hur ditt formulär är uppbyggt så du kanske måste anpassa det lite. Om du är osäker på hur strukturen på resultatet ser ut så kan du dumpa resultatet:

var_dump($_POST);
The_HulkMedlem sedan juni 20031 837 inlägg
#3

Byggde ihop era två förslag till ett. har inte testat det så blir det något fel får du återkomma.

$message.="Kundens order:\n";

foreach($_POST as $key => $val)
{
    if (is_array($val))
    {
        $message.="Item: $key\n";
        foreach($val as $v)
        {
           $v = stripslashes($v);

            if( ((strpos($key, "antal_") === 0) && $v > 0) ||
                ((strpos($key, "summa_") === 0) && $v > 0) ||
                ($key == "totalsumma")
              )
            {
                $message.="   $v\n";
            }
        }
    }
    else
    {
        $val = stripslashes($val);
        
        if( ((strpos($key, "antal_") === 0) && $val > 0) ||
            ((strpos($key, "summa_") === 0) && $val > 0) ||
            ($key == "totalsumma")
          )
        {
            $message.="$key: $val\n";
        }
    }
}

/red
La till de saknade parenteserna.

AnnakayMedlem sedan sep. 2003143 inlägg
#4

Tusen tack! Det saknades dock en parentes i slutet av de "långa" if-satserna.

if( ((strpos($key, "antal_") === 0) && $v > 0) ||
((strpos($key, "summa_") === 0) && $v > 0) ||
($key == "totalsumma") )

Härligt, den här koden kommer jag att ha mycket nytta av! (y)

Tack igen! :)

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