PHP met delete functie

Pagina: 1
Acties:
  • 1.375 views

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Hallo. Ik moest onlangs voor een opdracht een php script maken, die gegevens uit een MySQL database haalt, en ze kan bewerken. De pagina moest een lijst met mp3tjes laten zien. Nu heb ik dit script al een aardig eindje, maar het lukt me niet om de delete functie naar behoren te laten werken. Het volledige script staat hieronder. Als ik dit script uitvoer in VertrigoServ, krijg ik wel een melding dat de data verwijdert is, maar het gebeurt niet. De data wordt verwijdert met allemaal checkboxjes, en onderaan de pagina een submit button. Wat klopt er niet aan deze pagina?



<html>
<head>
<title>
Tracklist
</title>
<h1>
Tracklist
</h1>
<br>
<body background = 'tiles.jpg'>
<table border = 1 bgcolor = green align = center width = "1000" >
<TR><TD><b><FONT color = "red">Artiest</FONT></TD></b><TD><b><FONT color = "blue">Titel</FONT></TD></b><TD><b><FONT color = "white">Album</FONT></TD></b><TD><b><FONT color = "black">Tracknummer</FONT></TD></b><TD><b><FONT color = 'white'>Delete</FONT></b></TD></TR>

<?php

$artist = $_GET["artist"];
$title = $_GET["title"];
$album = $_GET["album"];
$tracknumber = $_GET["tracknumber"];


$connectie = mysql_connect("localhost", "root",
"vertrigo");

mysql_select_db("tracks");

$sql = "SELECT artist, title, album, tracknumber, id
FROM tracks";

if(isset($_POST[del])) {
for($i = 1; $i <= $_POST[counter]; $i++) {
$box = "box" . $i;
$post = $_POST[$box];
if(!empty($post)) {
mysql_query("DELETE FROM tracks WHERE `id`='" . $post . "'");
}
}
echo "<script language=\"javascript\">window.alert('Selected tracks are deleted.');</script>";
}


$sql = "SELECT artist, title, album, tracknumber, id
FROM tracks";


$result = mysql_query($sql);

while( $row = mysql_fetch_assoc($result) )
{

$count++ ?>
<TR><TD><u><FONT color="Red"><?php echo $row["artist"] . "<br>";?></FONT></TD>
<TD><i><FONT color = "blue"><?php echo $row["title"] . "<br>";?></FONT></TD>
<TD><b><FONT color = "white"><?php echo $row["album"] . "<br>";?></FONT></TD>
<TD><FONT color = "black"><?php echo $row["tracknumber"] . "<br>";?></FONT></TD>
<TD> <input type=checkbox name='box<?php echo $count; ?>' value =<? echo $row["id"];?> ></TD>

<?
}
mysql_close($connectie);
?>
<table align = center>
<TR><TD width = 925></TD><TD>
<FORM method ="post">
<input type = "submit" name= "del" value = "delete" />
</FORM>
</TD</TR>

</table>


<h2>
Nummer toevoegen
</h2>
<form action="insert.php" method="post" align = center >
Artiest: <input type="text" name="artist" />
Titel: <input type="text" name="title" />
Album: <input type="text" name="album" />
tracknr: <input type="text" name="tracknumber" />
<input type="submit" value = "Invoegen"/>
</form>
<br>
<br>
<h2>
Nummer zoeken
</h2>
<form name="form" action="search.php" method="get">
<input type="text" name="q" />
<input type="submit" name="Submit" value="Zoeken" />
</form>
<br>
</body>
</html>[/i][/i][/i]

  • Orion84
  • Registratie: April 2002
  • Laatst online: 18:28

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

* Orion84 mompelt iets over [code] tags :+

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


  • Mud
  • Registratie: Februari 2007
  • Laatst online: 10-02 21:12

Mud

* Mud mompelt iets over verkeerde forum :+

  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 13:38

ReseTTim

Chocolate addicted

begin is met een printlijn te maken van de $box, $post enzo.. dan weet je meer wat er gebeurd ;)

Mijn profiel - Te koop: Overzicht van spullen..


  • Grum
  • Registratie: Juni 2001
  • Niet online
*kuch*get*kuch*vs*kuch*post*kuch*

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
ok, dat moet ik in mijn for loop doen, neem ik aan toch?

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 16:44

