tonen van foutcodes via Javascript en php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

24/01/2012 12:15:09
Quote Anchor link
Hallo mede leden,
Ik ben bezig met een heel simpel chat systeem voor mijn website.
Maar ik loop tegen het volgende aan.
Als ik de write.php rechstreeks aanroep dan kan ik wel iets schrijven naar de database.

Maar als ik dat doe via chat.php dan niet.
Ik krijg daarbij ook geen foutmelding te zien.
Hoe kan ik ervoor zorgen dat ik toch een melding zie.
Hieronder de codes die ik ervoor gebruik.

chat.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
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
100
101
102
<?php
if($_SESSION['login'] == FALSE)
{

    echo "niet ingelogd";    
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
#chatbox {
    background-color:#0F0;
    margin-left:10px;
    width:530px;
    height:500px;
}

#gesprek {
    background-color:#F00;
    margin-left:10px;
    width:530px;
    height:auto;
}
</style>

<script type="text/javascript">
var xmlHttp

function write1()
{
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
      {
          alert ("Your browser does not support AJAX!");
          return;
      }
    var bericht = document.writeform.bericht.value;
    var url="write.php?b="+bericht;
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function stateChanged()
{
    if (xmlHttp.readyState==4)
    {
        document.getElementById("verstuurd").innerHTML="Verstuurd!";
        document.writeform.bericht.value="";
        //chat();
    }
}


function entsub(event)
{
var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if(Key == 13)
    write1();
    else
    return true;
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}
</script>
</head>
<div id="chatbox"></div>
<div id="gesprek">
<form id="writeform" name="writeform">
naam:<?php echo $_SESSION['gebruikersnaam']; ?><br />
Bericht:<br/>
<textarea rows="4" cols="70" id="bericht" onkeypress="return entsub(event)" /></textarea><br />
<input name="verstuur" type="button" id="verstuur" value="Verstuur" onclick="write1()" />
<span id="verstuurd"></span>
</form>
</div>
<body>
</body>
</html>


Hier de write.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
<?php
session_start();
include("../includes/config.php");

if($_GET['b'])
{

        //Gegevens in de database invoeren
        $sql_b = "INSERT INTO chatten (login,bericht,tijd)
        VALUES
        (
        '"
.$mysqli->real_escape_string($_SESSION['gebruikersnaam'])."',
        '"
.$mysqli->real_escape_string($_GET['b'])."',
        NOW())"
;
        if(!$res_b = $mysqli->query($sql_b))
        {

            //Als fout is gevonden weg schrijven in logs.//
            echo $mysqli->error;
        }
    
}

?>


Met vriendelijke groet,

Thomas de Vries.
Gewijzigd op 24/01/2012 12:29:32 door Thomas de vries
 
PHP hulp

PHP hulp

24/11/2024 23:49:15
 
Kris Peeters

Kris Peeters

24/01/2012 12:27:13
Quote Anchor link
Die if($_GET['nick'])

Je maakt met Ajax connectie met
"write.php?b="+bericht

Daar staat niets van nick.


Je zou kunnen die if($_GET['nick']) weglaten. Accolades ook meenemen, uiteraard.

Verder: indien dit werkt, kan je nog een paar dingen optimaliseren. Je kan dit beter met POST doen dan met GET; je moet nog wat beter controleren ...
Maar first things first
Gewijzigd op 24/01/2012 12:32:57 door Kris Peeters
 
Thomas de vries

thomas de vries

24/01/2012 12:29:05
Quote Anchor link
nee dat klopt die was ik nog vergeten weg te halen in dit voorbeeld.
Is ook aangepast.
Gewijzigd op 24/01/2012 12:29:58 door thomas de vries
 
Kris Peeters

Kris Peeters

24/01/2012 17:26:51
Quote Anchor link
Om te beginnen, zorg er voor dat je (zichtbare HTML) tussen <body> e </body> komt.
Jij zet een hoop HTML tussen </head> en <body> ... Daar mag niets tussen staan.

Nu, wat de fout betreft ...

Ajax is javascript. Het kan javascript niets schelen welke taal op de server wordt gebruikt. Php, asp, ... maakt javascript allemaal niets uit.

Het contact dat je hebt, is het volgende:

- javascript stuurt een verzoek naar de server, via een url (en eventueel POST en COOKIES)
- De server stuurt data terug. Die data kan HTML zijn (bv. je haalt met Ajax een stuk HTLM op en steekt het in een div); of ruwe data (XML of JSON); of simpelweg een stukje tekst.

Jij moet dus op twee dingen letten:
- zijn er Ajax problemen (connectie met de server)?
- zijn er problemen op php-vlak?

Wat je kan doen in debug-mode (zolang je test en het zootje niet online vrijgeeft):
write.php kan een bericht terugsturen naar javascript; jij kunt in dit bericht ook errors terug geven

concreet, het volgende:
* Zie dat je in je gewone pagina het volgende hebt (maakt niet uit waar, ergens in de <body>):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div id="debug"></div>


en dan het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
    if (xmlHttp.readyState==4)
    {
        document.getElementById("debug").innerHTML= xmlHttp.responseText;
... // en dan dus de rest van je afhandeling.


Op die manier krijg je de eventuele error, die php heeft geproduceerd, in een div staan.

Zeg eens wat er gebeurt.
Gewijzigd op 24/01/2012 17:52:01 door Kris Peeters
 



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.