mysqli - wissen uit een tabel lukt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Nick VanRossem

Nick VanRossem

17/01/2016 23:41:56
Quote Anchor link
Ik gebruik het ietwat verouderde boek PHP 5 van Arjan Burger om php te leren.

Ik heb geprobeerd om een script om records uit een tabel te verwijderen aan te passen naar mysqli.
De records uit de tabel worden weergegeven. Echter krijg ik enkele foutmeldingen en lukt het niet om een record te verwijderen.

Notice: Undefined index: actie in /home/nickvzk61/domains/nickvzk61.sixtyone.axc.nl/public_html/testlab/category_del.php on line 26

Notice: Undefined variable: PHP_SELF in /home/nickvzk61/domains/nickvzk61.sixtyone.axc.nl/public_html/testlab/category_del.php on line 39

Notice: Undefined variable: PHP_SELF in /home/nickvzk61/domains/nickvzk61.sixtyone.axc.nl/public_html/testlab/category_del.php on line 39


wie kan mij helpen?

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
<html>
<head>
    <title>Categorie verwijderen</title>
</head>
<body>
<?php
// errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

// database connectie maken
// ""localhost","my_user","my_password","my_db"

$db = mysqli_connect("localhost", "my_user", "my_password", "my_db");

// foutmelding weergeven bij mislukte database connectie
if (!$db) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}


// uit te voeren actie
// tabelnaam: category
// kolommen: 'category_id' & 'category_name'

if ($_GET["actie"] == "wis" && $_GET["categoryiddel"]) { //is er een categorie ingevoerd?
    if (!mysqli_query($db, "DELETE FROM category WHERE category_id=".$GET[categoryiddel]."")){ //als de query mislukt geef een melding
        echo "Verwijderen van de categorie is mislukt!";
        exit;
    }
}

else{ //laad de tabel
?>

Wis de volgende categorie:<br>
<?php
    $resultaatdelete
= mysqli_query($db, "SELECT * FROM category"); // vul de variabale met de gegevens uit de tabel category
    while ($rij = mysqli_fetch_array($resultaatdelete, MYSQLI_BOTH)){ //zolang er een rij gevuld wordt, data weergeven
        $categoryiddel = $rij["category_id"];
        echo $rij["category_name"]."<a href=\"$PHP_SELF?actie=wis&categoryiddel=$categoryiddel\">Wissen</a><br>\n";
    }
}

?>

</body>
</html>


alvast bedankt voor de moeite.
Gewijzigd op 17/01/2016 23:46:21 door Nick VanRossem
 
PHP hulp

PHP hulp

27/12/2024 09:44:13
 
- SanThe -

- SanThe -

17/01/2016 23:43:57
Quote Anchor link
Nick VanRossem op 17/01/2016 23:41:56:
Echter krijg ik enkele foutmeldingen


En nu mogen wij die gaan gokken.
 
Nick VanRossem

Nick VanRossem

17/01/2016 23:47:30
Quote Anchor link
Mijn excuses - SanThe - ik zag het ook net bij het herlezen van mijn post. het oorspronkelijk bericht is aangepast.
 
- SanThe -

- SanThe -

17/01/2016 23:50:37
Quote Anchor link
Die variabelen bestaan blijkbaar (nog) niet.
Zie isset().
 
- Ariën  -
Beheerder

- Ariën -

17/01/2016 23:55:23
Quote Anchor link
$PHP_SELF bestaat al zo'n 10 jaar al niet meer.

Als je toch naar hetzelfde bestand linkt heb je daar geen variabele voor nodig.
 
Thomas van den Heuvel

Thomas van den Heuvel

18/01/2016 14:38:43
Quote Anchor link
Je mis ook een liggend streepje (underscore) op regel 27 in $GET.

Daarnaast is het misschien ook handig om te controleren op het bestaan van variabelen zoals SanThe aangeeft met behulp van isset() en als je dingen een query(string) in duwt, controleer dan op zijn minst of datgene numeriek is ten einde een ongewenst effect te voorkomen.
 
Nick VanRossem

Nick VanRossem

18/01/2016 21:48:50
Quote Anchor link
Allen vast bedankt voor de hulp!

Ik heb geprobeerd om de tips en opmerkingen toe te passen en heb nu een werkend script zonder foutmeldingen.

- de functie isset() proberen toe te passen.
- regel 27 $GET aangepast naar $_GET + ontbrekende quotes toegevoegd.
- poging tot numerieke controle van $_GET["categoryiddel"] door gebruik van ctype_digit().

het script werkt nu wel, maar graag had ik nog feedback ontvangen of dit wel "correct" is uitgevoerd.

$PHP_SELF heb ik nog wel in gebruik, maar ik heb niet gevonden hoe dit anders zou kunnen. (net even de druk van het boek dat ik gebruik gecontroleerd. Het boek dateert van 2007).

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
<html>
<head>
    <title>Categorie verwijderen</title>
</head>
<body>
<?php
// errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

// database connectie maken
// ""localhost","my_user","my_password","my_db"

$db = mysqli_connect("localhost", "my_user", "my_password", "my_db");

// foutmelding weergeven bij mislukte database connectie
if (!$db) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}


// uit te voeren actie
// tabelnaam: category
// kolommen: 'category_id' & 'category_name'

if (isset($_GET["actie"]) and $_GET["actie"] == "wis" && ctype_digit($_GET["categoryiddel"])) { //is er een categorie ingevoerd?
    if (!mysqli_query($db, "DELETE FROM category WHERE category_id=".$_GET["categoryiddel"]."")){ //als de query mislukt geef een melding    
        echo "Verwijderen van de categorie is mislukt!";
        exit;
    }

    else{
        echo "De categorie <b>".htmlspecialchars($_GET["categoryiddel"], ENT_QUOTES, "UTF-8")."</b> is verwijderd.<br>";
        $resultaatdelete = mysqli_query($db, "SELECT * FROM category"); // vul de variabale met de gegevens uit de tabel category
        while ($rij = mysqli_fetch_array($resultaatdelete, MYSQLI_BOTH)){ //zolang er een rij gevuld wordt, data weergeven
            $categoryiddel = $rij["category_id"];
            echo $rij["category_name"]."<a href=\"?actie=wis&categoryiddel=$categoryiddel\">Wissen</a><br>\n";
        }
    }
}

else{ //laad de tabel
?>

Wis de volgende categorie:<br>
<?php
    $resultaatdelete
= mysqli_query($db, "SELECT * FROM category"); // vul de variabale met de gegevens uit de tabel category
    while ($rij = mysqli_fetch_array($resultaatdelete, MYSQLI_BOTH)){ //zolang er een rij gevuld wordt, data weergeven
        $categoryiddel = $rij["category_id"];
        echo $rij["category_name"]."<a href=\"?actie=wis&categoryiddel=$categoryiddel\">Wissen</a><br>\n";
    }
}

?>

</body>
</html>
Gewijzigd op 19/01/2016 00:09:31 door Nick VanRossem
 
- SanThe -

- SanThe -

18/01/2016 23:03:13
Quote Anchor link
if (isset($_GET["actie"]) == "wis" ...)

De function isset() geeft true of false terug en zal dus nooit tekst zijn.
if (isset($_GET["actie"]) and $_GET["actie"] == "wis" ...)

$PHP_SELF kan je gewoon weghalen.
 
Nick VanRossem

Nick VanRossem

18/01/2016 23:58:19
Quote Anchor link
Bedankt - SanThe -, ik heb de aanpassingen uitgevoerd en het script van vorige post ook geupdate.

uit leergierigheid: is er een reden waarom je "AND" gebruikt en niet "&&"?
Het verschil dat ik begrijp is dat "&&" een hogere voorrang heeft ten opzichte van "and".
 
- SanThe -

- SanThe -

19/01/2016 00:56:31
Quote Anchor link
Ik vind het beter leesbaar.
 
Ivo P

Ivo P

19/01/2016 12:31:30
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php if (isset($_GET["actie"]) and $_GET["actie"] == "wis" && ctype_digit($_GET["categoryiddel"])) { //is er een categorie ingevoerd?
?>


daar kan nog steeds die 2e ontbreken, dus ook isset() erbij

ik zou het schrijven als onder, maar met isset kan ook

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php

if(filter_input(INPUT_GET, 'actie') == 'wis' && filter_input(INPUT_GET,'categoryiddel', FILTER_VALIDATE_INT)) { //is er een categorie ingevoerd?
?>
 



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.