Delete dmv SQL querie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tamara

Tamara

05/11/2006 14:56:00
Quote Anchor link
Hallo,

ik ben nog steeds een php noob om het maar even zo te zeggen, maar ik ben nu bezig met een soort mini cms voor mijn site. Alles werkt totnog toe, maar nu wil ik de content van mijn site kunnen veranderen. Ik heb een aparte pagina die mij de inhoud van mijn database laat zien, per type zeg maar. Nu wil ik deze per entrie kunnen verwijderen.

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

include("inc_connect.php");

$result = mysql_query("SELECT * FROM content WHERE ID_type='402' ORDER BY DateTime DESC") or die(mysql_error());  
 
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row into a table
    echo "<tr>
    <td>"
;
    echo $row['ID_type'];
    echo "</td>
    <td>"
;
    echo $row['Name'];
    echo "</td>
    <td>"
;
    echo $row['SourceUrl'];
    echo "</td>
    <td>"
;
    echo "
    <a href='"
;

echo "jij'>Verwijder</a></td></tr>";
}

?>


Nu wil ik op de plek van de link dat hij deze specifieke row verwijderd uit de db, en dan niet op ID_type naar bijvoorbeeld op Name of op Source Url.
Dus als je op verwijder klikt, dat die rij wordt verwijderd.
Hoe kan ik dit het beste aanpakken?
 
PHP hulp

PHP hulp

27/12/2024 07:54:45
 
Dion

Dion

05/11/2006 15:10:00
Quote Anchor link
ik zou het ook zo gauw niet weten, maar ik gebruik deze al een tijd(Niet zelfgemaakt) en werkt goed! alleen nog ffe aanpassen, een een config.php bestandje maken waarmmee je connectie met je db maakt


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
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
<?php
echo "<script language=\"JavaScript\">\n";
    
    echo "function askConfirm(txt,url) {\n";
        echo "if (confirm(txt) == true) {\n";
        echo "document.location=url\n";
        echo "return true;\n";
        echo "} \n";
    echo "}\n";
    
    echo "</script>";
    
    //-- navigatie
    echo "<p><a href=\"" . $_SERVER['PHP_SELF'] . "?show=add\">bericht toevoegen</a> | <a href=\"" . $_SERVER['PHP_SELF'] . "\">overzicht berichten</a></p>";

    //-- toevoegen
    if ($_GET['show'] == "add" || $_POST['show'] == "add")
    {

        if ($_POST['bericht'] && $_POST['msg'] && $_POST['datum'])
        {

            $sql = "INSERT INTO tutorial (id, bericht, msg, datum) VALUES ('', '" . $_POST['bericht'] . "', '" . $_POST['msg'] . "', '" . $_POST['datum'] . "')";
            $res = mysql_query($sql);
            
            if ($res)
            {

                echo "Het bericht is toegevoegd aan de site.";
            }

            else
            {
                echo "Het bericht is nie toegevoegd aan de site";
            }
        }

        else
        {
            if ($_POST['submit'])
                $err = "Enkele velden vergeten.";
                
            if ($_POST['datum'])
                $cdate = $_POST['datum'];
            else
                $cdate = date('d.m.Y');
            
            echo "<p>Plaats een nieuw bericht</p>";
            
            echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
            echo "<input type=\"hidden\" name=\"show\" value=\"add\">";
            echo "Datum: <input type=\"text\" size=\"10\" maxlength=\"10\" value=\"" . $cdate . "\" name=\"datum\"><br>";
            echo "bericht: <input type=\"text\" size=\"30\" name=\"bericht\" value=\"" . stripslashes(htmlentities($_POST['bericht'])) . "\"><br>";
            echo "Bericht:<br>";
            echo "<textarea name=\"msg\" rows=\"10\" cols=\"55\">" . stripslashes(htmlentities($_POST['msg'])) . "</textarea><br>";
            echo "<input type=\"submit\" name=\"submit\" value=\"toevoegen\">";
            echo "</form>";
        }
    }

    //-- verwijderen
    elseif ($_GET["show"] == "del")
    {

        if (is_numeric($_GET["id"]))
        {

            $sql = "DELETE FROM tutorial WHERE id = " . $_GET['id'];
            $res = mysql_query($sql);
            
            $sql_reacties = "DELETE FROM tutorial WHERE tid = " . $_GET['id'];
            mysql_query($sql_reacties);
            
            if ($res)
            {

                echo "Bericht & bijbehorende reacties verwijderd.";
            }

            else
            {
                echo "Bericht & bijbehorende reacties zijn niet verwijderd.";
            }
        }

        else
        {
            echo "Geen geldig id nummer";
        }
    }

    //-- overzicht
    else
    {
        $sql = "SELECT id,naam FROM tutorial ORDER BY id DESC";
        $res = mysql_query($sql);
        
        echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">";
        echo "<tr><td width=\"300\"><b>bericht</b></td><td><b>Wissen</b></td></tr>";
        while ($row = mysql_fetch_array($res))
        {

            echo "<tr><td>" . htmlentities($row['bericht']) . "<br>door " . htmlentities($row['naam']) . "</td><td><a href=\"javascript:askConfirm('Wilt u " . htmlentities($row['bericht']) . " verwijderen?','" . $_SERVER['PHP_SELF'] . "?show=del&id=" . $row['id'] . "');\">wis</a></td></tr>";
        }

        echo "</table>";

}
}
else {
 echo "login first!";
}