Kwastie

Awesomeness

Gebruik een $_GET variable ipv een $_POST variable.
dan krijgt elke mp3 een link naar bijv. delete.php en vang je bijv. het id af. en verwijderd hem vervolgens uit de database. Stel dat je meerdere wilt verwijderen, dan kun je altijd nog een POST gebruiken.

When I get sad i stop being sad and be awesome instead


  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
maar het is juist de bedoeling dat je meerde items kan verwijderen, anders zou je ook een paar tekstveldjes met een get variable kunnen maken.

[ Voor 4% gewijzigd door martijnmaas370 op 12-03-2008 15:34 ]


  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Als ik in mijn php script de volgende regel zet:
<? echo $_POST; ?>

dan komt er in mijn pagina de tekst: Array. Misschien kunnen jullie daar iets mee

  • sky-
  • Registratie: November 2005
  • Niet online

sky-

ℓℓ👌

Een array kan je niet echoën, daarvoor gebruik je <?php print_r($_POST); ?>

don't be afraid of machines, be afraid of the people who build and train them.


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

martijnmaas370 schreef op woensdag 12 maart 2008 @ 15:36:
Als ik in mijn php script de volgende regel zet:
<? echo $_POST; ?>

dan komt er in mijn pagina de tekst: Array. Misschien kunnen jullie daar iets mee
<?php print_r($_POST); ?>

Going for adventure, lots of sun and a convertible! | GMT-8


  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
hm als ik de pagina laadt, met <?php print_r($_POST); ?> staat er: Array ( ), en als ik een paar items selecteer, en op delete klik, staat er: Array ( [del] => delete )

  • Frank Timmer
  • Registratie: Maart 2000
  • Laatst online: 13:41
De selectboxen staan niet in de form, maar erboven...

  • Sanch
  • Registratie: December 2007
  • Laatst online: 09-01 10:47
Misschien is het handig om je checkboxes in je form te zetten?

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Je bedoelt het delete FORM, maar als ik die checkboxen daar in zet, staat hij toch niet meer in de loop? dan laat hij toch slechts een enkele checkbox zien?

Verwijderd

martijnmaas370 schreef op woensdag 12 maart 2008 @ 15:49:
Je bedoelt het delete FORM, maar als ik die checkboxen daar in zet, staat hij toch niet meer in de loop? dan laat hij toch slechts een enkele checkbox zien?
Sorry hoor maar weet je wel wat je aan het doen bent? Dit is wel heel basic html-kennis. Die form-tag boven die loop uitspugen en je bent klaar. Die checkboxen moeten natuurlijk wel IN je form staan als je die wil versturen.

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Als ik hem in het delete FORM zet, komt er alleen onder de tabel een checkbox te staan, als ik die selecteer, en op delete klik, wordt de $_POST waarde wel opeens: Array ( [del] => delete [box48] => )

Verwijderd

Hou er ff rekening mee dat checkboxen alleen verstuurd worden als ze zijn aangevinkt...

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Zo ziet mijn code er nu uit:

<html>
<head>
<title>
Tracklist
</title>
<h1>
Tracklist
</h1>
<br>
<body background = 'tiles.jpg'>
<table border = 1 bgcolor = green align = center width = "1000" >
<TR><TD><b><FONT color = "red">Artiest</FONT></TD></b><TD><b><FONT color = "blue">Titel</FONT></TD></b><TD><b><FONT color = "white">Album</FONT></TD></b><TD><b><FONT color = "black">Tracknummer</FONT></TD></b><TD><b><FONT color = 'white'>Delete</FONT></b></TD></TR>

<?php

$post = $_POST["del"];
$artist = $_GET["artist"];
$title = $_GET["title"];
$album = $_GET["album"];
$tracknumber = $_GET["tracknumber"];


$connectie = mysql_connect("localhost", "root",
"vertrigo");

mysql_select_db("tracks");

$sql = "SELECT artist, title, album, tracknumber, id
FROM tracks";

if(isset($_POST[del])) {
for($i = 1; $i <= $_POST[counter]; $i++) {
$box = "box" . $i;
$post = $_POST[$box];
if(!empty($post)) {
mysql_query("DELETE FROM tracks WHERE `id`='" . $post . "'");
}
}
echo "<script language=\"javascript\">window.alert('Selected tracks are deleted.');</script>";
}


