Hoe doe ik dit met gebruik van case?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Bas Matthee

Bas Matthee

25/03/2008 08:40:00
Quote Anchor link
Ik zeg hallo!
Ik heb een paar functies geschreven om makkelijk een dynamisch formulier te genereren, aan de hand van gegevens die door klanten met een reeds geschreven editor in de database worden gezet. Zij kunnen dus hun eigen inschrijf of aanmeld formulier samenstellen. (het gaat om een website waar klanten online een congressite kunnen maken met daarbij de optie een formulier samen te stellen. Dit zijn de functies.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
function textveld($name, $value=NULL, $omschrijving) {
    $html =    '<tr><td>' . $omschrijving . ': </td><td><input type="text" name="' . $name . '" value="' . $value . '" /></td></tr>';
    return $html;
}

function
radio($name, $options ,$omschrijving) {
    
    $options_x = explode('>><<', $options);
    $html = '<tr><td>' . $omschrijving . ':</td>';
    $aantal = 1;
    foreach( $options_x as $option => $value ) {
        if ($aantal == 1) {
            $html .= '<td><input type="radio" name="' . $name . '" value="' . $value . '" />' . $value . '</td></tr>';
            $aantal = 2;
        }
else {
            $html .= '<tr><td></td><td><input type="radio" name="' . $name . '" value="' . $value . '" />' . $value . '</td></tr>';
        }
    }
  
    return $html;
}

function
checkbox($name, $options ,$omschrijving) {
    
    $options_x = explode('>><<', $options);
    $aantal = 1;
    $html = '<tr><td>' . $omschrijving . ':</td>';
    foreach( $options_x as $option => $value ) {
        if ($aantal == 1) {
            $html .= '<td><input type="checkbox" name="' . $value . '" value="' . $value . '" />' . $value . '</td></tr>';
            $aantal = 2;
        }
else {
            $html .= '<tr><td></td><td><input type="checkbox" name="' . $value . '" value="' . $value . '" />' . $value . '</td?</tr>';
        }
    }
  
    return $html;
}

function
textarea($name, $value=NULL, $omschrijving) {
    $html =    '<tr><td>' . $omschrijving . ': </td><td><textarea name="' . $name . '" value="" cols="20" rows="5" />' . $value . '</textarea></td></tr>';
    return $html;
}

function
select($name, $options ,$omschrijving) {
    
    $options_x = explode('>><<', $options);
    $html = '<tr><td>' . $omschrijving . ': </td><td><select name="' . $name . '">';
    foreach( $options_x as $option => $value ) {
        $html .= '<option value="' . $value . '" />' . $value . '<br />';
    }

    $html .= '</td></tr></select>';  
    return $html;
}

?>


Hier volgt de code die nagaat welk type veld er opgevraagd wordt en welke HTML code er dus gegenereerd moet worden. (De stap naar XHTML is gemaakt! :) ).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$query
= "SELECT * FROM formulier WHERE congres_id = 75";  // 75 is even als voorbeeld genomen
$result_set = mysql_query($query);
while ($result = mysql_fetch_object($result_set)) {

    if ($result->type == 'radio') {
        echo radio($result->name, $result->options, $result->omschrijving);
    }

    
    if ($result->type == 'text') {
        echo textveld($result->name, $result->value, $result->omschrijving);
    }

    
    if ($result->type == 'textarea') {
        echo textarea($result->name, $result->value, $result->omschrijving);
    }

    
    if ($result->type == 'select') {
        echo select($result->name, $result->options, $result->omschrijving);
    }

    
    if ($result->type == 'checkbox') {
        echo checkbox($result->name, $result->options, $result->omschrijving);
    }

}

?>


Nu is mijn vraag, hoe kan ik deze laatste code beter/sneller maken met behulp van CASE?! (Ik heb iig begrepen dat het gebruik van CASE beter is in dit geval.)

Alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
 
PHP hulp

PHP hulp

22/11/2024 15:51:08
 
Jelle Posthuma

Jelle Posthuma

25/03/2008 08:42:00
 
Bas Matthee

Bas Matthee

25/03/2008 08:46:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$query
= "SELECT * FROM formulier WHERE congres_id = 75";  // 75 is even als voorbeeld genomen
$result_set = mysql_query($query);
while ($result = mysql_fetch_object($result_set)) {

  switch($result->type) {
      case
'radio':
          echo radio($result->name, $result->options, $result->omschrijving);
      break;
      
      case
'text':
          echo textveld($result->name, $result->value, $result->omschrijving);
      break;
    
      case
'textarea':
          echo textarea($result->name, $result->value, $result->omschrijving);
      break;
    
      case
'select':
          echo select($result->name, $result->options, $result->omschrijving);
      break;
    
      case
'checkbox':
          echo checkbox($result->name, $result->options, $result->omschrijving);
      break;
  }

}

?>


Zo dus?
 
Jelle Posthuma

Jelle Posthuma

25/03/2008 08:53:00
Quote Anchor link
Jah.
Maar dat hoef je niet eens te vragen of het zo goed is, is gewoon kwestie van nu testen of het werkt.
Werkt het? Dan is het goed.
Werkt het niet? Dan doorvragen.

;)
 
Bas Matthee

Bas Matthee

25/03/2008 08:58:00
Quote Anchor link
Ja, ik zit nu ziek thuis, werk PC staat op m'n stage. Maar kon het niet laten om toch even met PHP aan de gang te gaan. Kan hiervandaan niet testen, heb momenteel de ftp gegevens niet bij de hand, en om nou op m'n wamp server een database te gaan aanmaken om dit scriptje te testen, gaat mij ook weer iets te ver, maar als ik het goed heb begrepen en gelezen op PHP.net, moet dit de correcte manier zijn. En hoogstwaarschijnlijk zal het dus wel gaan werken.

Alvast bedankt, dit gaat een mooi plekje krijgen in mijn PHP talenknobbel :)

PS: Oops, ik las net iets over bumpen. Heb in andere topuic al 3 of 4 posts geplant. Bij deze mijn excuses. Was hiervan niet op de hoogte! Zal me wel eventjes kalm houden. :(

GEGROET ALLEN!
 
Jelle Posthuma

Jelle Posthuma

25/03/2008 09:04:00
Quote Anchor link
Oh zo, vandaar, maar sowieso, als je veel met PHP bezig bent enz, is het vaak altijd wel handig om een local webserver te installeren.
 
Bas Matthee

Bas Matthee

25/03/2008 09:09:00
Quote Anchor link
[sorry voor het bumpen]
Ik weet, ik heb wamp ook wel draaien, ik heb zelfs een webserver 24 uur per dag runnen hier. Maar een database aanmaken voor het testen van dit scriptje ging me te ver. Ik merk het morgen wel als ik weer op m'n stage ben.
[/sorry voor het bumpen]
 
Terence Hersbach

Terence Hersbach

25/03/2008 09:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

  switch($result->type) {
      case
'radio':
          echo radio($result->name, $result->options, $result->omschrijving);
      break;
      
      case
'text':
          echo textveld($result->name, $result->value, $result->omschrijving);
      break;
    
      case
'textarea':
          echo textarea($result->name, $result->value, $result->omschrijving);
      break;
    
      case
'select':
          echo select($result->name, $result->options, $result->omschrijving);
      break;
    
      case
'checkbox':
          echo checkbox($result->name, $result->options, $result->omschrijving);
      break;

      default :

            //doe wat als er een waarde is ingevoerd dat niet gevonden is (netzoals de else dus van een if / else constructie)
      break;
  }

?>
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Bas Matthee

Bas Matthee

25/03/2008 09:50:00
Quote Anchor link
Aha! default dus. Vroeg me stiekem al af hoe dat nou zou gaan.. Super. Ik ben ontzettend geholpen! Kon dit niet terugvinden op PHP.net (zal aan mij liggen!)
 
Patrick Niezen

Patrick Niezen

25/03/2008 09:53:00
Quote Anchor link
Ook leuk om te weten, je kunt meerdere cases samenvoegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
switch($var) {
  case
'foo':
  case
'bar':
    echo 'foo of bar';
    break;
  case
'overzicht':
  default:

    echo 'overzicht of zit er niet bij';
    break;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Patrick Niezen
 
Terence Hersbach

Terence Hersbach

25/03/2008 09:58:00
Quote Anchor link
jouw dingetje kan een stuk sneller trouwens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(function_exists($result->type)) {
    call_user_func($result->type, $result->name, $result->options, $result->omschrijving);
}
else {
    echo 'functie niet gevonden: '.$result->type;
}

?>
 
Bas Matthee

Bas Matthee

25/03/2008 10:03:00
Quote Anchor link
Patrick Niezen schreef op 25.03.2008 09:53:
Ook leuk om te weten, je kunt meerdere cases samenvoegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
switch($var) {
  case
'foo':
  case
'bar':
    echo 'foo of bar';
    break;
  case
'overzicht':
  default:

    echo 'overzicht of zit er niet bij';
    break;
}

?>


Dus als je een case in een case hebt, hoef je dus maar 1 keer break; te doen om deze beide af te sluiten (of brgrijp ik het verkeerd?)

Terence schreef op 25.03.2008 09:58:
jouw dingetje kan een stuk sneller trouwens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(function_exists($result->type)) {
    call_user_func($result->type, $result->name, $result->options, $result->omschrijving);
}
else {
    echo 'functie niet gevonden: '.$result->type;
}

?>


Maar $result->type is geen functie! maar een object uit een SELECT result.
Gewijzigd op 01/01/1970 01:00:00 door Bas Matthee
 
Patrick Niezen

Patrick Niezen

25/03/2008 10:10:00
Quote Anchor link
Het is niet echt een case in een case, het is meer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
switch($var) {
  het volgende gedeelte is voor 'foo':
  maar ook voor 'bar':
    //stukkie code, or whatever
    break;
}

?>


Edit:
In jouw geval kun je dat bijv. gebruiken voor:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
switch($result->type) {
  case
'radio':
  case
'select':
  case
'checkbox':
    echo $result->type . '(' . $result->name . ', ' . $rseult->options . ', ' . $result->omschrijving . ');';
    break;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Patrick Niezen
 
Terence Hersbach

Terence Hersbach

25/03/2008 14:20:00
Quote Anchor link
Bas Matthee schreef op 25.03.2008 10:03:
Maar $result->type is geen functie! maar een object uit een SELECT result.


en wat is het verschil tussen type en de functienaam die jij gebruikt? niets idd. Daarom kan je hem ook zo als functie aanroepen. Scheelt je een hoop werk uiteindenlijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.