?>
 
K i p

K i p

05/11/2006 16:15:00
Quote Anchor link
Ik denk dat Tamara iets anders ((lees: simpeler)) bedoelt.

Aangezien je SELECT * FROM doet (alles selecteren dus), heb je dus ook het id.

Als je nu zo'n linkje maakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    echo '<a href="delete.php?id='.$rij['id'].'">delete</a>';
?>

Dan kun je die entry dus in delete.php verwijderen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    //delete.php
    
    if (!empty($_GET['id']))
    {

        $sql = "DELETE FROM tabel WHERE id = ".addslashes($_GET['id']);
        if (! $res = mysql_query($sql))
        {

            echo 'Er ging iets fout. Gebruikte SQL: <br />'.$sql;
            trigger_error(mysql_error());
        }
    }

?>


Bedoel je zoiets?
 
Tamara

Tamara

05/11/2006 22:07:00
Quote Anchor link
werkt, onwijs bedankt!
 
Frank -

Frank -

06/11/2006 01:01:00
Quote Anchor link
Nadat je een DELETE of een UPDATE hebt uitgevoerd, zul je met mysql_affected_rows() moeten controleren hoeveel rijen er zijn verwijderd of bijgewerkt. Dat de query is gelukt, wil namelijk niet zeggen dat er rijen zijn verwijderd of bijgewerkt, het kan zijn dat er niet 1 record is die aan de WHERE voldoet.

Hier een compleet script met verbeterde invoercontrole, query en de check of er wel wat is verwijderd:
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
<?php
    //delete.php
    
    if (!empty($_GET['id']) && ctype_digit($_GET['id']))
    {

        // addslashes is niet nodig, met ctype_digit() kunnen alleen nummers worden ingevoerd
        $sql = "DELETE FROM tabel WHERE id = ".$_GET['id']." LIMIT 1";
        if (!$res = mysql_query($sql))
        {

            echo 'Er ging iets fout. Gebruikte SQL: <br />'.$sql;
            trigger_error(mysql_error());
        }

        elseif (mysql_affected_rows() > 0)
        {

            // LIMIT 1 aan de query toegevoegd, kan er nooit meer dan 1 record worden verwijderd!
            echo 'Het record is verwijderd.';
        }
    }

?>
 
Tamara

Tamara

06/11/2006 08:56:00
Quote Anchor link
ik heb 2 bestanden: show.php en delete.php. Op het moment dat ik de record heb verwijderd, word ik direct weer naar show.php gestuurd en zie ik dus dat het wel degelijk verwijderd is. Maar ik zal het script weigeren.

Ik zit er ook aan te denken om op dezelfde wijze een "wijzig" optie te maken, maar hoe dat in zijn werk kan gaan zal ik al helemala niet weten...
 
K i p

K i p

06/11/2006 10:39:00
Quote Anchor link
Het idee van de links is hetzelfde:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="edit.php?id='.$rij['id'].'">ofzoiets</a>


Dit doe je dan in edit.php:

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
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        if (ctype_digit($_POST['id']))
        {

            $sql = "UPDATE tabel SET waarde1 = '', waarde2 = '', waarde3 = '', waarde4 = '' WHERE id = ".addslashes($_POST['id'])." LIMIT 1";
            if (! $res = mysql_query($sql))
            {

                echo 'Er ging iets mis in de sql bij: <br />'.$sql.'<br />De fout is <br />'.mysql_error();
            }

            elseif (mysql_affected_rows($res) > 1)
            {

                echo 'Query geslaagd. ';
            }
        }
    }

    else
    {
        ?>

        <form method="post" action="">
            <input type="hidden" name="id" value="" />
            <input type="text" name="waarde1" /> <= Waarde 1<br />
            <input type="text" name="waarde2" /> <= Waarde 2<br />
            <input type="text" name="waarde3" /> <= Waarde 3<br />
            <input type="text" name="waarde4" /> <= Waarde 4<br />
            <input type="submit" name="submit" value="Edit!" id="submit" onClick="document.getElementById('submit').value = '  Auw!  ';" /> <= Klik<br />
        </form>
        <?php
    }
?>



Zoiets ongeveer
 
Tamara

Tamara

