Verschillende MYSQL-bewerkingen met of zonder include

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ger Eielts

Ger Eielts

11/08/2013 00:13:51
Quote Anchor link
Hallo allemaal,

Als beginnend PHP-er heb ik de volgende vraag.
als ik een code kopieer (bv. van een gastenboek van deze site) en deze ietwat aanpas en dan test gaat
alles goed, zoals o.a. het toevoegen van een record aan een tabel in een MySql-database.
Plaats ik echter een include voor en achter (exact) dezelfde code, dan wordt er GEEN
record in de tabel bijgeschreven.

Dat begrijp ik niet. Kan iemand mij uitleggen wat ik over het hoofd zie ?
 
PHP hulp

PHP hulp

26/12/2024 03:03:57
 

11/08/2013 00:29:20
Quote Anchor link
Ik zou je code testen met de includes erbij.
Werken bepaalde stukjes wel als je de pagina laadt en dus iets wilt opslaan.

En sowieso bij de queries nu error reporting aanzetten zodat je precies weet waarom iets niet gedaan wordt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/08/2013 01:00:22
Quote Anchor link
heb je een voorbeeldje?
 
Ger Eielts

Ger Eielts

11/08/2013 08:42:59
Quote Anchor link
@Rick... in debuggen moet ik me nog verdiepen, maar dat gaat nog wel enige tijd duren....Op error reporting zal ik eens googelen hoe dat te doen. Bedankt zo ver.

@Frank: met alle plezier wil ik de code plaatsen, maar ik had ergens gelezen dat je die dan eerst moet bewerken d.m.v. codetags te plaatsen of zo.
Ik heb geen idee hoe ik dat moet doen. Ik ga dat eerst uitzoeken en kom er daarna op terug.

Bedankt zover.
Gewijzigd op 11/08/2013 08:46:01 door Ger Eielts
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/08/2013 08:58:13
Quote Anchor link
De code zet je tussen [code] en [/code] tags. En aan het begin en eind de php tags, als deze er al niet instaan.
 
Ger Eielts

Ger Eielts

11/08/2013 09:56:42
Quote Anchor link
Bedankt voor de tip Ger van Steenderen. Je bedoelt zoiets als onderstaand ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include("Header_Video.php"); ?>


wat HTML-blabla

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
wat php-code;
?>


Weer wat HTML

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include("Footer_Default.php"); ?>



En ja, bij het plaatsen zie ik het zelf.


Toevoeging op 11/08/2013 10:10:49:

Frank Nietbelangrijk op 11/08/2013 01:00:22:
heb je een voorbeeldje?


Frank, onderstaand de code van het gastenboek, dat ik ergens van deze site heb gekopieerd:

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
<?php
// =====================================
// INSTEL GEDEELTE

$aantalresultatenperpagina = 6;

$mysqlnaam = "ingevuld";
$mysqlwachtwoord = "ingevuld";
$host = "localhost";
$db = "ingevuld";

// EINDE INSTEL GEDEELTE
// =====================================


$dbhandle = mysql_connect($host, $mysqlnaam, $mysqlwachtwoord)
  or die("De verbinding met de database is mislukt!");

$selected = mysql_select_db($db,$dbhandle)
  or die("De betreffende database kon niet worden gevonden!");
  

if(!isset($_GET['action']) || empty($_GET['action']))
{

    if(empty($_GET['page']) || !is_numeric($_GET['page']) || $_GET['page'] < 0)
    {

        $page = 1;
    }

    else
    {
        $page = $_GET['page'];
    }

    $limit1 = $page * $aantalresultatenperpagina - $aantalresultatenperpagina;
    $query1 = mysql_query("SELECT * FROM gastenboek LIMIT ". $limit1 .",".$aantalresultatenperpagina);
    $query2 = mysql_query("SELECT * FROM gastenboek");

    if(mysql_num_rows($query1) > 0)
    {

        echo "<table width=\"700\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
        echo "<tr>";
        echo "<td colspan=\"3\"><div align=\"left\">Pagina: ";
        for($i = 1; $i < ceil(mysql_num_rows($query2) / $aantalresultatenperpagina) + 1; $i++)
        {

            echo "<a href=\"gastenboek.php?page=".$i ."\">".$i ."</a>&nbsp;&nbsp;";
        }

        echo "</div></td>";
        echo "</tr>";
        while($rij1 = mysql_fetch_array($query1))
        {

            $unixtime = strtotime($rij1['datum']);
            $datum = date("d-m-Y H:i:s",$unixtime);
            echo "<tr>";
            echo "<td width=\"200\"><div align=\"left\"><strong>Naam:</strong> ".$rij1['naam']."</div></td>";
            echo "<td width=\"300\"><div align=\"left\">";
            if(!empty($rij1['website']))
            {

                echo "<strong>Website:</strong> <a href=\"".$rij1['website']."\" target=\"_blank\">".$rij1['website']."</a>";
            }

            echo "</div></td>";
            echo "<td width=\"200\"><div align=\"left\"><strong>Datum:</strong> ".$datum."</div></td>";
            echo "</tr>";
            echo "<tr>";
            echo "<td colspan=\"3\"><div align=\"left\">".$rij1['text']."</div></td>";
            echo "</tr>";
        }

        echo "</table>";
    }

    else
    {
        echo "Er zijn geen resultaten gevonden voor deze pagina. Waarschijnlijk heeft u (per ongeluk) iets gewijzigd in de adresbalk. Probeert u het nog eens!";
    }
}

