PHP dropdown menu schrijft niet weg naar MySQL DB

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Heeyo!

Ik heb een simpele database aangemaakt waarin toevoegingen worden gedaan via een PHP-form.
Nu is mijn pagina voor 90% af máár ik krijg 1 aspect niet lekker werkend: data vanuit tabel A, welke wordt getoond in een dropdown menu, toevoegen aan tabel B.

Waar heb ik gezocht voor een antwoord?
het boek "Learning PHP, MySQL" van Robin Nixon, Stackoverflow, Udemy PHP en MySQL courses, Youtube, phpfreaks forum, ik ben zelfs voorbij de verdraaide pagina 3 van google's zoekresultaten gekomen. Nergens komt mijn specifieke vraag voor. Als het over dropdown menu's gaat, tonen ze alleen hoe je hardcoded select options kunt toevoegen, niet data die je uit je database haalt.

Voordat ik jullie lastig val met een hele rits code, is er een PHP-expert die mij, via DM of dit topic, hiermee verder zou willen helpen? Via DM kan ik je eventueel alle code geven.

Thanks!

Alle reacties


Acties:
  • +1 Henk 'm!

  • coop
  • Registratie: Augustus 2005
  • Laatst online: 21:44
Wat gaat er niet goed?
Heb je de POST variables al eens gechecked of de waarde die geselecteerd wordt in de <SELECT> wel meegestuurd wordt met de Submit? Of kom je zo ver niet?

Acties:
  • +1 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 23:52
Of een dropdown nu hardcoded is of niet, dat zou niet zo heel veel uit moeten maken voor je POST gedeelte.
Plaats hier eens wat code waarvan je denkt dat het relevant is (tussen code-tags).

PV Output


Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Globaal zal je dit moeten doen:
Form laten zien, data uit tabel A halen en tonen als een dropdown.
In de form afhandeling de keuze van de dropdown oppakken via POST of GET variabele en die vervolgens wegschrijven

Is niet veel anders dan een textbox oid. Heb je textboxen wel aan de praat?

Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Dit is de code waar het misgaat:

code:
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
                    <form name="dropdown" method="post">
                        <div class="page-header clearfix">
                            <h2 class="pull-left">Teamlid toevoegen</h2>
                        </div>           
                        <p>Selecteer hieronder met behulp van het dropdown menu een lid welke je aan bovenstaand team wilt toevoegen</p>
                        
                        <div class="container-fluid">
                            <div class="row">

                            <?php
                            mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
                            error_reporting(E_ALL);
                            
                            $teamnaam = '';
                            $lidnummer = '';

                            $sql = "SELECT voornaam, achternaam, lidnummer FROM lid ORDER BY achternaam";
                            $result = mysqli_query($conn, $sql);
                                
                                echo "<select id='teamLid' name='teamLid'>";
                                echo "<option>--Selecteer Lid--</option>";
                            while ($row = mysqli_fetch_array($result)) {
                                echo "<option value='" . $row['lid'] . "'>" . $row['voornaam'] . "  " . $row['achternaam'] . " " . $row['lidnummer'] . "</option>";
                            }
                            echo "</select>";
                            
                            if 
                            (isset($_POST["id"]) && !empty($_POST["id"])) {
                                $id = $_POST["id"];

                                $stmt = $conn->prepare("INSERT INTO teamlid (teamnaam, lidnummer) VALUES (?,?)");
                                $stmt->bind_param('si', $param_teamnaam, $param_lidnummer);
                                $param_teamnaam         = $teamnaam;
                                $param_lidnummer        = $lidnummer;
                                $stmt->execute();

                            }

                            mysqli_close($conn);
                            ?>
                                <div>
                                    <input type="hidden" name="id" value="<?php echo $id; ?>" />
                                    <input type="submit" name="submit" class="btn btn-primary" value="Toevoegen">
                                </div>
                            </div>
                    </div>
                </form>

Acties:
  • +3 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Ik zie diverse fouten:

$row['lid'] bestaat niet, je haalt veld "lid" niet op

Je moet $_POST["teamLid"] gebruiken om de keuze van de select op te halen.

Ook staan deze regels in de verkeerde volgorde:
$stmt->bind_param('si', $param_teamnaam, $param_lidnummer);
$param_teamnaam = $teamnaam;
$param_lidnummer = $lidnummer;
Bovendien zijn die $teamnaam en $lidnummer variabelen niet gevuld.

Acties:
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ik neem aan dat $row['lid'] juist $row['lidnummer'] moet zijn, die is er namelijk wel. :)

Oveirgens is dit alleen voor het ophalen van de opties, hoe moet dit nog worden opgeslagen in tabel B? ;)

[ Voor 32% gewijzigd door CH4OS op 24-06-2020 10:28 ]


Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Inderdaad,

en zorg er ook voor dat je velden uit de database niet zomaar in de html kiept.
Altijd htmlentities(...) gebruiken

Acties:
  • +1 Henk 'm!

  • AapBart
  • Registratie: April 2008
  • Niet online
Inderdaad.

en zorg dat je de teams (met naam en andere attributen) in een aparte tabel hebt staan, de teamleden-tabel is een veel op veel tussen tabel team en tabel lid.

Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
KNed schreef op woensdag 24 juni 2020 @ 10:29:
Altijd htmlentities(...) gebruiken
Euh. Nee. Neen. Nein. Njet.

Gebruik Parametrized Queries. Escapen (htmlentities etc.) doe je op de plek waar je de HTML genereert. Je wil je data niet html-encoded in je DB hebben.

[ Voor 51% gewijzigd door RobIII op 24-06-2020 10:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
KNed schreef op woensdag 24 juni 2020 @ 10:26:
Ik zie diverse fouten:

$row['lid'] bestaat niet, je haalt veld "lid" niet op

Je moet $_POST["teamLid"] gebruiken om de keuze van de select op te halen.

Ook staan deze regels in de verkeerde volgorde:
$stmt->bind_param('si', $param_teamnaam, $param_lidnummer);
$param_teamnaam = $teamnaam;
$param_lidnummer = $lidnummer;
Bovendien zijn die $teamnaam en $lidnummer variabelen niet gevuld.
Ten eerste allemaal alvast bedankt voor de snelle feedback! : )

Als ik $row[""lid] weg haal uit de echo "option value='" dan worden de bestaande leden niet meer getoond.

$_POST["teamLid"] bedoel je in plaats van $_POST["id"]?

En hoe zou de volgorde in $stmt moeten zijn? En de lege $teamnaam en $lidnummer variabelen zorgen toch dat deze dan gevuld worden met de '?' values?

Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
De teamnaam zal je ook nog ergens vandaan moeten halen. Denk daar eerst even goed over na.
RobIII schreef op woensdag 24 juni 2020 @ 10:33:
[...]

Euh. Nee. Neen. Nein. Njet.

Gebruik Parametrized Queries. Escapen (htmlentities etc.) doe je op de plek waar je de HTML genereert. Je wil je data niet html-encoded in je DB hebben.
Ik bedoel ook dat hij htmlentities() moet gebruiken op de plek waar hij de select genereert. Regel 23
Inderdaad zeker niet in je database!

Dus Ja, Jawel, Jawohl, Da :)

Acties:
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

RobIII schreef op woensdag 24 juni 2020 @ 10:33:
Euh. Nee. Neen. Nein. Njet.

Gebruik Parametrized Queries. Escapen (htmlentities etc.) doe je op de plek waar je de HTML genereert. Je wil je data niet html-encoded in je DB hebben.
Wat @KNed ook gewoon zegt dus. ;)
DeckDekk schreef op woensdag 24 juni 2020 @ 10:36:
Als ik $row[""lid] weg haal uit de echo "option value='" dan worden de bestaande leden niet meer getoond.
Er is geen kolom lid die je ophaalt in de query, dus de waarde is nu altijd null en wordt dus als 0 weergegeven. Wellicht moet dit dan id zijn of zo, maar die haal je niet op in je query.
En hoe zou de volgorde in $stmt moeten zijn? En de lege $teamnaam en $lidnummer variabelen zorgen toch dat deze dan gevuld worden met de '?' values?
Je moet eerst een variabele een waarde geven, voordat je de waarde gebruiken kunt.

[ Voor 43% gewijzigd door CH4OS op 24-06-2020 10:42 ]


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
KNed schreef op woensdag 24 juni 2020 @ 10:37:
Ik bedoel ook dat hij htmlentities() moet gebruiken op de plek waar hij de select genereert. Regel 23
Inderdaad zeker niet in je database!
Nee, ok, dan zitten we op dezelfde pagina :> Maar ik denk dat de verduidelijking voor TS wel handig was ;)
CH4OS schreef op woensdag 24 juni 2020 @ 10:38:
[...]
Wat @KNed ook gewoon zegt dus. ;)
Omdat het een losse zin was (op een nieuwe regel zelfs) was 't een vrij 'opzichzelf staande uitspraak' IMHO en dan is - zonder context - "altijd htmlentities gebruiken" opeens een gevaarlijke uitspraak. Zeker als die door een beginner gelezen wordt ;) Maar we waren 't inmiddels eens :)

[ Voor 38% gewijzigd door RobIII op 24-06-2020 10:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Daar heb je wel gelijk in :)

Advies aan TS: begin met nadenken over wat je wil en hoe je het wil. Zeker ook de database structuur. En ga daarna stap voor stap je code opnieuw en goed opbouwen.

Acties:
  • +1 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 23:52
code:
1
2
3
4
5
                                $stmt = $conn->prepare("INSERT INTO teamlid (teamnaam, lidnummer) VALUES (?,?)");
                                $stmt->bind_param('si', $param_teamnaam, $param_lidnummer);
                                $param_teamnaam         = $teamnaam;
                                $param_lidnummer        = $lidnummer;
                                $stmt->execute();


Ik zou regel 32 ook even na regel 34 plaatsen.
Je wil je params binden aan je query, maar hierna ga je pas de waardes aan je variabelen toevoegen.
Weet zo even niet hoe PHP ermee omgaat, maar eerst waardes toekennen aan variabelen, daarna pas gebruiken.

Tevens, waar komt $teamnaam vandaan?
Je zult hier eerst je $_POST variabele voor moeten gebruiken.
Dus wat je doet op regel 28, maar dan voor je $teamnaam en $lidnummer.

En kijk trouwens eens naar "$_SERVER['REQUEST_METHOD']".
Je controleert nu of je $_POST['id'] bestaat, maar netter is het om te controleren wat de request method is van het verzoek.

PV Output


Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Nog een paar andere tips:
  • Check ook of het lidnummer in de POST echt een nummer is met behulp van de ctype_digit() functie
  • Sla teams in een aparte tabel op en gebruik het id in de "teamlid" tabel.
  • doe ook een close() voor het result van de SELECT query
  • Je code-outlining kan verbeterd worden

Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Ah, zoveel nuttige info! Nogmaals bedankt : )

Voor de volledigheid, zo ziet het er nu uit:
Afbeeldingslocatie: https://tweakers.net/i/q-lPm1hJYEpUgBcbU6RXAQnQwjU=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/f29Dyx25ApTjFopHbg8K7EoL.jpg?f=user_large

De dropdown (--Selecteer Lid--) laat nu de leden zien uit de tabel 'lid' (bv. "Ringo Starr").

Acties:
  • +1 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 23:52
Als je het helemaal leuk wilt maken, pas je je query aan zodat je alleen leden te zien krijgt die niet bij dat team horen... :)

PV Output


Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Ik zou regel 32 ook even na regel 34 plaatsen.
Je wil je params binden aan je query, maar hierna ga je pas de waardes aan je variabelen toevoegen.
Weet zo even niet hoe PHP ermee omgaat, maar eerst waardes toekennen aan variabelen, daarna pas gebruiken.

Zo dus?
code:
1
2
3
4
5
                                $stmt = $conn->prepare("INSERT INTO teamlid (teamnaam, lidnummer) VALUES (?,?)");
                                $param_teamnaam         = $teamnaam;
                                $param_lidnummer        = $lidnummer;
                                $stmt->bind_param('si', $param_teamnaam, $param_lidnummer);
                                $stmt->execute();


Tevens, waar komt $teamnaam vandaan?
Je zult hier eerst je $_POST variabele voor moeten gebruiken.
Dus wat je doet op regel 28, maar dan voor je $teamnaam en $lidnummer.

$teamnaam is één van de 3 kolommen in tabel "teamlid" (tl_ID, teamnaam en lidnummer). Als ik hier een POST variabele van wil maken, zou dat dan zo zijn: $teamnaam = $_POST['teamnaam']; ?

En kijk trouwens eens naar "$_SERVER['REQUEST_METHOD']".
Je controleert nu of je $_POST['id'] bestaat, maar netter is het om te controleren wat de request method is van het verzoek.

Zoiets als dit?:
code:
1
2
                            if ($_SERVER['REQUEST_METHOD'] === 'POST') {
                                $teamnaam = $_POST["teamnaam"];

[/quote]

Acties:
  • +1 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 23:52
1; Ja.
2; Ja, tenminste, als de waarde uit het formulier overgenomen moet worden.
3; Ja, bijna. Je doet nu 3 = tekens, dit moeten er 2 zijn.

Bekijk Comparison Operators eens voor het verschil tussen o.a. == en ===.

PV Output


Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Argh, ik krijg nu weer wat foutmeldingkjes (máár die helpen weer om verder te komen!)

Notice: Undefined index: teamnaam
Notice: Undefined index: lidnummer
Fatal error: Uncaught mysqli_sql_exception: Column 'teamnaam' cannot be null

Acties:
  • +1 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 23:52
Dan zullen de namen in je formulier niet overeenkomen met wat je in je $_POST hebt staan.

PV Output


Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Ik heb weer wat dingen gewijzigd:
code:
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
                <form name="dropdown" method="post">
                    <div class="page-header clearfix">
                        <h2 class="pull-left">Teamlid toevoegen</h2>
                    </div>
                    <p>Selecteer hieronder met behulp van het dropdown menu een lid welke je aan bovenstaand team wilt toevoegen</p>

                    <div class="container-fluid">
                        <div class="row">

                            <?php
                            mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
                            error_reporting(E_ALL);

                            $teamnaam = '';
                            $teamnaam = !empty($_POST['teamnaam']) ? $_POST['teamnaam'] : '';
                            $lidnummer = '0';
                            $lidnummer = !empty($_POST['lidnummer']) ? $_POST['lidnummer'] : '';

                            $sql = "SELECT voornaam, achternaam, lidnummer FROM lid ORDER BY achternaam";
                            $result = mysqli_query($conn, $sql);

                            echo "<select id='teamLid' name='teamLid'>";
                            echo "<option>--Selecteer Lid--</option>";
                            while ($row = mysqli_fetch_array($result)) {
                                echo "<option value='" . $row['lid'] . "'>" . $row['voornaam'] . "  " . $row['achternaam'] . " " . $row['lidnummer'] . "</option>";
                            }
                            echo "</select>";

                            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                                $teamnaam = !empty($_POST['teamnaam']) ? $_POST['teamnaam'] : '';

                                $stmt = $conn->prepare("INSERT INTO teamlid (teamnaam, lidnummer) VALUES (?,?)");
                                $param_teamnaam         = $teamnaam;
                                $param_lidnummer        = $lidnummer;
                                $stmt->bind_param('si', $param_teamnaam, $param_lidnummer);
                                $stmt->execute();
                            }

                            mysqli_close($conn);
                            ?>
                            <div>
                                <input type="hidden" name="id" value="<?php echo $id; ?>" />
                                <input type="submit" name="submit" class="btn btn-primary" value="Toevoegen">
                            </div>
                        </div>
                    </div>
                </form>


Als ik close() toevoeg voor de result van de select query krijg ik deze meldingen:
Warning: mysqli_query(): Couldn't fetch mysqli
Fatal error: Uncaught Error: Call to a member function bind_param() on bool

Zonder de close() toevoeging krijg ik geen foutmeldingen maar schrijft hij alleen lege waardes naar de tabel weg.

En qua tabellen ben ik gebonden aan deze opzet:
Afbeeldingslocatie: https://tweakers.net/i/qCCgmi7r8Gji9bV53NQSSYM57hA=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/YrVdxELdAh4yWRXs7xOGLEGd.jpg?f=user_large