$sql = "SELECT artist, title, album, tracknumber, id
FROM tracks";


$result = mysql_query($sql);
?><FORM action = "mp3.php" action="post"><?
while( $row = mysql_fetch_assoc($result) )
{

$count++ ?>
<TR><TD><u><FONT color="Red"><?php echo $row["artist"] . "<br>";?></FONT></TD>
<TD><i><FONT color = "blue"><?php echo $row["title"] . "<br>";?></FONT></TD>
<TD><b><FONT color = "white"><?php echo $row["album"] . "<br>";?></FONT></TD>
<TD><FONT color = "black"><?php echo $row["tracknumber"] . "<br>";?></FONT></TD>
<TD><input type=checkbox name='box<?php echo $count; ?>' value =<? echo $row["id"];?> ></TD></TR>


<?
}
mysql_close($connectie);
?>
<table align = center>
<TR><TD width = 925></TD><TD>

<input type = "submit" name= "del" value = "delete" />

</FORM>
</TD</TR>
</table>
<?php print_r($_POST); ?>


<h2>
Nummer toevoegen
</h2>
<form action="insert.php" method="post" align = center >
Artiest: <input type="text" name="artist" />
Titel: <input type="text" name="title" />
Album: <input type="text" name="album" />
tracknr: <input type="text" name="tracknumber" />
<input type="submit" value = "Invoegen"/>
</form>
<br>
<br>
<h2>
Nummer zoeken
</h2>
<form name="form" action="search.php" method="get">
<input type="text" name="q" />
<input type="submit" name="Submit" value="Zoeken" />
</form>
<br>
</body>
</html>

hij krijgt echter nog steeds geen waarde mee, als ik op delete druk.

  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 13:38

ReseTTim

Chocolate addicted

doe is zo... ;)

PHP:
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
<?php

$post = $_POST["del"];
$artist = $_GET["artist"];
$title = $_GET["title"];
$album = $_GET["album"];
$tracknumber = $_GET["tracknumber"];


$connectie = mysql_connect("localhost", "root",
"vertrigo");

mysql_select_db("tracks");

$sql = "SELECT artist, title, album, tracknumber, id
FROM tracks";

if(isset($_POST[del])) {
for($i = 1; $i <= $_POST[counter]; $i++) {
$box = "box" . $i;
$post = $_POST[$box];
if(!empty($post)) {
mysql_query("DELETE FROM tracks WHERE `id`='" . $post . "'");
}
}
echo "<script language=\"javascript\">window.alert('Selected tracks are deleted.');</script>";
}


$sql = "SELECT artist, title, album, tracknumber, id
FROM tracks";


$result = mysql_query($sql);
?><FORM action = "mp3.php" action="post"><?
while( $row = mysql_fetch_assoc($result) )
{

$count++ ?>

Mijn profiel - Te koop: Overzicht van spullen..


  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Ik zal het onthouden ;)

Verwijderd

Zorg er eerst eens voor dat die html in orde komt, je form tag staat op plekken waar je hem niet eens kan zetten. Doe ff zoiets:
code:
1
2
3
4
5
<form>
<table>
checkboxes
</table>
</form>


En gebruik die code-tags eens, je code is echt niet te lezen op deze manier :X

  • Sanch
  • Registratie: December 2007
  • Laatst online: 09-01 10:47
zet die <? echo $row["id"];?> eens tussen aanhalingstekens ;)

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Sanch schreef op woensdag 12 maart 2008 @ 16:11:
zet die <? echo $row["id"];?> eens tussen aanhalingstekens ;)
gedaan!

  • Sanch
  • Registratie: December 2007
  • Laatst online: 09-01 10:47
<FORM action = "mp3.php" method="post">
ipv
<FORM action = "mp3.php" action="post">

en je delete query werkt niet omdat je nooit een counter variable meegeeft in je post

[ Voor 34% gewijzigd door Sanch op 12-03-2008 16:30 ]


  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
Ja, dat had ik 5 minuten geleden al gezien. Maar toch bedankt

  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