elseif($_GET['action'] == "new")
{

?>

<form action="gastenboek.php?action=add" method="post">
<table width="350" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="93">Naam:*</td>
<td width="257"><label>
<input type="text" name="naam" id="naam">
</label></td>
</tr>
<tr>
<td>Website:</td>
<td><input type="text" name="website" id="website"></td>
</tr>
<tr>
<td>Bericht:*</td>
<td><label>
<textarea name="bericht" id="bericht" cols="45" rows="5"></textarea>
</label></td>
</tr>
<tr>
<td><input name="submit" type="submit" value="Toevoegen" /></td>
<td>&nbsp;</td>
</tr>
</table>

</form>
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
<?php
}
elseif($_GET['action'] == "add" && isset($_POST['submit']))
{

    $naam = mysql_real_escape_string($_POST['naam']);
    $website = mysql_real_escape_string($_POST['website']);
    $bericht = mysql_real_escape_string($_POST['bericht']);
    
echo "na de elseif met post";
    if(!empty($website))
    {

        if(!ereg("^http:////",$website))
        {

            $website = "http://".$website;
        }
    }

    
    if(strlen($naam) < 2)
    {

        $error .= "U heeft geen (geldige) naam opgegeven.<br />";
    }

    
    if(strlen($bericht) < 10)
    {

        $error .= "U heeft geen (geldig) bericht opgegeven. Let op, een bericht dient minstens 10 tekens te hebben.<br />";
    }

    
    if(isset($error))
    {

        echo "Er zijn fouten opgetreden:";
        echo "<br /><br />";
        echo $error;
        echo "<br /><br />";
        echo "<a href=\"javascript:history.back(1)\">Klik hier om de fouten te herstellen.</a>";
    }

    else
echo ("hiero voor insert");
    {

        if(mysql_query("
        INSERT INTO
            gastenboek
        (
            naam,
            website,
            datum,
            text
        )
        VALUES
        (
            '"
.$naam."',
            '"
.$website."',
            '"
.date("y-m-d H:i:s")."',
            '"
.$bericht."'
        )
        "
))
        {

            echo "Uw bericht is toegevoegd!";
        }

        else
        {
            echo "Er is iets misgegaan bij het toevoegen van het bericht in het gastenboek: <br />".mysql_error();
        }
    }
}

?>


Als ik bovenstaand script op mijn testsite laat lopen, wordt er keurig een record toegevoegd aan de tabel.
Plaats ik daarentegen aan het begin de volgende include:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include("Header_Terug.php"); ?>


en aan het eind de andere include:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include("Footer_Default.php"); ?>


en ik laat het script wederom lopen, dan worden er geen records toegevoegd. En waarom niet vraag ik me af.

Header_Terug.php luidt als volgt:
<!DOCTYPE html>
<html>

<head>
<title>MP Terug</title>
<link href="./Styles/Site.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />

</head>

<body>
<form id="header">
<div class="page">
<div class="header">
<div class="title" >
<h1>
Wat tekst.......
</h1>
<div id="pics" style="position:absolute;top:0px;right:0px"><img alt="Winnie" src="Images/pooh.gif"></div>
</div>
<div class="clear hideSkiplink">
<div class="clear hideSkiplink">
<Table id="menu" CssClass="menu">
<tr>
<td><button type='button' onclick="javascript:history.back(1)">Terug</button></td>

</tr>
</table>
</div>
</div>
</div>
<div class="main">

</html>

En Footer_Default.php luidt:

</div>
<div class="clear">
</div>
</div>
<div class="footer">

</div>
</form>
</body>
</html>

Het zal wel heel simpel zijn, maar ik heb graag een antwoord. Bedankt alvast.
Gewijzigd op 11/08/2013 10:12:37 door Ger Eielts
 

11/08/2013 10:20:18
Quote Anchor link
Zover ik de include bekijkt klopt deze. Ik zou het op de volgende manieren ook even proberen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php include "Header_Terug.php"; ?>
<?php include 'Header_Terug.php'; ?>


En zo ook voor Footer_Default:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php include "Footer_Default.php"; ?>
<?php include 'Footer_Default.php'; ?>


En krijg je een foutmelding? Zet eens error_reporting(E_ALL); bovenaan de pagina en boven het mysql gedeelte?
Gewijzigd op 11/08/2013 10:24:57 door
 
