PHP While IF Else

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mohamed nvt

Mohamed nvt

01/03/2017 21:27:44
Quote Anchor link
Hallo allemaal,

Het volgende probeer ik te bewerkstelligen, helaas lukt het me niet.
Vooraf controleer ik of in de DB een record bestaat. Indien dit het geval is, dan start er een loop op en wordt het dmv een select-menu het record weergegeven. En wanneer er geen record staat, dan laat ik enkel een tekst zien. Deze tekst zal ik later aanpassen in een link.

Helaas gebeurt het volgende: wanneer er geen record bestaat, dan wordt het echo commando niet uitgevoerd en er wordt een leeg select weergegeven.

Zou iemand naar willen kijken en mij willen voorzien van feedback?

Alvast dank voor de moeite.

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
<?php
$query2
= "SELECT * from medicinescountry";
        $result2 = mysqli_query($dbc,$query2);
        if(!$result2){
            die ("query failed" . mysqli_error($dbc));    
        }

        if (mysqli_num_rows($result2) > 0){
        while ($row = mysqli_fetch_assoc($result2)){
                $medicinescountry_id = $row['id'];
                $countryname = $row['countryname'];
            echo "<option value='$medicinescountry_id'>{$countryname}</option>";
            }
        }
else {
            
            echo "nothing found!";
        }

?>
Gewijzigd op 01/03/2017 21:28:32 door Mohamed nvt
 
PHP hulp

PHP hulp

19/01/2021 09:12:17
 
- Ariën -
Beheerder

- Ariën -

01/03/2017 21:51:38
Quote Anchor link
- Selecteer alleen de velden die je nodig hebt. Gebruik geen joker (*). Als je een boek zoekt, pak je toch ook niet alle boeken uit de boekenkast, maar kijk je op de rug ervan?
- Queries en variabelen nummeren? Nee, liever niet! Dit maakt de verwarring groter en de zoektocht naar bugs langer. Wat nu als je straks $result1 t/m $result6 hebt? Weet jij morgen nog wat $result4 doet?
- die() is kerkhof-techniek. Waarom moeten scripts doodgaan als er wat fout gaat? Alle processen stoppen op dat moment, ook de opbouw van de layout. Gebruik netjes if-else en goede foutafhandeling (wél met MySQLi i.t.t. dit artikel)
- Waarom variabelen overschrijven. Dit is niet nodig. Je kan prima $row['countryname'] gebruiken i.p.v. countryname. Menig editor helpt je er wel bij met auto-complete als het om luiheid gaat.
- Zorg voor logische inspringing van de regels. Nu lijkt het op lijn 13 dat die '} else {' bij je while hoort.
 
Ben van Velzen

Ben van Velzen

01/03/2017 22:30:34
Quote Anchor link
En last but not least: je toont niet je hele code, maar waarschijnlijk zet je je <select> al buiten dit stuk code neer. Dat werkt natuurlijk niet, want dan krijg je iets als <select>nothing found</select>.
 
- SanThe -

- SanThe -

01/03/2017 22:35:18
Quote Anchor link
Je while vult zo te zien een <select> met <option>'s.
Dan is een gewone echo 'tekst' tussen de <select> natuurlijk onzin.
 
Mohamed nvt

Mohamed nvt

02/03/2017 06:45:51
Quote Anchor link
Ben van Velzen op 01/03/2017 22:30:34:
En last but not least: je toont niet je hele code, maar waarschijnlijk zet je je <select> al buiten dit stuk code neer. Dat werkt natuurlijk niet, want dan krijg je iets als <select>nothing found</select>.


Dit is de gehele code:

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
<?php
<td><label for="medicinescountry"><b>Delivered by country:</b></label></td>
        <
td><select name="medicinescountry">
        <
option value="">---Select---</option>
        [
code]<?php

        $query2
= "SELECT * from medicinescountry";
        $result2 = mysqli_query($dbc,$query2);
        if(!$result2){
            die ("query failed" . mysqli_error($dbc));    
        }

        if (mysqli_num_rows($result2) > 0){
        while ($row = mysqli_fetch_assoc($result2)){
                $medicinescountry_id = $row['id'];
                $countryname = $row['countryname'];
            echo "<option value='$medicinescountry_id'>{$countryname}</option>";
            }
        }
else {
            
            echo "nothing found!";
        }

        ?>

            </select></td>
?>


Toevoeging op 02/03/2017 06:48:51:

