FOK!forum / Digital Corner / PHP mysql Delete
Promilledinsdag 11 april 2017 @ 23:17
hallo fokkers,

ik kom er niet uit met mijn opdracht voor PHP. Ik heb de delete query ergens van gekopieerd en probeer het te laten werken alleen mijn site geeft dus een error. Zelf denk ik dat ik een fout heb in de tabel, alleen krijg het niet opgelost. Geeft trouwens error aan in die regel dat er , of ; mist.

hier de code... alvast bedankt:
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
<?php
            $servername 
"localhost";
            
$username "root";
            
$password "";
            
$dbname "ArkEvolved";
            
        
// Create connection
            
$conn = new mysqli($servername$username$password$dbname);
        
// Check connection
        
if ($conn->connect_error) {
        die(
"Connection failed: " $conn->connect_error);
            } 
            
        if(isset(
$_POST['delete'])){

            
$deleteQuery="DELETE from arkevolved where id='$_post[hidden]'";
            
mysql_query($deleteQuery,$con);

        }    
            
            
//select data from database
            
$sql "SELECT id, name, map FROM arkevolved";
            
$result mysqli_query($conn$sql);

            if (
$result->num_rows 0) {
                
                
                echo 
"<table><tr><th>ID</th><th>Name</th><th>Diet</th></tr>";
        
                while(
$row $result->fetch_assoc()) {
                echo 
"<tr><td>".$row["id"]."</td><td>".$row["name"]." </td>   <td>".$row["map"]."</td><td>".$row
                
"<input type=submit name=delete  value=delete" "'</td></tr>";
            }
                echo 
"</table>";
            } else {
                echo 
"0 results";
            }
            
$conn->close();    

    
}
?>


[ Bericht 71% gewijzigd door Fred op 12-04-2017 08:55:01 (PHP-tags toegevoegd) ]
Promilledinsdag 11 april 2017 @ 23:25
Ik krijg trouwens de error op elke pagina. op de inlog pagina, home etc.

het connecten met de database werkte in ieder geval, als ik weg haal wat ik erin heb gezet doet hij het weer zoals het was... alleen dan natuurlijk zonder delete knop.
Farenjidinsdag 11 april 2017 @ 23:27
exploits_of_a_mom.png
Reemidinsdag 11 april 2017 @ 23:34
De error geeft toch gewoon het regelnummer aan? Dan weet je waar het probleem zit.
mstxdinsdag 11 april 2017 @ 23:40
Koop aub een ander php boek of zoek wat recente tutorials, deze code lijkt wel uit 2002 te stammen. En verder gewoon op de regel kijken waar volgens de foutmelding de fout zit.
Barrahdinsdag 11 april 2017 @ 23:43
Plaats eens een exit() om je querystring om te zien hoe die er precies uitziet bij het uitvoeren?

Ik vermoed dat je $_post moet vervangen door $_POST.

Maar ik zou me eerst eens verdiepen in beveiliging van PHP-applicaties voor je dit soort scripts in het wild loslaat. Hoe je bijvoorbeeld MySQL-injectie kunt voorkomen.

Prima om in het begin wat te copy-pasten, maar om nieuwe talen echt te leren en verantwoord te kunnen toepassen daar komt wel wat meer bij kijken.
mscholwoensdag 12 april 2017 @ 00:04
1) we hebben op fok een php tag: php.png
gebruik het..

2) ik ben er een hele tijd uit, maar ik zou zeggen dat je bij je delete query wat punten mist
Ralphmeisterwoensdag 12 april 2017 @ 01:37
Er is al genoeg gezegd over de belabberde code maar pas de delete regel eens aan naar onderstaande..

1$deleteQuery="DELETE from arkevolved where id=".$_POST["hidden"];
Peunagewoensdag 12 april 2017 @ 03:25
Waar is de error?
Barrahwoensdag 12 april 2017 @ 06:49
quote:
0s.gif Op woensdag 12 april 2017 01:37 schreef Ralphmeister het volgende:
Er is al genoeg gezegd over de belabberde code maar pas de delete regel eens aan naar onderstaande..
[ code verwijderd ]

