SQL tabel update niet!?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Jasper DS

Jasper DS

19/06/2011 17:10:15
Quote Anchor link
en je database structuur is volgens mij niet goed, je slaagt dubbele gegevens op. Er zitten nog wel enkele fouten in je script.
 
PHP hulp

PHP hulp

03/01/2025 14:28:46
 
Ferdi Verbeek

Ferdi Verbeek

19/06/2011 17:44:06
Quote Anchor link
Is de foutherkenning nu wel goed? Maar ik vind de fouten vreemd. Ik heb problemen met 1 query, en krijg fouten over andere bestanden. Beetje vergezocht voor 1 query of niet?
 
Jasper DS

Jasper DS

19/06/2011 17:47:23
Quote Anchor link
De foutafhandeling klopt, de rest niet.. Nu ga je gegevens ophalen uit een UPDATE QUERY. Je begrijpt zelf dat dat niet gaat?

Toevoeging op 19/06/2011 17:51:50:

lees mijn commentaar in het script
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
<?php
require("include/config.inc.php");
require("login.check.inc.php");
require("include/emoticons.php");

# We zetten dit volledig bovenaan

    # errors weergeven

    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',true);  // true == aan, false == uit


    # functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }
  


    # van waar komt RealEscape?
    $_POST = RealEscape($_POST);
    $_GET = RealEscape($_GET);
    $_SERVER = RealEscape($_SERVER);

    # geen onnodige vars aanmaken
    $id = $_GET['townid'];

    # dit is niet correct
    if (isset($_POST['comment']) && $_POST['text'] != "")
    {

        # var buiten quotes, schep hier orde!
        $query = "INSERT INTO $tab_townposts (itemid,userid,datestamp,text) VALUES
                                        ('"
.$_POST['itemid']."','".$_POST['userid']."',
                                         NOW(),'"
.$_POST['text']."')";
        # waar is die foutafhandeling?                                
        mysql_query($query);
    
        # zorg ervoor dat je query's duidelijk zijn! (waar haal je $tab_town?!)
        $sql_update = "UPDATE ".$tab_town." SET datepost=NOW() WHERE id = '".$id."'";
        
    
        #  Check of query is gelukt    
        if (($result = mysql_query($sql_update)) === false)
        {
    
            # als de query fout is -> foutafhandeling
            echo showSQLError($query,mysql_error(),'Fout met database.');
        }
    
        else
        {
            echo 'Bijgewerkt: ' . mysql_affected_rows() . ' rows';
        }
    }

    
    # de header dient waarvoor?
    header("location: ".$_SERVER['PHP_SELF']."?townid=".$_POST['itemid']);
   }

?>


opmerking: ik heb expres niet alle fouten verbetert.
 
Ferdi Verbeek

Ferdi Verbeek

19/06/2011 18:02:51
Quote Anchor link
Ik zal even antwoorden op je opmerkingen.

# van waar komt RealEscape?
Deze functie staat in config.inc.php die bovenaan wordt opgeroepen.

# geen onnodige vars aanmaken
Wat bedoel je hiermee? De pagina haalt hier de ID uit de url omdat die gekozen is op de vorige pagina.

# dit is niet correct
en
# var buiten quotes, schep hier orde!
en
# zorg ervoor dat je query's duidelijk zijn! (waar haal je $tab_town?!)
Dit was al zo, ik heb dit zelf niet gemaakt. Volgens mij overal op de site op deze manier. En omdat ik 1 query toevoeg werkt het niet meer? tab_town wordt uit config gehaald.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$tab_town
                = "town";                    
$tab_townposts            = "town_posts";    
?>


# de header dient waarvoor?
De header zorgt er denk ik voor dat als iemand een reactie plaatst hij weer op dezelfde pagina komt met daarbij zijn reactie. De code die je ziet is niet de totaal in de php file. Die is veel langer.

Ik zie zo nog steeds niet wat mijn query fout doet of wat er bij moet.

Toevoeging op 19/06/2011 19:07:10:

De site zal vast niet overal heel netjes zijn. Wat ik wil is dat er gewoon een waarde in een tabel ingevuld wordt als er een reactie wordt geplaatst. Als er een reactie wordt geplaatst wordt deze query uitgevoerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (isset($_POST['comment']) && $_POST['text'] != "")
   {
$query = "INSERT INTO $tab_townposts (itemid,userid,datestamp,text) VALUES
                                        ('"
.$_POST['itemid']."','".$_POST['userid']."',
                                         NOW(),'"
.$_POST['text']."')";
    mysql_query($query);
?>


Werkte altijd prima. Maar wat ik nu wil is dat er ook een waarde in een andere tabel wordt geplaatst. Dit is de tabel town die wordt genoemd als $tab_town. De datum van het moment van plaatsen moet daarbij geplaatst worden. Deze tabel is van de nieuwsberichten waar zo'n reactie op geplaatst wordt.

De nieuwsberichten hebben een tabel town.
De reacties hebben een tabel town_posts.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$query
= "UPDATE ".$tab_town." SET datepost=NOW() WHERE id = '".$id."'";
    mysql_query($query);
?>


Wat gaat hier dan fout? Ik vraag om een update uit tabel town waarbij de datum wordt geplaatst in datepost. Dan bij het id die actief is op de pagina (het nieuwsbericht).

Toevoeging op 20/06/2011 00:01:28:

Hij doet het! Dan maar zelf opgelost. Ik kwam erachter dat hij het wel deed als ik 9 invulde (id = 9). Daardoor wist ik dat daar de fout zat. Na wat proberen is het dit geworden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$query
= "UPDATE ".$tab_town." SET datepost=NOW() WHERE id = '".$_POST['itemid']."'";
mysql_query($query);
?>


Geen idee waarom het dan POST moet zijn. Voor de rest had ik nog wat errors. Die zijn verdwenen toen ik de afhandeling scripts allemaal heb weggehaald. Het zal vast wat problemen onderscheppen, maar het zorgde bij mij alleen voor meer problemen.
 

Pagina: « vorige 1 2



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.