login  Naam:   Wachtwoord: 
Registreer je!
 Forum

If else met 4 mogenlijk heden (Opgelost)

Offline willie - 04/12/2009 22:09
Avatar van willie0 Als ik dit sukje heb
  1. {
  2.  
  3.  
  4. if ($row['soort_id'] != '1') {
  5. echo "  A. ";
  6. }
  7. else {
  8. echo '';
  9. }
  10.  
  11. }

Maar ik heb de keuze tussen 1,2,3 en 4 in de database staan.
Hoe maak ik dan de if else, zodat als er 2 in de db staat er dan een b verscheind en zo verder ?

15 antwoorden

Gesponsorde links
Offline vinTage - 04/12/2009 22:34
Avatar van vinTage Nieuw lid
  1. if($row[..] == 1)
  2. {
  3. echo 1;
  4. }
  5. elseif($row[...] == 2)
  6. {
  7. echo 2;
  8. }
  9. elseif($row[...] == 3)
  10. {
  11. echo 3;
  12. }
  13. else
  14. {
  15. //row was niet 1, 2,3 dus moet het wel 4 zijn
  16. echo 4;
  17. }
Offline avdg - 04/12/2009 22:35 (laatste wijziging 04/12/2009 22:36)
Avatar van avdg PHP gevorderde De PHP.net: switch is in dit geval overzichtelijker én sneller.

  1. switch ($row['soort_id'])
  2. //Ik wil dat er vergeleken wordt met $row['soort_id']
  3. {
  4. //en als die gelijk is aan 1
  5. case 1:
  6. //code ...
  7. break; //verlaat dit blok
  8.  
  9. //en als die gelijk is aan 2
  10. case 2:
  11. //...
  12. break;
  13. //en in geval geen enkele conditie overeenstemd
  14. default:
  15. //...
  16. }
Offline vinTage - 04/12/2009 23:21
Avatar van vinTage Nieuw lid net getest en die switch is idd sneller 

ergens in mn achterhoofd zat dat switches niet sneller waren, maar persoonlijke practijk testjes bleken het tegenovergestelde.
Het scheelt in het algemeen niet echt veel, maar de if/elseif constructie gaf soms wel pieken die aanzienlijk hoger waren dan de hoogste piek in de switch.

Zelf testen ?

  1. <?php
  2. $time_start = microtime(true);
  3. $id = 4;
  4. if($id == 1)
  5. {
  6. echo 1;
  7. }
  8. elseif($id == 2)
  9. {
  10. echo 2;
  11. }
  12. elseif($id == 3)
  13. {
  14. echo 3;
  15. }
  16. else
  17. {
  18. echo 4;
  19. }
  20. $time_end = microtime(true);
  21. $time = $time_end - $time_start;
  22. echo '<br>'.$time;
  23. ?>

  1. <?php
  2. $time_start = microtime(true);
  3. $id = 4;
  4. switch ($id)
  5. {
  6. case 1:
  7. echo 1;
  8. break;
  9. case 2:
  10. echo 2;
  11. break;
  12. case 3:
  13. echo 3;
  14. break;
  15. default:
  16. echo 4;
  17. }
  18. $time_end = microtime(true);
  19. $time = $time_end - $time_start;
  20. echo '<br>'.$time;
  21. ?>
Offline willie - 05/12/2009 20:18 (laatste wijziging 05/12/2009 21:01)
Avatar van willie 0 Ik heb het getest.
Dit is de uitslag
  1. 1260040493.0083 4
  2. 2.8133392333984E-5

Regel 1 = if/elseif.
Regel 2 = switch.

Maar ik wil het stukje script dus in een pulldown menu zetten.
Nou had ik dus dit
  1. <td align=right><select name='soort_id'>
  2. <option value='$soort_id'>
  3. if($soort_id == 1)
  4. {
  5. echo "a";
  6. }
  7. elseif($soort_id == 4)
  8. {
  9. echo "b";
  10. }
  11. elseif($soort_id == 7)
  12. {
  13. echo "c";
  14. }
  15. else
  16. {
  17. echo "d";
  18. }
  19. </option>
  20. <option value='1'>a</option>
  21. <option value='4'>b</option>
  22. <option value='7'>c</option>
  23. <option value='11'>d</option>
  24. </select></td>
  25. <td align=left>wijzig soort id.</td>

Maar dat werkt dus niet.
Dit is dus het stukje wat wel werkt.
  1. <td align=right><select name='soort_id'>
  2. <option value='$soort_id'>$soort_id</option>
  3. <option value='1'>a</option>
  4. <option value='4'>b</option>
  5. <option value='7'>c</option>
  6. <option value='11'>d</option>
  7. </select></td>
  8. <td align=left>wijzig soort id.</td>

Maar dan geeft die een 1 inplaats van een a aan.
En zo wil ik het dus niet hebben.
Hoe kan ik dit oplossen?
Offline matthiasm11 - 05/12/2009 23:03 (laatste wijziging 05/12/2009 23:09)
Avatar van matthiasm11 Nieuw lid Zoals je het nu geschreven hebt,
zal "a" zichtbaar zijn op je scherm,
maar het formulier zal "1" versturen achter de schermen
(meestal naar je database)

  1. <option value='$soort_id'>$soort_id</option>

Zal niet werken als je wil dat de waarde van de variable (vb: "1") wordt weergegeven. Nu zal je bij deze regel letterlijk op je scherm zien: "$soort_id". Indien je wel de waarde wilt, dan typ je dit:
  1. <option value='<?=$soort_id?>'><?=$soort_id?></option>

Waarbij
  1. <?=$soort_id?>

hetzelfde is als
  1. <?php
  2. echo $soort_id;
  3. ?>
Offline Kevin - 06/12/2009 09:44
Avatar van Kevin Crew Ajax/REST Heb je die PHP Vars dan al als het formulier nog niet verzonden is?

Steek je dropdown in een formulier en link naar "naam.php" met de "GET" methode.
Steek dit in je head tag.
Heb dit naar wat ik las snel even gemaakt:
  1. <?
  2. if (isset($_GET['soortid'])){
  3. $id = $_GET['soortid'];
  4. switch ($id)
  5. {
  6. case 1:
  7. $soortid="a";
  8. break;
  9. case 4:
  10. $soortid="b";
  11. break;
  12. case 7:
  13. $soortid="c";
  14. break;
  15. case 11:
  16. $soortid="d";
  17. break;
  18. default:
  19. echo "fout";
  20. }} ?>
Offline willie - 06/12/2009 11:25 (laatste wijziging 06/12/2009 11:31)
Avatar van willie 0 Het gaat hier dus om regel 2

Hier laat het dropdown menu zien wat er in de db staat.
In de db staat bvb 1, en daar moet dus inplaats van een 1 een a verschijnen.

Regel 3,4,5 en 6 zijn de keuzens die een lid kan maken
  1. <td align=right><select name='soort_id'>
  2. <option value='$soort_id'>$soort_id</option>
  3. <option value='1'>a</option>
  4. <option value='4'>b</option>
  5. <option value='7'>c</option>
  6. <option value='11'>d</option>
  7. </select></td>
  8. <td align=left>wijzig soort id.</td>
Offline matthiasm11 - 06/12/2009 12:03 (laatste wijziging 06/12/2009 12:06)
Avatar van matthiasm11 Nieuw lid
  1. <?
  2. switch ($soort_id)
  3. {
  4. case 1:
  5. $soortid="a";
  6. break;
  7. case 4:
  8. $soortid="b";
  9. break;
  10. case 7:
  11. $soortid="c";
  12. break;
  13. case 11:
  14. $soortid="d";
  15. break;
  16. default:
  17. echo "fout";
  18. }
  19. ?>
  20. <select name='soort_id'>
  21. <option value='<?=$soort_id?>'><?=$soortid?></option>
  22. <option value='1'>a</option>
  23. <option value='4'>b</option>
  24. <option value='7'>c</option>
  25. <option value='11'>d</option>
  26. </select>