Acties:
  • +1 Henk 'm!

  • Rensjuh
  • Registratie: Juli 2007
  • Laatst online: 23:52
Ik zie in je form nergens een veld teamnaam of lidnummer.
Dit zou weleens de lege records kunnen verklaren?
Je checkt of er een waarde in $_POST zit, zo niet, zet je je var op "" (leeg).
Zet de velden in je database eens op "NOT NULL", waarschijnlijk ga je dan een error krijgen dat t veld niet leeg mag zijn.

PV Output


Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Deze code is al beter maar werk nog niet goed.
Je hebt ook nog niet alle aanpassingen verwerkt die in dit topic genoemd zijn..

De kwaliteit van het database design is eerlijk gezegd ook bedroevend.

Verder blijf ik bij mijn eerdere punt: begin opnieuw, er kan nog heel veel verbeterd worden aan je code

Acties:
  • +1 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 11-07 12:38

DataGhost

iPL dev

Rensjuh schreef op woensdag 24 juni 2020 @ 10:51:
Ik zou regel 32 ook even na regel 34 plaatsen.
Nergens voor nodig.
Je wil je params binden aan je query, maar hierna ga je pas de waardes aan je variabelen toevoegen.
Weet zo even niet hoe PHP ermee omgaat, maar eerst waardes toekennen aan variabelen, daarna pas gebruiken.
Het is echt niet veel werk om even https://php.net/functienaam in je browser in te typen, dan kom je snel genoeg uit op https://www.php.net/manual/en/mysqli-stmt.bind-param.php, daar zie je staan dat de argumenten by reference zijn en dat wordt in de examples nog eens in de praktijk getoond. Dat is handig als je bijvoorbeeld vaak dezelfde query moet uitvoeren met andere argumenten.

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 08-07 11:03

killercow

eth0

Denk ook even aan cross site request forgery.

openkat.nl al gezien?


Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
DeckDekk schreef op woensdag 24 juni 2020 @ 10:59:
Voor de volledigheid, zo ziet het er nu uit:
[Afbeelding]
Ik begrijp dat je trots bent (serieus, hello www, je eerste project).
Maar waarom bootstrap?

Haal die even weg en pak alle adviezen even in een lijstje, dan heb je het zo onder de knie!

