' teken zorgt voor onverwijderbaar topic

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Marije

Marije

26/09/2006 09:15:00
Quote Anchor link
Hoi,

Ik heb een nieuwsscriptje en als ik de drie velden van mijn nieuwsbericht intyp ( titel, intro, tekst ) dan gaat die informatie prima naar de database mbv ".mysql_real_escape_string($_POST['titel'])." . Daar zit alles snor dus (denk ik).

Als ik dan een CMS overzichtje laat zien (lijst) van mijn nieuwsitems, alleen titel en datum, dan haalt hij de gegevens prima uit de DB.
Rechts van alle titels heb ik het knopjes verwijderen. Ik kan alle berichten verwijderen, behalve als er een ' in de titel staat. Zonder ' tekens kan ik alles prima verwijderen.

Iemand een idee hoe ik dit op kan lossen?
 
PHP hulp

PHP hulp

24/11/2024 16:14:06
 
Martijn B

Martijn B

26/09/2006 09:35:00
Quote Anchor link
Kun je even een gevulde query laten zijn om een nieuws bericht met single-quote toe te voegen en te verwijderen. Ben benieuwd...
 
- SanThe -

- SanThe -

26/09/2006 09:36:00
Quote Anchor link
Henb je een link of een voorbeeld?
 
Marije

Marije

26/09/2006 09:38:00
Quote Anchor link
komt er aan!
 
Marije

Marije

26/09/2006 09:41:00
Quote Anchor link
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
<?

if ($_GET['show'] == 'add' || $_POST['show'] == 'add')
{

    if ($_POST['titel'] && $_POST['msg'] && $_POST['mydate'] && $_POST['titel'])
    {

        if($_FILES['myfile']['tmp_name']!=''){
            $pdf = 'ja';
        }

        else{
            $pdf = 'nee';
        }

        $sql = 'INSERT INTO nieuws (id, titel, msg, datum, intro, informail, pdf, files) VALUES (\'\', \'' . mysql_real_escape_string($_POST['titel']) . '\', \'' . mysql_real_escape_string($_POST['msg']) . '\', \'' . mysql_real_escape_string($_POST['mydate']) . '\', \'' . mysql_real_escape_string($_POST['intro']) . '\', \'' . mysql_real_escape_string($_POST['informail']) . '\', \'' . $pdf. '\',\''. mysql_real_escape_string($_FILES['myfile']['name']).'\')';
        $res = mysql_query($sql);
        if ($res) {
        $melding = 'Het bericht is toegevoegd aan de site.';
                /* now we try to store the posted pdf's
        * let's filter maxsize in the form, instead of server side
        */

        $parentId=mysql_insert_id();
        foreach ( $_FILES as $file ){
            if ( $file['size'] > 0 ){
                /* we have a file with none zero size */
                if ( is_uploaded_file($file['tmp_name']) ){
                    $fp=fopen($file['tmp_name'], 'r+');
                    $data=addslashes(fread($fp, $file['size']));
                    $type=mysql_real_escape_string($file['type']);
                    $name=mysql_real_escape_string($file['name']);
                    $size=mysql_real_escape_string((int)$file['size']);
                    $query=sprintf("INSERT INTO %s (filename, mime_type, size, data, type, pid)
                                    VALUES ('%s', '%s', '%d', '%s', '%s', '%d')"
,
                            $db_table_files, $name, $type, $size,
                            $data, 'nieuws', $parentId);
                    mysql_query($query);
                }
            }
        }

        /* now look for current docs selected */
        for ( $i=0; $i < 5; $i++ ){
            $label='doc'.$i;

            if ( array_key_exists($label, $_REQUEST) && $_REQUEST[$label] > 0 ){
                /* fetch data */
                $query=sprintf('SELECT * FROM %s WHERE file_id=%d',
                        $db_table_files, $_REQUEST[$label]);
                $result=mysql_query($query);
                $row=mysql_fetch_array($result);
                $query=sprintf("INSERT INTO %s (filename, mime_type, size, data, type, pid)
                    VALUES('%s', '%s', '%d', '%s', '%s', '%d')"
,
                    $db_table_files, $row['filename'], $row['mime_type'], $row['size'],
                    addslashes($row['data']), 'nieuws', $parentId);
                mysql_query($query);
                print mysql_error();
            }
        }
        
        }

        else
        {
            $melding = 'Het bericht is niet toegevoegd aan de site.<br>'.$melding2;
        }

        echo $melding;
    }

    else
    {
        if ($_POST['submit']){
            $err = 'Enkele velden vergeten.';
        }

        if ($_POST['mydate']){
            $cdate = $_POST['mydate'];
        }

        else
        {
            $cdate = date('Y-m-d');
        }

        $row['msg'] = nl2br($row['msg']);
        echo '<br><b>Plaats hier uw nieuwsbericht:</b><br><br>';

?>




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

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

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

        $sql = "DELETE FROM nieuws WHERE id = $_GET[id]";
        $res = mysql_query($sql);


        if ($res)
        {

        /* get rid of associated files */
        $query=sprintf('DELETE FROM %s WHERE type=\'nieuws\' AND pid=%d',
            $db_table_files, $_REQUEST['id']);
        mysql_query($query);
        echo "Bericht verwijderd.";
        header("Location: ../pages/00nieuws.php");
    }

        else
        {
            echo "Bericht is niet verwijderd.";
        }
    }

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


?>
Gewijzigd op 01/01/1970 01:00:00 door Marije
 
Jan Koehoorn

Jan Koehoorn

26/09/2006 09:41:00
Quote Anchor link
Als die titel als string in je verwijderquery terechtkomt zal dat het probleem wel zijn. Enkele quotes moet je escapen voor MySQL.
 
Jan Koehoorn

Jan Koehoorn

26/09/2006 09:43:00
Quote Anchor link
Op regel 7 heb je:

$sql = "DELETE FROM nieuws WHERE id = $_GET[id]";

$_GET[id] moet sowieso $_GET['id'] zijn.

Verder heb je geen foutafhandeling in regel 8, waar je de query uitvoert.
 
Marije

Marije

26/09/2006 09:46:00
Quote Anchor link
ik zal het eens proberen :) Bedankt Jan.
 
