Data opvragen en bewerken in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 6 7 volgende »

Willem vp

Willem vp

08/08/2017 00:55:29
Quote Anchor link
Het probleem zit in

$id = key($_POST['Aanwezig_'][1]);

key() verwacht een array, maar $_POST['Aanwezig_'][1] is een waarde ('Present' in dit geval).
Haal de [1] weg en het gaat goed.
 
PHP hulp

PHP hulp

21/11/2024 19:07:13
 
Thomas Bakker

Thomas Bakker

08/08/2017 00:55:35
Quote Anchor link
De print r meldt hetzelfde als toestraks, hij somt gewoon de aangevinkte resultaten op.
Deze zet hij vervolgens op present, dus dat werkt allemaal gewoon goed..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
Array
(
    [Aanwezig] => Array
        (
            [1] => Present
            [2] => Present
            [3] => Present
            [4] => Present
            [5] => Present
            [6] => Present
        )

)
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 00:58:38
Quote Anchor link
@Willem, daar keek ik even overheen.
Het is ook een functie die ik bijna niet vaak gebruik. ;-)

Maar, als je [1] eruit haalt, dan weet hij toch niet welke key hij moet pakken van de 6 in de array?
 
Willem vp

Willem vp

08/08/2017 00:58:58
Quote Anchor link
En let op dat key() alleen de huidige/actieve array-index geeft. Als je ze alle 6 wilt queryen zul je iets met een while-loop moeten doen.
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 01:02:12
Quote Anchor link
Dan kan je beter een foreach gebruiken om $_POST['Aanwezig'] uit te lezen in een loop, bij de verwerking.
Dan kan je de key en de value in de lus apart oproepen.
 
Willem vp

Willem vp

08/08/2017 01:02:21
Quote Anchor link
> Het is ook een functie die ik bijna niet vaak gebruik. ;-)

Ik moet bekennen dat ik zelfs niet eens wist dat 'ie bestond. ;-)

> Maar, als je [1] eruit haalt, dan weet hij toch niet welke key hij moet pakken van de 6 in de array?

Klopt. Hij zal alleen de eerste pakken, tenzij je de array in een loopje verwerkt. Maar dan zou ik denk ik een heel andere constructie gebruiken:

foreach ($_POST['Aanwezig_'] as $key => $value)

of zo.
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 01:04:27
Quote Anchor link
Klopt, ik zag pas later dat er al een loopje in de verwerking mistte.
Je moet immers alle items in de array doorlopen, dus een foreach is het beste.
 
Thomas Bakker

Thomas Bakker

08/08/2017 01:05:04
Quote Anchor link
Ben ik heel asociaal als ik jullie vraag waar de betreffende loop zou moeten komen te staan en hoe deze opgesteld moet worden?
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 01:07:49
Quote Anchor link
In je verwerkingsscript, op Checkbox.php.
 
Willem vp

Willem vp

08/08/2017 01:11:27
Quote Anchor link
Ik zou er zoiets van maken:

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
<?php
    //Alle variabelen instellen
    $servername = "nee";
    $username = "ja";
    $password = "nee";
    $dbname = "ja";

    //Verbinden met de database
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    foreach ($_POST['Aanwezig_'] as $id => $aanwezig) {
        //Query opstellen door middel van variabele
        $result = "UPDATE Aanwezigheid SET Maandag='$aanwezig' WHERE id='$id'";

        //Query draaien
        if(mysqli_query($conn,$result))
                echo "$result";
        else
                echo "Not updated";
    }

?>

(nou ja, ik zou het niet helemaal zo doen, want op deze manier ben je vatbaar voor SQL-injectie, maar het gaat om het idee...)
Gewijzigd op 08/08/2017 01:14:20 door Willem vp
 
Thomas Bakker

Thomas Bakker

08/08/2017 01:14:22
Quote Anchor link
@Willem; dit vereist dus dat ik nog de variabelen $id en $aanwezig zal moeten opstellen toch?
 
Willem vp

Willem vp

08/08/2017 01:14:49
Quote Anchor link
Thomas Bakker op 08/08/2017 01:14:22:
@Willem; dit vereist dus dat ik nog de variabelen $id en $aanwezig zal moeten opstellen toch?

Nee, dat doet de foreach voor je.
 
Thomas Bakker

Thomas Bakker

08/08/2017 01:17:47
Quote Anchor link
Ah! Willem en Ariën, jullie zijn fantastisch!
Hij draait! Conclusie van dit verhaal; ik ga een cursus PHP nemen.. ;)
Bedankt voor de toewijding en mijn excuses als ik moeilijk ben geweest ;)
 
Peter K

Peter K

08/08/2017 09:00:12
Quote Anchor link
Thomas Bakker op 08/08/2017 01:17:47:
Ah! Willem en Ariën, jullie zijn fantastisch!
Hij draait! Conclusie van dit verhaal; ik ga een cursus PHP nemen.. ;)
Bedankt voor de toewijding en mijn excuses als ik moeilijk ben geweest ;)


Er zijn een hoop boeken ook, je zult het meeste leren overigens door te doen.
Kwestie van veel doen en je wordt er steeds beter in!
 
Nick van der heijden

nick van der heijden

08/08/2017 14:39:39
Quote Anchor link
Ik heb zelf al een hele lange tijd geen PHP meer gedaan.
Maar kan je niet beter PDO gebruiken? dat is toch veiliger?
Gewijzigd op 08/08/2017 14:41:06 door nick van der heijden
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 15:09:09
Quote Anchor link
Nee, PDO heeft niks met veiligheid te maken.

Wat je query veiliger kan maken is door het gebruik van 'prepared statements'. Maar dat kan bij zowel PDO als MySQLi. Dan hoeft je niet zelf meer alle manipuleerbare waardes (GET, POST, COOKIE, ENV) te escapen.

Het verschil tussen PDO en MySQL is dat PDO meerdere databases ondersteunt, en MySQLi alleen MySQL en MariaDB (wat in feite een fork van MySQL is)

Zie ook: http://php.net/manual/en/mysqli.prepare.php
Gewijzigd op 08/08/2017 15:16:00 door - Ariën -
 
Nick van der heijden

nick van der heijden

08/08/2017 15:27:14
Quote Anchor link
dus prepare werkt dus bijna het zelfde als mysqli_real_escape_string?
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 15:29:09
Quote Anchor link
De praktijk is totaal anders, maar de theorie is voor zover ik weet wel gelijk.
 
Nick van der heijden

nick van der heijden

08/08/2017 15:30:48
Quote Anchor link
ah ja oke :) je kan ook PDO::quote gebruiken dat is wel vergelijkbaar dacht ik
 
- SanThe -

- SanThe -

08/08/2017 15:36:56
Quote Anchor link
Met de foreach() update je de database. Maar als er een checkbox die reeds aan staat nu uitgevinkt wordt dan wordt die niet mee gePOST en dus ook niet geUPDATE.
 

Pagina: « vorige 1 2 3 4 5 6 7 volgende »



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.