[PHP] zelf kiezen van weergave velden bij zoeken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Beste mensen,

Ik heb momenteel een zoekscript die gewoon helemaal goed werkt, alleen zou ik graag ook nog de optie erbij willen hebben dat de gebruiker zelf kan kiezen welke verschillende velden hij wilt zien bij de output.
Ik had het nu al met checkboxen geprobeerd met...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
if (isset($_POST['LocatieW']))
  {
   echo"<td>Plaats</td>";
  }
// enz........
// en iets verderop in de code...

if (isset($_POST['LocatieW']) )
  {
   echo"<td>".$Plaats."</td>";
  } 
// enz..........
?>

Maar hiermee moet hij dus elke keer al die 'ifjes' langslopen en dat kan je wel merken aan de response tijd.
Weet iemand een manier waarop je dit een stuk efficienter kan maken?? Met arrays bijvoorbeeld, en hoe pak je dat dan goed aan? Ik heb al gekeken naar de mogelijkheden met arrays maar kwam er niet echt uit. Ik hoop dat jullie me verder op weg kunnen helpen.

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Als je de checkboxen een naam geeft met aan het einde "[]" wordt het geïnterpreteerd als array. Zoiets kun je in PHP dus benaderen als array:
HTML:
1
2
<input type="checkbox" name="veld[]" value="foo" />
<input type="checkbox" name="veld[]" value="bar" />

In PHP kun je de geselecteerde velden nu in een array terugvinden als er minstens één optie is aangevinkt:
PHP:
1
2
3
4
5
if (is_array($_POST['veld'])) {
  //doe iets met de velden
} else {
 echo 'Geen velden geselecteerd';
}

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Theske schreef op dinsdag 11 oktober 2005 @ 09:22:
Maar hiermee moet hij dus elke keer al die 'ifjes' langslopen en dat kan je wel merken aan de response tijd.
Een paar ifjes langslopen heeft significante invloed op je parse tijd? Weet je dat heel zeker? Heb je dat gebenched? Wat het lijkt me niet dat de bottleneck van je script een paar if-statements kunnen zijn.