Marije

Marije

26/09/2006 09:49:00
Quote Anchor link
als ik die ' ' ervoor zet krijg ik deze error :

Parse error: parse error, unexpected T_STRING on line 200
 
- SanThe -

- SanThe -

26/09/2006 09:50:00
Quote Anchor link
Tussen enkele quotes heeft escapen geen effect.
Maak je query met dubbele quotes met daarin enkele quotes om de 'strings'.

Dus:
$sql = 'INSERT INTO nieuws (id, ..... files) VALUES (\'\', \'' . mysql_real_escape_string(......
wordt:
$sql = "INSERT INTO nieuws (id, ..... files) VALUES ('', '" . mysql_real_escape_string(......
 
Marije

Marije

26/09/2006 09:54:00
Quote Anchor link
maw de gegevens moeten anders de database in? ik heb het gevoel dat de data prima de DB ingaat... alleen het verwijderen gaat niet?
 
Marije

Marije

26/09/2006 10:07:00
Quote Anchor link
@sanThe:

Geprobeerd, ligt het niet aan. De code werkt prima maar het probleem is niet verholpen. Voor mijn gevoel gaat het echt mis bij het verwijderen uit de db
 
Jan Koehoorn

Jan Koehoorn

26/09/2006 10:08:00
Quote Anchor link
SanThe:
Tussen enkele quotes heeft escapen geen effect.


Niet altijd! Dit gaat bijvoorbeeld fout:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $str
= 'Wat eet je 's morgens?';
    echo $str;
?>

Een enkele quote moet je wel degelijk escapen binnen enkele quotes.
 
Jan Koehoorn

Jan Koehoorn

26/09/2006 10:10:00
Quote Anchor link
Marije:
@sanThe:

Geprobeerd, ligt het niet aan. De code werkt prima maar het probleem is niet verholpen. Voor mijn gevoel gaat het echt mis bij het verwijderen uit de db

Ja, dus echo je query naar het scherm en doe aan foutafhandeling:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    if (!mysql_query ($sql)) {
        trigger_error (mysql_error ());
        echo '<pre>';
        echo htmlentities ($sql);
        echo '</pre>';
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Marije

Marije

26/09/2006 10:12:00
Quote Anchor link
ok ik had het iets beter uit moeten leggen... hoe komt niet eens bij de query. Als ik op de knop verwijderen druk (en er zit een ' oid in de titel) dan gebeurd er helemaal niets. Geen melding (zit een JS askconfirm tussen) niets.... wellicht dat het stukje js er mee te maken heeft?
 
Terence Hersbach

Terence Hersbach

26/09/2006 10:14:00
Quote Anchor link
misschien gaat het fout in de HTML, geef eens een stukje van de geparste html.. (of eventueel een link naar de site)
 
Marije

Marije

26/09/2006 10:20:00
Quote Anchor link
<a href=\"javascript:askConfirm('Wilt u $row[titel] verwijderen?','$PHP_SELF?show=del&id=$row[id]');\"><center><img src=\"../img/icon_delete.jpg\" width=\"32\" height=\"30\" border=\"0\"></center></a>

ik vermoed dat het daar of hier:

<script language="JavaScript">
function askConfirm(txt,url) {
if (confirm(txt) == true) {
document.location=url
return true
}
}
</script>

verkeerd gaat....
 
Terence Hersbach

Terence Hersbach

26/09/2006 10:27:00
Quote Anchor link
dat javascript stukje is wel goed, alleen ik vraag me nu af hoe je dat bovenstukje op je schem echo't.. Probeer dat eens in je php-code te veranderen naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<a href="'.$_SERVER['PHP_SELF'].'?show=del&id='.$row['id'].'" onClick="window.confirm(\'Wilt u '.$row['titel'].' verwijderen?\');"><img src="../img/icon_delete.jpg" width="32" height="30" border="0" align="center" /></a>';
?>


edit: typo

edit: ik denk dat er nu geen stripslashes over dat $row['titel'] heen moet bij het confirm, omdat dat ook in een javascript stukje staat ;)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Marije

Marije

26/09/2006 10:33:00
Quote Anchor link
dan krijg ik allemaal parse errors :)
 
Marije

Marije

26/09/2006 10:35:00
Quote Anchor link
oh edit :) ik tjek ff
 
Marije

Marije

26/09/2006 10:40:00
Quote Anchor link
het bericht wordt iig verwijderd! haha alleen geen melding meer maar dat is misschien wel logisch aangezien je href="" direct de file verwijderd en daarna vraagt of je hem wilt verwijderen? (al krijg ik ook die melding niet ;))
 

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.