Frank Nietbelangrijk

Frank Nietbelangrijk

11/08/2013 10:28:30
Quote Anchor link
Ger,

als je nooit geen foutmeldingen te zien krijgt van php dan zou je helemaal boven in je code het volgende kunnen toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
error_reporting(E_ALL);
?>

Dit is zeer belangrijk om te kunnen achterhalen wat er fout gaat.
 
Obelix Idefix

Obelix Idefix

11/08/2013 10:35:43
Quote Anchor link
@Frank: waarom 2x includen? Of bedoel je dat TS het met " of ' moet proberen.

Wat ik wel zie is dat in de 1e include al </html> staat.Die hoort daar sowieso niet.
Ook lijkt het me dat je 2x </form> in je code hebt staan.

Kortom: kijk eens in de broncode van je pagina.

Ten aanzien van de code:
Denk dat het van http://www.phphulp.nl/php/script/gastenboeken-fora/eenvoudig-gastenboek-met-mysql/1635/ afkomstig is. Is 5 jaar oud.

Als je nieuw bent, ga gelijk over op mysqli ipv mysql.
Or die --> is geen (nette) foutafhandeling.
Ik mis foutafhandeling bij $query1 en $query2.
Gebruik in PHP ' (echo) en HTML " --> scheelt je al die keren \ (bv regel 37)
Controleren of een formulier verzonden is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($_SERVER['REQUEST_METHOD'] == "POST"

ipv
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
isset($_POST['submit']

Regel 5, 6 en 7 zijn onnodig: ten eerste kopieer je daar variabelen en ten tweede hoor je mysql(i)_real_escape_string in een query te gebruiken.
ereg is verouderd. Gebruik preg_match.
Je moet een foutmelding krijgen op $error .= --> je wilt iets toevoegen aan een niet bestaande variabele.
 

11/08/2013 10:53:09
Quote Anchor link
Als het bij je mysql(i) foutgaat, moet je natuurlijk wel even mysql_error() gebruiken.
En ik bedoelde inderdaad dat hij beide even kan proberen.
 
Ger Eielts

Ger Eielts

11/08/2013 13:14:48
Quote Anchor link
Frank Nietbelangrijk op 11/08/2013 10:28:30:
Ger,

als je nooit geen foutmeldingen te zien krijgt van php dan zou je helemaal boven in je code het volgende kunnen toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
error_reporting(E_ALL);
?>

Dit is zeer belangrijk om te kunnen achterhalen wat er fout gaat.


Frank, ik krijg wel degelijk foutmeldingen (zal dan wel van een default-instelling zijn of zo), maar in onderhavig geval geen foutmelding. Na het klikken op de "Toevoegen"-button krijg ik het Gastenboek.php-scherm terug met een serie geplaatste berichten, maar dan zonder de zojuist door mij toegevoegde. Heb dit overigens wel getest met error_reporting(E_ALL) boven in Gastenboek.php.
 
Obelix Idefix

Obelix Idefix

11/08/2013 14:01:40
Quote Anchor link
Ger Eielts op 11/08/2013 13:14:48:
ik krijg wel degelijk foutmeldingen (zal dan wel van een default-instelling zijn of zo),

Benieuwd wat ik me daar bij moet voorstellen.

En heb je nog naar mijn vorige reactie gekeken?
 
Ger Eielts

Ger Eielts

11/08/2013 15:22:49
Quote Anchor link
@ Obelix en Idefix: bedankt voor je kritische reactie. Ben momenteel bezig al je opmerkingen te verwerken, maar dat is dan ter verbetering van de bestaande code. Het "geen-record-toegevoegd"-probleem is er niet mee opgelost. We zoeken verder !


Toevoeging op 11/08/2013 15:38:51:

@Frank Martens..... Met de enkele quote werd een record toegevoegd en ik kreeg keurig mijn scherm terug.
Weer een stap verder. Nu alle opmerkingen van Obelix en Idefix nog.
 
Obelix Idefix

Obelix Idefix

11/08/2013 16:43:29
Quote Anchor link
Wat gebeurt er als je alleen de footer include (of alleen de header)?

Daarnaast zou ik toch eens kijken naar 2x </html> en 2x </form> in je code.
 

11/08/2013 17:41:28
Quote Anchor link
Ger Eielts op 11/08/2013 15:22:49:
@ Obelix en Idefix: bedankt voor je kritische reactie. Ben momenteel bezig al je opmerkingen te verwerken, maar dat is dan ter verbetering van de bestaande code. Het "geen-record-toegevoegd"-probleem is er niet mee opgelost. We zoeken verder !


Toevoeging op 11/08/2013 15:38:51:

@Frank Martens..... Met de enkele quote werd een record toegevoegd en ik kreeg keurig mijn scherm terug.
Weer een stap verder. Nu alle opmerkingen van Obelix en Idefix nog.


Prima, goed om te horen.
 



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.