06/11/2006 10:46:00
Quote Anchor link
en bij action een php formulier dat de nieuwe waarden in de db schrijft, neem ik aan? onwijs bedankt trouwens, dit helpt me enorm!
 
Tamara

Tamara

06/11/2006 11:33:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $sql = "UPDATE tabel SET waarde1 = '', waarde2 = '', waarde3 = '', waarde4 = '' WHERE id = ".addslashes($_POST['id'])." LIMIT 1"; ?>


wat moet hier tussen de ' ' ?

en hoe kan ik het beste de betreffende entrie laten zien ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?

if(!empty($_GET))
{

extract($_GET);
}

$wat = addslashes($_GET['wat']);  
$hoe = addslashes($_GET['hoe']);

echo "$wat $hoe";
    
?>
ik probeerde zoiets om te kijken of ik zo de rest uit de betreffende entrie kon weergeven, ook met $post werkt het niet

sorry voor mijn vele vragen!
 
Tamara

Tamara

07/11/2006 11:00:00
Quote Anchor link
joee edit scriptje werkt niet :(

ik snap niet helemaal hoe die querie werkte....

en nogmaals, hoe kan ik het beste de inhoud van de betreffende entry weergeven?
 
Joren de Wit

Joren de Wit

07/11/2006 11:06:00
Quote Anchor link
Betreffende entry, je bedoelt url?

Stel je hebt index.php?wat=1&hoe=2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(isset($_GET['wat'], $_GET['hoe']))
{

    echo $_GET['wat']; // 1
    echo $_GET['hoe']; // 2
}
?>


ps. Wat je tussen die '' in moet vullen, zijn natuurlijk de nieuwe waarden van die velden.

Edit:
typo
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Tamara

Tamara

07/11/2006 11:22:00
Quote Anchor link
nee, ik heb bewerk.php?id=1

dus hij bewerkt hetgene met het betreffende id ..
(tenminste dat zou ie moeten doen maar ik krijg het niet voor elkaar)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?

$query
= "SELECT * FROM up WHERE id='" . $_POST["id"]  ."'";

$result = mysql_query($query);

if(isset($_POST['wat'], $_POST['hoe']))
{

    echo $_POST['wat']; // 1
    echo $_POST['hoe']; // 2
}

?>


zoiets werkt dus ook niet

ik wil graag dus selecteren uit de db het betreffende id waarop ik heb geklikt zeg maar, en dan de rest wat daarbij hoort weergeven

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo '<td valign="top" align="right"><a href="bewerk.php?id='.$row['id'].'"><img src="bewerk.gif" border="0"> Bewerk</a></td></tr>'; ?>


dit is het script wat de bewerkpagina aanroept
Gewijzigd op 01/01/1970 01:00:00 door Tamara
 
Joren de Wit

Joren de Wit

07/11/2006 11:29:00
Quote Anchor link
Nee, de variabele staat in de url, dus is het een GET variabele die je met de superglobal $_GET op moet halen. Verander dus $_POST in $_GET.

Bouw daarnaast een stukje veiligheid in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']))
{

    $query = "
        SELECT *
        FROM up
        WHERE id = "
. $_GET['id'] ."
        "
;
}

?>


Zorg ook voor een stukje foutafhandeling bij het uitvoeren van je query. Vroeg of laat zal deze altijd wel eens mislukken!

En ja de GET variabelen 'wat' en 'hoe' bestaan niet, dus die zullen ook niet weergegeven worden.
 
Tamara

Tamara

07/11/2006 11:45:00
Quote Anchor link
hoe kan ik die ook getten dan?

daar gaat het om, ik wil kunnen zien wat ik bewerk
 
Joren de Wit

Joren de Wit

07/11/2006 13:29:00
Quote Anchor link
Ik snap niet wat je bedoelt? Alles wat jij als GET variabele in de url zet waarmee je een bepaalde pagina oproept, kun je met de superglobal $_GET ophalen.
 
Tamara

Tamara

07/11/2006 13:31:00
Quote Anchor link
En ja de GET variabelen 'wat' en 'hoe' bestaan niet, dus die zullen ook niet weergegeven worden.

hoe kan ik deze variabelen wel ophalen?
 
Frank -

Frank -

07/11/2006 13:39:00
Quote Anchor link
Tamara schreef op 07.11.2006 13:31:
En ja de GET variabelen 'wat' en 'hoe' bestaan niet, dus die zullen ook niet weergegeven worden.

hoe kan ik deze variabelen wel ophalen?
Sorry, maar ik ben de draad kwijt.

Je stelt dat de variabelen 'wat' en 'hoe' niet bestaan en vervolgens vraag je hoe je deze nietbestaande variabelen kunt ophalen. Sorry voor het intrappen van de openstaande deur, maar iets wat niet bestaat, kun je ook niet ophalen.

'wat' en 'hoe' zullen in de url moeten staan of via een POST-formulier moeten worden doorgegeven aan het script. Maar dat hebben anderen ook al gezegd.

Kortom, probeer eens duidelijk uit te leggen wat het doel is, waarom wil je 'wat' en 'hoe' in je script opvragen, welke inhoud moeten deze hebben en wat ga je daar mee doen. Hopelijk kunnen we je dan verder helpen.
 
Tamara

Tamara

07/11/2006 14:10:00
Quote Anchor link
IK stel niet dat de variabelen wat en hoe niet bestaan, dat doe JIJ, en ik quote jou in mijn bovenstaande post:

> "En ja de GET variabelen 'wat' en 'hoe' bestaan niet, dus die zullen ook niet weergegeven worden." <

ik heb de wat en hoe variabelen nodig om deze te kunnen WEERGEVEN in bewerk.php. Zoals je ziet, kom je daar dmv een link die het id meegeeft in de url (http://localhost/php/bewerk.php?id=2 bijvoorbeeld).

op het moment dat je op bewerk klikt, wil ik graag in bewerk.php id, wat, hoe en datum, met daaronder het formulier om te wijzigen, zodat je ZIET wat je wil wijzigen.

maar - 'wat' en 'hoe' moeten dus wel corresponderen met het aangeklikte id.

-------------------------------------

mijn database bestaat uit 4 dingen:

id
wat
hoe
datum

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<? $query = "SELECT * FROM up WHERE id='" . $_POST["id"]  ."'";

$result = mysql_query($query);

if(isset($_POST['wat'], $_POST['hoe']))
{

    echo $_POST['wat']; // 1
    echo $_POST['hoe']; // 2
} ?>


DIT gedeelte krijg ik nu niet werkend

ik hoop dat het duidelijk is zo
 
Joren de Wit

Joren de Wit

07/11/2006 14:23:00
Quote Anchor link
Kijk wie je quote, je quote MIJ en niet Frank. Gebruik daarnaast dan de [quote][/quote] tags, dan is dat ook duidelijk.

Wat betreft het ophalen van de gegevens uit de database, dat is niets meer dan het uitvoeren van de query en het doorlopen en tonen van de resultaten:

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
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']))
{

    $sql = "
        SELECT
            id,
            wat,
            hoe,
            datum
        FROM
            up
        WHERE
            id = "
.$_GET['id']."
        "
;
        
    if (!$res = mysql_query ($sql))
    {

        echo '<pre>';
        trigger_error (mysql_errno() . ': ' . mysql_error());
        echo $sql;
        echo '</pre>';
    }

    else
    {
        while($row = mysql_fetch_assoc($res))
        {

            echo '<ul>';
            echo '<li>'.$row['id'].'</li>';
            echo '<li>'.$row['wat'].'</li>';
            echo '<li>'.$row['hoe'].'</li>';
            echo '<li>'.$row['datum'].'<li>';
            echo '</ul>';
        }
    }
}

?>
 
Frank -

Frank -

07/11/2006 14:26:00
Quote Anchor link
<offtopic>Let even op de namen van diegene die reageert, je quote nu iets dat door Blanche is gezegd en niet door mij.</offtopic>

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
<?
if(!empty($_GET['id']) && ctype_digit($_GET['id'])){
  // GET i.p.v. POST gebruiken evenals een LIMIT voor de zekerheid, je wilt maar 1 record
  // De kolom datum moet van het datatype DATE zijn!

  $query = "
SELECT
  wat,
  hoe,
  DATE_FORMAT(datum, '%d-%m-%Y') AS datumNL
FROM
  up
WHERE
  id='"
. $_GET['id']  ."'
LIMIT 1
"
;

  $result = mysql_query($query);

  if($result){ // query gelukt
    if(mysql_num_rows($result) > 0){ //en er zijn resultaten
      $row = mysql_fetch_assoc($result);

      echo '<table>';
      echo '<tr><td>'.$row['wat'].'</td><td>'.$row['hoe'].'</td><td>'.$row['datumNL'].'</td></tr>';
      echo '</table>';
    }

    else {
      echo 'Geen resultaten gevonden.'; // kan altijd gebeuren wanneer
    }
  }
  
  else {
    echo 'Er is een fout opgetreden: '.mysql_error(); // foutafhandeling! Mag nooit ontbreken
  }
}

else {
  echo 'Ongeldige waarde opgegeven.';
}

?>
(niet getest)

Edit: Syntax-foutjes er uit gehaald.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Tamara

Tamara

07/11/2006 14:58:00
Quote Anchor link
ah, onwijs bedankt, maar nu krijg ik de volgend efout:

Parse error: syntax error, unexpected T_ELSE in d:\FORTUNE\nieuws_eigensite\php\bewerk.php on line 34

is in dit script regel 27
 

Pagina: 1 2 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.