De pagina geeft nu wel de te verwijderen checkboxen weer, namelijk: Array ( [box47] => 633 [box48] => 632 [del] => delete )
Maar wat moet ik nu nog doen, om hem ook daadwerkelijk te laten verwijderen? Mijn code ziet er op dit moment als volgt uit:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<html>
<head>
<title>
Tracklist
</title>
<h1>
Tracklist
</h1>
<br>
<body background = 'tiles.jpg'>
<table border = 1 bgcolor = green align = center width = "1000" >
<TR><TD><b><FONT color = "red">Artiest</FONT></TD></b><TD><b><FONT color = "blue">Titel</FONT></TD></b><TD><b><FONT color = "white">Album</FONT></TD></b><TD><b><FONT color = "black">Tracknummer</FONT></TD></b><TD><b><FONT color = 'white'>Delete</FONT></b></TD></TR>

<?php

        $post = $_POST["del"];
    $artist = $_GET["artist"];
    $title = $_GET["title"];
    $album = $_GET["album"];
    $tracknumber = $_GET["tracknumber"];

    

    $connectie = mysql_connect("localhost", "root",
                "vertrigo");

    mysql_select_db("tracks"); 

$sql = "SELECT artist, title, album, tracknumber, id
            FROM tracks";

if(isset($_POST[del])) {
    for($i = 1; $i <= $_POST[counter]; $i++) {
        $box = "box" . $i;
        $post = $_POST[$box];
        if(!empty($post)) {
            mysql_query("DELETE FROM tracks WHERE `id`='" . $post . "'");
        }
    }
    echo "<script language=\"javascript\">window.alert('Selected tracks are deleted.');</script>";
}

    
    $sql = "SELECT artist, title, album, tracknumber, id
            FROM tracks";
            
    
    $result = mysql_query($sql);
    while( $row = mysql_fetch_assoc($result) ) 
{
 
 $count++ ?>
    <TR><TD><u><FONT color="Red"><?php echo $row["artist"] . "<br>";?></FONT></TD>
    <TD><i><FONT color = "blue"><?php echo $row["title"] . "<br>";?></FONT></TD>
    <TD><b><FONT color = "white"><?php echo $row["album"] . "<br>";?></FONT></TD>
    <TD><FONT color = "black"><?php echo $row["tracknumber"] . "<br>";?></FONT></TD>
    <FORM action ="mp3.php" method ="POST"><TD><input type=checkbox name='box<?php echo $count; ?>' value ='<? echo $row["id"];?>' ></TD></TR>
    


    
    <?
}
    ?>
<table align = center>
<TR><TD width = 925></TD><TD>

<input type ="submit"  name="del" value ="delete" />

</FORM>
</TD</TR>
</table>
<?php print_r($_POST); ?>


<h2>
Nummer toevoegen
</h2>
<form action="insert.php" method="post" align = center >
 Artiest: <input type="text" name="artist" />
 Titel: <input type="text" name="title" />
 Album: <input type="text" name="album" />
 tracknr: <input type="text" name="tracknumber" />
 <input type="submit" value = "Invoegen"/>
</form>
<br> 
<br>
<h2>
Nummer zoeken
</h2>
<form name="form" action="search.php" method="get">
  <input type="text" name="q" />
  <input type="submit" name="Submit" value="Zoeken" />
</form>
<? mysql_close($connectie); ?>
<br>
</body>

</html>

[ Voor 4% gewijzigd door martijnmaas370 op 12-03-2008 16:36 ]


  • martijnmaas370
  • Registratie: Augustus 2006
  • Laatst online: 29-12-2025
zou ik het niet kunnen oplossen met een aparte delete.php pagina, waar de querie ook daadwerkelijk uitgevoerd wordt?

  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 13:38

ReseTTim

Chocolate addicted

ik heb geen ervaring van een array te deleten.. maar ik zou voorstellen om de query in een loop te gooien.. zo groot de array is.. en uit de arry kan je het id nr halen en welke box checked is..

Mijn profiel - Te koop: Overzicht van spullen..


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Dit topic hoort niet in WSS, maar in PRG. Ik kan je echter zo ook al vertellen dat 'dump hier je script' topics ook daar niet worden gewaardeerd. Ik stel dus voor dat je de regelgeving aldaar erop doorleest en dan een topic start wat wel voldoet aan de regels :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate

Pagina: 1

Dit topic is gesloten.