Offline willie - 07/12/2009 11:58
Avatar van willie 0 Helaas werkt het zoi dus niet.
Het gedeelte van het script zit namelijk al in een echo in een
php gedeelte.
Offline matthiasm11 - 07/12/2009 14:41
Avatar van matthiasm11 Nieuw lid post dan even het hele script,
als je genoeg prutst, dan kan je alles wel in elkaar stoppen hoor ;)
Offline willie - 07/12/2009 15:46
Avatar van willie 0 Hier is de gehele pagina.
Ik heb het niet zelf gemaakt.
Plaatscode: 138163
Offline matthiasm11 - 07/12/2009 22:28 (laatste wijziging 07/12/2009 22:32)
Avatar van matthiasm11 Nieuw lid http://www.plaatscode.be/138165/
Ik heb het even wat herwerkt,
je zou toch eens moeten proberen om wat meer tutorials te lezen hier op sima. Het onderstaande staat bijvoorbeeld zeker in 1 van de tutorials:
  1. <?php
  2. echo "Dit is de inhoud van de variabele: ".$inhoudvariabele;
  3. echo "Het nummer".$nummer."heeft gewonnen.";
  4. echo $naam." heeft verloren.";
  5. ?>

Als in een echo een variabele gevolgde wordt door een stukje tekst (of omgekeerd), dan plaatst men een . (punt) tussen de twee delen. Hierboven zie je 3 voorbeelden.
Dit gebeurt niet alleen bij echo, maar ook bij andere variabelen in een regel tekst.

Je zou ook eens moeten proberen om je code overzichtelijk te schrijven mbv de tab-toets.
Offline willie - 08/12/2009 15:01 (laatste wijziging 08/12/2009 15:14)
Avatar van willie 0 Oke, maar ik had dit stukje niet zelf gemaakt.
Maar als ik dat stukje script bekijk, dan woordt bij de opgevraagte pagina nog steeds de output van de data base weer gegeven.
En daar wilde ik dus dat stukje if/ifelse tussen hebben.
  1. <td align=right><select name='soort_id'>
  2. <option value='$soort_id'>$soort_id</option>
  3. <option value='1'>a</option>
  4. <option value='4'>b</option>
  5. <option value='7'>c</option>
  6. <option value='11'>d</option>
  7. </select></td><td align=left> soort id</td>

Het stukje id'>$soort_id</option>, laat de output zien.
Dus hoe kan ik dat aanpakken?
Offline matthiasm11 - 08/12/2009 16:39 (laatste wijziging 08/12/2009 16:40)
Avatar van matthiasm11 Nieuw lid Quote:
  1. <?
  2. switch ($soort_id)
  3. {
  4. case 1:
  5. $soortid="a";
  6. break;
  7. case 4:
  8. $soortid="b";
  9. break;
  10. case 7:
  11. $soortid="c";
  12. break;
  13. case 11:
  14. $soortid="d";
  15. break;
  16. default:
  17. echo "fout";
  18. }
  19. ?>
  20. <select name='soort_id'>
  21. <option value='<?=$soort_id?>'><?=$soortid?></option>
  22. <option value='1'>a</option>
  23. <option value='4'>b</option>
  24. <option value='7'>c</option>
  25. <option value='11'>d</option>
  26. </select>


bij deze post was er wel degelijk een verschil tussen $soortid en $soort_id
Offline willie - 08/12/2009 20:36
Avatar van willie 0 Helaas werkte het zo ook niet.
Dus heb ik de db aangepast en de db opdrachten.
Nu werkt het dus wel met mijn oude script.

In ieder geval bedankt voor het mee denken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.368s