☑ Dat je statements gebruikt in je SQL 👍
☐ Gebruik htmlspecialchars() op alle $variabelen die je in HTML plempt
☐ Controleer $_GET/$_POST of de data is wat je wil dat het is (bool/float/int/string/array)
☐ while ($row = $result->fetch_assoc()) {
☐ etc.

[ Voor 27% gewijzigd door DJMaze op 24-06-2020 16:59 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DJMaze schreef op woensdag 24 juni 2020 @ 16:55:
Maar waarom bootstrap?

Haal die even weg
Want :? Of zijn we gewoon op de "Bootstrap is *%$$¥*£!" trein gesprongen en roeptoeteren we gewoon blind mee? Onderbouw eens met één fatsoenlijke, objectieve reden waarom een (beginnend) webdev geen bootstrap zou moeten gebruiken.

[ Voor 42% gewijzigd door RobIII op 24-06-2020 17:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
offtopic:
[quote]RobIII schreef op woensdag 24 juni 2020 @ 17:24:
Onderbouw eens met één fatsoenlijke, objectieve reden waarom een (beginnend) webdev geen bootstrap zou moeten gebruiken.
[/quote]
Het zelfde als jQuery en vele anderen.
Ze voldeden vroeger, maar nu niet meer.
We rijden immers toch ook niet meer in een vierkante Volvo 440 of DAF?

Het is effectiever om CSS te leren dan een framework van de plank te trekken.
Frameworks kunnen handig zijn, maar meestal is het alleen een budget oplossing (kijk naar recente Corona apps...).
Om Bootstrap goed te gebruiken moet je Bootstrap leren, en in zijn screenshot is de overkill duidelijk.

Maak je niet druk, dat doet de compressor maar


Acties:
  • +4 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:17

Creepy

Tactical Espionage Splatterer

Bootstrap voldoet niet meer? Serieus? Met alle respect, maar wat een onzin. Dat je vindt dat iemand fatsoenlijk CSS moet leren daar ben ik het mee eens, dan snap je een bootstrap bijv ook gelijk beter. Maar zeggen dat bootstrap niet voldoet is totale onzin. Rob vroeg om een goede onderbouwing=, en die heb je nu nog steeds niet gegeven. "ja maar jquery en andere frameworks" is geen onderbouwing.\

Frameworks helpen juist enorm, je hoeft dan vaak het wiel zelf niet meer uit te vinden ;) Ook is het makkelijker om anderen te vinden die de codebase sneller begrijpen etc. etc. . Ik hoop dat dit niet je mening is over alle soorten frameworks, maar alleen over bootstrap (en jquery), en dan zou je het ook op een normale manier moeten kunnen onderbouwen. Anders is het een kwestie van NIH , en dat is in mijn ogen te vaak een ego trip van 1 developer die denkt alles beter te kunnen. Je neigt daar in mijn ogen nu naar......

[ Voor 60% gewijzigd door Creepy op 24-06-2020 20:25 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • +4 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DJMaze schreef op woensdag 24 juni 2020 @ 19:55:
[...]

Het zelfde als jQuery en vele anderen.
Ze voldeden vroeger, maar nu niet meer.
We rijden immers toch ook niet meer in een vierkante Volvo 440 of DAF?

Het is effectiever om CSS te leren dan een framework van de plank te trekken.
Frameworks kunnen handig zijn, maar meestal is het alleen een budget oplossing (kijk naar recente Corona apps...).
Om Bootstrap goed te gebruiken moet je Bootstrap leren, en in zijn screenshot is de overkill duidelijk.
Ik vroeg om één fatsoenlijke objectieve reden en jij komt met "ze voldeden vroeger maar nu niet meer" :? Waarom? Waar is je onderbouwing :? En hoe strookt de vergelijking dat Bootstrap nog steeds actief onderhouden en door honderdduizenden zo niet miljoenen websites gebruikt wordt met een oude Volvo in hemelsnaam :?

Wat een kul zeg :N

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • ewoutw
  • Registratie: Oktober 2013
  • Laatst online: 02:41
Hoi @DeckDekk,

Eerste (dynamische) website? Als ik je code En reacties lees heb ik een klein beetje het idee dat je voor copy-paste doet. Maar eigenlijk niet weet wat je waarom doet. Alloewel ik zelf een beetje ben blijven hangen in het procedureel programmeren (ipv oop)

Belangrijk is je begrijp wat je doet!
Valideer of alles werkt zoals bedoeld
Wat de foutmelding beteken, dan leer je ook hoe je echt oplost (wegwerken van een fout is iets anders)

$row[‘lid’] bestaat volgens mij niet.
Dan ziet je HTML bron <option valse=“”>
Dus verstuur je niets.

Acties:
  • 0 Henk 'm!

  • DeckDekk
  • Registratie: September 2019
  • Laatst online: 11-07 11:35
Hier en daar inderdaad. Het heeft inderdaad z'n voor- en nadelen. Ik ben begonnen met het opnieuw opbouwen van ten eerste de dropdown:

code:
1
2
3
4
5
6
7
8
9
10
$sql = "SELECT voornaam, achternaam, lidnummer FROM lid ORDER BY achternaam";
$result = mysqli_query($conn, $sql);

echo '<select>';

while ($row = mysqli_fetch_assoc($result)) {
    echo '<option>' . $row['voornaam'] . ' ' . $row['achternaam'] . ' ' . $row['lidnummer'] . '</option>';
}

echo '</select>';


Verder ben ik alle feedback aan het uitzoeken en zo goed mogelijk aan het toepassen.
Trial & error, trial & error error error error!

Acties:
  • +1 Henk 'm!

  • KNed
  • Registratie: Juni 2006
  • Laatst online: 21:25
Goede beslissing.

In deze code werk je in ieder geval met de juiste velden.
Alleen zal je wel het 'lidnummer' veld als 'value' attribuut van de <option> moeten zetten, niet zoals nu achter de naam.

Tip: maak eerst deze code helemaal af en ga dan pas aan het volgende beginnen.
Pagina: 1