[ Voor 4% gewijzigd door Cavorka op 11-10-2005 10:52 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Okej, bedankt!
Ik heb er een tijdje naar gekeken maar kom er gewoon niet uit |:(

Wanneer ik de volgende code gebruik krijg ik als output:::
Array
0

Hierbij maakt het niks uit of ik nou 1 of 6 hokjes aanvink.
Ik weet dus niet of dit geheel goed is...!
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
                  if (is_array($_POST['veld'])) 
                  {

                    $array = array($_POST['veld']);
                    
                    foreach ($array as $array => $value) 
                    {
                               echo "$value<br />";
                    }
                    print_r ($array);
                  } 
                  else 
                  {
                    echo 'Geen velden geselecteerd';
                  } 
?>

Wat ik momenteel in m'n code heb staan is het volgende...

Om aan te vinken welke velden gewenst zijn
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 <table>
            <tr>
                     <td> Startjaar </td>
                     <td>
               <input name="veld[]" type="checkbox" value="startjaar">
                     </td>
            </tr>
           <tr>
            <td>
            Recorddatum
            </td>
            <td>
              <input name="veld[]" type="checkbox" value="Recorddatum">
            </td>
           </tr>
<!-- enz..... -->
</table>


En ik wil dus als deze beide zijn aangevinkt dat hij het volgende weergeeft::
PHP:
1
2
3
4
<?
        echo"<td>Startjaar</td>";
        echo"<td width=70>Recorddatum</td>";
?>

En verderop in dezelfde tabel
PHP:
1
2
3
4
<?
        echo" <td>".$Startjaar."</td>";
        echo" <td>".$Recorddatum."</td>"
?>

Maar hoe doe je dit dan eigenlijk precies met arrays???
Als er dus 'startjaar' is aangevinkt, dan moet er op twee plekken bij de resultaten iets bijkomen. Namelijk de 'kolomnaam', die aangeeft welke gegevens zich eronder bevinden, en de gegevens zelf.

Zou iemand mij misschien hier verder mee kunnen helpen?

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Cavorka schreef op dinsdag 11 oktober 2005 @ 10:52:
[...]
Een paar ifjes langslopen heeft significante invloed op je parse tijd? Weet je dat heel zeker? Heb je dat gebenched? Wat het lijkt me niet dat de bottleneck van je script een paar if-statements kunnen zijn.
Nou, zonder deze code gaat het allemaal wel iets sneller....
En buiten dit lijkt me het een stuk efficienter of het op een andere manier te doen.... alleen hoe dat precies moet ben ik momenteel aan het uitzoeken.

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Theske schreef op dinsdag 11 oktober 2005 @ 11:05:
Wanneer ik de volgende code gebruik krijg ik als output:::
Array
0


[code=PHP]

foreach ($array as $array => $value)
{
echo "$value<br />";
}
wat zit er in $array zodra foreach de eerste keer erdoor heen loopt? juist geen array meer, dit is een "handige" manier om je array te slopen en rare output te krijgen :Y)

PHP:
1
foreach ($array as $key=>$value){ .. }

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
foreach ($array as $array => $value)
:X

Je overschrijft je $array met een variabele met dezelfde naam, en vervolgens wil je hem nog steeds als array afdrukken middels print_r...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Ah, juist ja.... :z

Nu maar even kijken of ik er verder iets mee kan bereiken

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Theske schreef op dinsdag 11 oktober 2005 @ 11:05:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
                  if (is_array($_POST['veld'])) 
                  {

                    $array = array($_POST['veld']);
                    
                    foreach ($array as $array => $value) 
                    {
                               echo "$value<br />";
                    }
                    print_r ($array);
                  } 
                  else 
                  {
                    echo 'Geen velden geselecteerd';
                  } 
?>
Je code is nogal.. euhh vreemd te noemen.
Op regel 2 stel je vast of $_POST['veld'] een array is. Als dit zo is stop je het in regel 5 in een nieuw array. $array is dus een array met een element met als key 0 en als value het andere array. In de echo binnen je foreach wordt dit ook netjes gedisplayed (vandaar de output "array").
In de aanroep van de foreach overschrijf je tevens de variabele $array. In de eerste iteratie krijgt deze de waarde van de eerste key (die was 0). Vandaar dat de print_r($array) "0" is.

Wat je waarschijnlijk wil berijken is hetvolgende:
PHP:
1
2
3
4
5
if (is_array($_POST['veld']))  {
  foreach ($_POST['veld'] as $key => $value)  {
     echo "$value<br />";
  }
}

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 16:42
code:
1
<input name="veld[]" type="checkbox" value="Recorddatum">

Is onjuist. Dit invoerveld heeft slechts een waarde, maar geen naam ("name")
code:
1
<input name="veld[]" type="checkbox" name="Recorddatum" value="bla">


Wat betreft de PHP-code: zie de reacties hierboven.

/edit: * Mawlana is blind (lees: net wakker) :|

[ Voor 50% gewijzigd door Mawlana op 11-10-2005 11:57 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

sylvesterrr schreef op dinsdag 11 oktober 2005 @ 11:52:
code:
1
<input name="veld[]" type="checkbox" value="Recorddatum">

Is onjuist. Dit invoerveld heeft slechts een waarde, maar geen naam ("name")
code:
1
<input name="veld[]" type="checkbox" name="Recorddatum" value="bla">


Wat betreft de PHP-code: zie de reacties hierboven.
ehm, sinds wanneer mag een element meerdere name attributen hebben :X
dat ding heeft een naam "veld[]" onderdeel van een array dus ;)

Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Okejzz!! Het is helemaal gelukt!
Bedankt allemaal.

ik heb het nu met het volgende gedaan:::

PHP:
1
2
3
4
5
6
7
        if (is_array($_POST['veld']))  
        {
          foreach ($_POST['veld'] as $key => $value)  
          {
            echo "<td>".$$value."</td>";
          }
        }

Proud member of the Cosmic Cows

Pagina: 1