- Ariën - op 01/03/2017 21:51:38:
- Selecteer alleen de velden die je nodig hebt. Gebruik geen joker (*). Als je een boek zoekt, pak je toch ook niet alle boeken uit de boekenkast, maar kijk je op de rug ervan?
- Queries en variabelen nummeren? Nee, liever niet! Dit maakt de verwarring groter en de zoektocht naar bugs langer. Wat nu als je straks $result1 t/m $result6 hebt? Weet jij morgen nog wat $result4 doet?
- die() is kerkhof-techniek. Waarom moeten scripts doodgaan als er wat fout gaat? Alle processen stoppen op dat moment, ook de opbouw van de layout. Gebruik netjes if-else en goede foutafhandeling (wél met MySQLi i.t.t. dit artikel)
- Waarom variabelen overschrijven. Dit is niet nodig. Je kan prima $row['countryname'] gebruiken i.p.v. countryname. Menig editor helpt je er wel bij met auto-complete als het om luiheid gaat.
- Zorg voor logische inspringing van de regels. Nu lijkt het op lijn 13 dat die '} else {' bij je while hoort.

Hallo Ariën,

Je hebt natuurlijk gelijk wat betreffende punten, maar zoals ik eerder aangaf; ik ben een beginner en wil graag beter coden, maar stap voor stap ;-)
Wanneer ik de core van de applicatie werkt, dan wil ik dit aanpakken en code refactoring ook.

Toevoeging op 02/03/2017 08:18:54:

Update:

Ik heb de logica van de code aangepast en het doet precies wat ik wil,, maar voor een deel is het resultaat niet gewenst, nl:

1. Als er geen medicine country gevonden is, dan wordt er de tekst "nothing found" weergegeven en er wordt geen dropdowm-list weergegeven. Dit is precies wat ik wil
2. Wanneer er wel een medicine country gevonden is, dan worden er 2 dropdown-list weergegeven met elk eigen waarde in, maar eigenlijk wil ik dat er een dropdown-list wordt weergegeven met alle waardes in.

En zoals hieronder weergegeven, heb ik het select tag in PHP opgenomen, maar gewone HTML wordt buiten PHP gelaten. Ik vind dit zo handig.


Graag jullie feedback. Tnx!
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
<?php
<td>
        [
code]<?php

        $query2
= "SELECT * from medicinescountry";
        $result2 = mysqli_query($dbc,$query2);
        if(!$result2){
            die ("query failed" . mysqli_error($dbc));    
        }

        if (mysqli_num_rows($result2) == 0){
            echo "nothing found!";    
            }
else {
                while ($row = mysqli_fetch_assoc($result2)){
                $medicinescountry_id = $row['id'];
                $countryname = $row['countryname']; ?>

                    <select name="medicinescountry">
                            <option value="">------Select---</option>
                            <?php echo "<option value='$medicinescountry_id'>{$countryname}</option>"; ?>
                         </select>
            <?php }
        }

        ?>

        </td>
?>


Toevoeging op 02/03/2017 08:44:56:

Update:

Het is opgelost en het doet precies wat ik wil.
Mochten er anderen zijn, die het willen gebruiken, dan ben je vrij dat te doen.

Iedereen bedankt voor het meedenken :)

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
<td>
        <?php
        $query2
= "SELECT * from medicinescountry";
        $result2 = mysqli_query($dbc,$query2);
        if(!$result2){
            die ("query failed" . mysqli_error($dbc));    
        }

        if (mysqli_num_rows($result2) == 0){
            echo "nothing found!";    
            }
else { ?>

                <select name="medicinescountry">
                <option value="">------Select---</option>
                <?php while ($row = mysqli_fetch_assoc($result2)){
                $medicinescountry_id = $row['id'];
                $countryname = $row['countryname'];
                    echo "<option value='$medicinescountry_id'>{$countryname}</option>";     
             }
        }

        ?>

        </select>
        </td>
 
Mausie Wausie

Mausie Wausie

02/03/2017 08:54:01
Quote Anchor link
Probeer het hier eens mee:

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
<td>
   <label for="medicinescountry"><b>Delivered by country:</b></label>
</td>
<td>
   <select name="medicinescountry">
     <option value="">---Select---</option>
     <?php
       $select_query
= "select id,countryname from medicinescountry";
       $sql_result = mysqli_query($dbc,$select_query) or die (((is_object($dbc)) ? mysqli_error($dbc) : (($mysqli_result = mysqli_connect_error()) ? $mysqli_result : false)));

       if(mysqli_num_rows($sql_result) > 0){
         while ($row = mysqli_fetch_assoc($result)){
           echo "<option value='".$row['id']."'>".$row['countryname']."</option>";
         }
       }
else{
         echo "<option value=''>nothing found!</option>";
       }

     ?>

  </select>
</td>
 



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.