Maak er dan op zijn minst (int)$_POST van...
Farenjiwoensdag 12 april 2017 @ 10:14
quote:
1s.gif Op woensdag 12 april 2017 06:49 schreef Barrah het volgende:

[..]

Maak er dan op zijn minst (int)$_POST van...
Je moet gewoon een moderne db lib gebruiken, met ondersteuning voor sql placeholders. Niet zelf het wiel opnieuw gaan uitvinden. Want wat doe je dan als je een string als sql argument wil gebruiken? De meeste oplossingen die daarvoor zelf verzonnen worden zijn zo lek als een mandje. Doe dat niet.

Zo bijv met PDO:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
try {
    
$dbh = new PDO($dsn$user$password);
} catch (
PDOException $e) {
    die( 
'Connection failed: ' $e->getMessage() );
}

$sql "DELETE from arkevolved where id = :id";
$sth $dbh->prepare($sql);
$sth->execute( array( ':id' => $_POST['hidden'] ) );
// etc.
?>
Barrahwoensdag 12 april 2017 @ 11:06
quote:
0s.gif Op woensdag 12 april 2017 10:14 schreef Farenji het volgende:

[..]

Je moet gewoon een moderne db lib gebruiken, met ondersteuning voor sql placeholders. Niet zelf het wiel opnieuw gaan uitvinden. Want wat doe je dan als je een string als sql argument wil gebruiken? De meeste oplossingen die daarvoor zelf verzonnen worden zijn zo lek als een mandje. Doe dat niet.

Zo bijv met PDO:
[ code verwijderd ]

Dit is inderdaad het echte antwoord. Maar gezien het beginnersniveau van TS zou ik niet teveel verwachten. ;)
Aaargh!woensdag 12 april 2017 @ 11:48
quote:
0s.gif Op woensdag 12 april 2017 10:14 schreef Farenji het volgende:

[..]

Je moet gewoon een moderne db lib gebruiken, met ondersteuning voor sql placeholders
Nog beter is om ook gelijk een moderne taal te gebruiken en met een HELE grote boog om PHP heen te lopen.
mscholwoensdag 12 april 2017 @ 13:34
quote:
0s.gif Op woensdag 12 april 2017 11:48 schreef Aaargh! het volgende:

[..]

Nog beter is om ook gelijk een moderne taal te gebruiken en met een HELE grote boog om PHP heen te lopen.
ben wel benieuwd welke moderne serverside taal je dan bedoeld?
Aaargh!woensdag 12 april 2017 @ 13:42
quote:
0s.gif Op woensdag 12 april 2017 13:34 schreef mschol het volgende:

[..]

ben wel benieuwd welke moderne serverside taal je dan bedoeld?
Er zijn diverse mogelijkheden afhankelijk van wat je precies wilt doen.

Zo kan je bijvoorbeeld server-side Swift gebruiken. Een andere leuke optie is Scala met Akka. Of je kiest Go, etc. etc.
Farenjiwoensdag 12 april 2017 @ 13:55
quote:
0s.gif Op woensdag 12 april 2017 13:42 schreef Aaargh! het volgende:

[..]

Er zijn diverse mogelijkheden afhankelijk van wat je precies wilt doen.

Zo kan je bijvoorbeeld server-side Swift gebruiken. Een andere leuke optie is Scala met Akka. Of je kiest Go, etc. etc.
Of Perl in combinatie met PSGI!
Aaargh!woensdag 12 april 2017 @ 14:51
quote:
7s.gif Op woensdag 12 april 2017 13:55 schreef Farenji het volgende:

[..]

Of Perl in combinatie met PSGI!
Perl is als taal haast nog erger als PHP
Farenjiwoensdag 12 april 2017 @ 15:05
quote:
0s.gif Op woensdag 12 april 2017 14:51 schreef Aaargh! het volgende:

[..]

Perl is als taal haast nog erger als PHP
Dat is een misvatting, veroorzaakt door onwetendheid. Perl is pure kunst. Poezie van de hoogste orde! _O_
Scarlet_Dragonflywoensdag 12 april 2017 @ 15:05
quote:
1s.gif Op dinsdag 11 april 2017 23:17 schreef Promille het volgende:
hallo fokkers,
Hallo Promille,

quote:
ik kom er niet uit met mijn opdracht voor PHP. Ik heb de delete query ergens van gekopieerd en probeer het te laten werken alleen mijn site geeft dus een error.
Ik zal even in m'n glazenbol kijken wat je bedoelt met "een error". Of kun je misschien ons helpen met wat voor error je krijgt?

quote:
Zelf denk ik dat ik een fout heb in de tabel, alleen krijg het niet opgelost.
Welke tabel? Hoe ziet die tabel eruit? Als jij denkt dat het aan die tabel ligt, dan lijkt het me vrij relevant om die gegevens ook met ons te delen. Hoe moeten wij anders helpen?

quote:
Geeft trouwens error aan in die regel dat er , of ; mist.
Welke regel? Welke error?

quote:
hier de code... alvast bedankt:
[ code verwijderd ]
Oke, ik zal de sql-injection en het totale gebrek aan controle of degene die je pagina aanroept daadwerkelijk de delete zou mogen uitvoeren even negeren. :o

Bedankt voor de code, maar zoals je zelf al aangeeft gaat er misschien iets mis met hoe je tabel is opgezet (geef die dan ook even! }:| ) en krijg je schijnbaar een error (geef die dan ook even! }:| )

Succes met je opdracht...
Aaargh!woensdag 12 april 2017 @ 16:14
quote:
0s.gif Op woensdag 12 april 2017 15:05 schreef Farenji het volgende:

[..]

Dat is een misvatting, veroorzaakt door onwetendheid. Perl is pure kunst. Poezie van de hoogste orde! _O_
Perl is een write-only taal. Je kan er wel dingen in schrijven maar probeer achteraf maar eens te achterhalen wat een Perl script doet.

Als je de shift knop ingedrukt houdt en je ramt 5 minuten lang op de bovenste rij van je toetsenbord is de kans groot dat het een geldig Perl script is.

Enige wat erger is is het config formaat van Sendmail.
Alfjewoensdag 12 april 2017 @ 16:20
Ik vermoed zomaar dat je $_post[hidden] tussen { } moet zetten.

Verder helpt het inderdaad enorm om meer informatie te geven, we hebben geen glazen bol. Over het algemeen zijn programmeurs erg behulpzaam naar elkaar toe, maar alleen als "we" merken dat de ander er zijn best voor wil doen. Gevalletjes "hier is mijn code, fix het!" hebben we geen zin in.
Scarlet_Dragonflywoensdag 12 april 2017 @ 16:22
Ow kijk, gelukkig is dit ook het enige topic wat TS op Fok! heeft aangemaakt en is hij sindsdien niet meer online geweest...
igi0nwoensdag 12 april 2017 @ 16:27
quote:
1s.gif Op dinsdag 11 april 2017 23:17 schreef Promille het volgende:
hallo fokkers,

Opdracht voor de Hanze hogeschool, CMD?
Farenjiwoensdag 12 april 2017 @ 16:48
quote:
0s.gif Op woensdag 12 april 2017 16:14 schreef Aaargh! het volgende:

[..]

Perl is een write-only taal. Je kan er wel dingen in schrijven maar probeer achteraf maar eens te achterhalen wat een Perl script doet.

Als je de shift knop ingedrukt houdt en je ramt 5 minuten lang op de bovenste rij van je toetsenbord is de kans groot dat het een geldig Perl script is.

Enige wat erger is is het config formaat van Sendmail.
Ik wilde het beroemde 99 bottles of beer script posten maar die compileert niet meer in moderne versies van perl. ;(