Avatar billede madser22 Novice
12. januar 2016 - 22:09 Der er 14 kommentarer og
1 løsning

html delete form

Hejsa

Det er vel virkelig enkelt, men jeg kan simplethen ikke finde ud af det. Jeg har en MySQL Database med følgende columns og values. id er Primary Key:

id      age
1        20
2        38
3        56

Jeg vil gerne have lavet en knap, så jeg kan slette hele mit table. Jeg har prøvet at lave følgende:

index.html:

    <form method = "post" action = "delete.php">
        <input name="delete" type="submit" id="delete" value="Delete">
    </form>


delete.php:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//include('session.php');
// Selecting Database
include 'dbconfic.inc.php';

$query = ("DELETE FROM numbertable");

Jeg er virkelig så meget i tvivl om hvordan jeg får min knap aktiveret, så den henviser til min delete.php og SQL Query bliver eksekveret.

Er der nogle som har en ide til det?
Avatar billede erikjacobsen Ekspert
12. januar 2016 - 22:21 #1
Der kan være flere ting galt, når du ikke viser al kode.

Måske....
1) Den <form> du viser, er inde i en anden <form> - det kan man ikke
2) Din $query = ("DELETE FROM numbertable"); skal nok være:
    $query = "DELETE FROM numbertable";
  men vigtigst: bliver den udført bagefter?

Og pas på: nu kan alle gætte sig til delete.php, og slette når de vil.
Avatar billede madser22 Novice
12. januar 2016 - 22:26 #2
tak for svaret. min html form er bare inde i et div tag

<div>
    <form method = "post" action = "delete.php">
        <input name="delete" type="submit" id="delete" value="Delete">
    </form>

</div>

Det vil sige min html form er ok?
Hvad tænker du med at de kan slette delete.php?
Avatar billede madser22 Novice
12. januar 2016 - 22:30 #3
Query bliver ikke udført. Jeg får en hvid side, og når jeg går tilbage og opdatere er min tal ikke væk, og heller ikke i databasen
Avatar billede phpnoob Novice
12. januar 2016 - 22:33 #4
Er det ikke bedst at programmere sine sider i objektorienteret programmering med preparestatment imod sql injektion istedet for det gamle det bliver vidst ikke brugt så meget mere?
Avatar billede acore Ekspert
12. januar 2016 - 22:48 #5
Start med at indsætte

Echo("herre we are");

Eller et eller andet der kan overbevise dig om at delete.php kaldes som den skal.

Dernæst: Det ser ikke ud til at $auery bruges dvs der udføres ingenting med databasen.
Avatar billede acore Ekspert
12. januar 2016 - 22:50 #6
...og til mig selv: skriv ikke på ipad i sengen. For mange typos. Sorry
Avatar billede madser22 Novice
12. januar 2016 - 23:00 #7
tak for svaret Acore.

Here we are kommer op, når jeg trykker på delete :)
Avatar billede acore Ekspert
13. januar 2016 - 06:33 #8
Ok. Så virker formen. Men mangler du ikke et databasekald med $query som argument?
Avatar billede acore Ekspert
13. januar 2016 - 08:08 #9
Det kunne være

mysql_query($query);

men kommer an på hvilket interface til mysql du anvender.
Avatar billede madser22 Novice
13. januar 2016 - 10:32 #10
Tak for svaret. Jeg prøver lige at kigge på det når jeg kommer hjem fra arbejde
Avatar billede madser22 Novice
13. januar 2016 - 10:42 #11
Tænker du på $stmt->execute(); ?
Avatar billede acore Ekspert
13. januar 2016 - 11:48 #12
Måske - uden at det ser helt rigtigt ud - der mangler fx noget, der binder $query til eksekveringen af sqk-kaldet, men da jeg ikke kender den bagved-liggende kode - fx dbconfic.inc.php er det svært at svare på.
Avatar billede madser22 Novice
13. januar 2016 - 20:26 #13
Det kan jeg egentligt godt forstå :-)

Min connection ser sådan ud:

<?php
    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "root";
    $db_name  = "roulette_db";
    // connection:
    $mysqli = new mysqli($db_host, $db_user, $db_pass , $db_name);
    // tjek conenction:
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
    }
   
    // vi kører utf-8 på connection:
    $mysqli->set_charset("utf-8");   
?>

Jeg prøvede med et select statement, og det virker helt fint. Så det er nok noget med det du siger. Dette virker fint:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//include('session.php');
// Selecting Database
include 'dbconfic.inc.php';



$stmt = $mysqli->prepare("SELECT * FROM numbertable") or die($mysqli->error);

// execute prepared statement
    $stmt->execute();
   
    // gør variabler klar:   
    $number = null;   
    $n_id = null;
   
    /* bind result variabler */
    $stmt->bind_result($n_id, $number);
   
    /* fetch values for hver row, her kun 1 row dog: */
   
    while ($stmt->fetch()) {
        printf($n_id,$number);
    }   
 
    // luk statement                       
    $stmt->close();

    // luk connection
    $mysqli->close();   

?>
Avatar billede madser22 Novice
13. januar 2016 - 20:30 #14
Det var det du sagde :-) Ligger du et svar og mange tak for hjælpen.

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//include('session.php');
// Selecting Database
include 'dbconfic.inc.php';

$stmt = $mysqli->prepare("DELETE FROM numbertable") or die($mysqli->error);

// execute prepared statement
    $stmt->execute();
 
    // luk statement                       
    $stmt->close();

    // luk connection
    $mysqli->close();   

?>
Avatar billede acore Ekspert
13. januar 2016 - 22:06 #15
Godt du fik det løst :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester