[PHP] Array imploden naar string met behoud van keys+values

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig om een bestelformulier te maken.
Echter heb ik daarbij de fout gemaakt dat ik niet met ID's van producten werk maar de productnaam waardoor ik als ik een overzicht van de mogelijke producten opvraag formfields krijg die de naam "Productnaam" dragen. De hoeveelheid kan worden ingevuld door de gebruiker waardoor ik dus na submitten een var krijg die $Productnaam heet en als value 10 ofzo heeft.

Ik zou alleen graag AL mijn vars (die ik met get_defined_vars() ophaal) in een array netjes in een string zetten omdat het mailscript graag 1 veld met een textmessage accepteert.
Als ik nu met implode() de boel ophaal zoals hier

PHP:
1
2
3
$arr = get_defined_vars();
$text = implode("\n", $arr["_POST"]);
echo $text;


Dan krijg ik alleen een overzicht van de ingevulde waarden (stel dat ik van twee producten resp. 12 en 29 stuks wilde, dan echo't ie "12 29"

Ik zou echter graag het volgende als output willen:
ProductX 12
ProductY 29

Ik dacht hey, daar heb ik de keys voor nodig dus doe ik dit:
PHP:
1
2
3
$arr = get_defined_vars();
$text = implode("\n", array_keys($arr["_POST"]));
echo $text;


Probleem is dus dat ik nu ALLE var keys (ook van de producten waar de gebruiker er geen van wil hebben) te zien krijg.

Ik kom er niet uit om dit goed te combineren, waarschijnlijk is het 1 functie of 1 regel code... kan iemand me verder helpen om dus de naam van het product voor het aantal te krijgen en ook dat hij de vars zonder waarde niet meeneemt??

[ Voor 0% gewijzigd door Verwijderd op 01-08-2007 13:34 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Zelf bouwen?
PHP:
1
2
3
4
5
6
7
8
<?php
$text = '';
for(get_defined_vars() as $key => value)
{
    if($value > 0)
        $text .= "$key $value\n";
}
?>

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Waarom werk je met get_defined_vars, en niet met een foreach door $_POST?

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Misschien zoiets?
PHP:
1
2
3
4
5
6
7
8
9
10
$text = "";
foreach($_POST as $item => $amount)
{
  if($amount > 0)
  {
    $text .= sprintf("%s: %s\n",
                     $item, $amount);
  }
}
echo $text;

[ Voor 4% gewijzigd door Grijze Vos op 01-08-2007 14:34 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Soultaker schreef op woensdag 01 augustus 2007 @ 13:37:
Zelf bouwen?
PHP:
1
2
3
4
5
6
7
8
<?php
$text = '';
for(get_defined_vars() as $key => value)
{
    if($value > 0)
        $text .= "$key $value\n";
}
?>
:) kijk dat werkt... ipv get_defined_vars() gebruik ik $_POST enne in je post was je een $ vergeten te zetten voor value in de for loop maar verder werkt het perfect!

Dank!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oeps iets vaker de pagina refreshen voor mij... maar dat is ongeveer wat ik dus gedaan heb zie hier mijn code:

PHP:
1
2
3
4
5
6
7
    foreach($_POST as $key => $value)
    {
        if(($value > 0) || (!is_numeric($value)))
        {
            $text .= "$key $value\n";
        }
    }


die (!is_numeric) heb ik er ingezet omdat sommige mensen ipv 12 of 1 het handig vinden om "dertien stuks" oid in te vullen...

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 01 augustus 2007 @ 14:51:
[...]


Oeps iets vaker de pagina refreshen voor mij... maar dat is ongeveer wat ik dus gedaan heb zie hier mijn code:

PHP:
1
2
3
4
5
6
7
    foreach($_POST as $key => $value)
    {
        if(($value > 0) || (!is_numeric($value)))
        {
            $text .= "$key $value\n";
        }
    }


die (!is_numeric) heb ik er ingezet omdat sommige mensen ipv 12 of 1 het handig vinden om "dertien stuks" oid in te vullen...
Dus als de gebruiker "13 stuks" intypt, dan krijg jij dat niet in je e-mail te zien, en ziet de gebruiker op zijn scherm dat het bericht succesvol verzonden is ? :)
Pagina: 1