voor mijn website wil ik een chatbox gaan maken.
Op de site kunnen alleen ingelogde mensen die chatbox gebruiken (en alleen bij hun word hij weergeven). De inlog&Registratie gegevens moeten opgeslagen kunnen worden in de database v/d site.
Hoe krijg ik dit voor elkaar/waar kan ik een soortgelijke downloadbare chatbox vinden?
<?php
session_start(); // Start a new session
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
// getting info from db
}
$conn = mysqli_connect("localhost","root","superbart","blog") or die("could not connect to server");
if(isset($_GET['set']))
{
if(isset($_GET['content']))
{
$str_msg = stripslashes($_GET['content']);
$time = getdate();
$str_msg = add_smilies($str_msg);
$t_stamp = $time['hours'].":".$time['minutes'].":".$time['seconds'];
($_GET['uid']=='1')? $color ="red" : $color ="green";
$insert1 = "INSERT INTO chat (user_id,msg,timestamp,displayed)
VALUES ('".$_GET['uid']."', '".addslashes($str_msg)."', '$t_stamp', '0')";
$query = "select * from users where user_id= 'id' and displayed=0";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_array($result)) {
echo "<br><font color=$color><b>User" . $row['username'] . " </b>";}
$result = mysqli_query($conn,$insert1);
while($row = mysqli_fetch_array($result)) {
mysqli_query($insert1);
echo "[".$t_stamp."] <b>: </b></font>".$str_msg;}
}
}
else if(isset($_GET['get']))
{
$query = "select * from chat where user_id= 'id' and displayed=0";
$result = mysqli_query($conn, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows)
{
while($new_msg = mysqlifetch_array($res))
echo "<br><b>User ".$id." </b>[".$new_msg['timestamp']."] <b>: </b></font>".stripslashes($new_msg['msg']);
$query = "select * from users where user_id= 'id' and displayed=0";
$mark2 = mysqli_query($query);
}
}
else
{
echo "<font color=red><b><br>Error processing data...!</b></font>";
}
function add_smilies($str_msg)
{
$get_smiles = mysql_query("select * from smilies order by length(image_code) desc");
while($row_smilies = mysql_fetch_array($get_smiles))
{
$str_msg = str_replace(''.$row_smilies['image_code'].''," <img src='images/".$row_smilies['id'].".gif'> ",$str_msg);
//$str_msg = preg_match("/".$row_smilies['image_code']."/","<img src='images/".$row_smilies['id'].".gif'>");
/*if(false !== strpos($row_smilies['image_code'],$str_msg))
{
$sel = mysql_query("select * from smilies where image_code='".$row_smilies['image_code']."'");
$row = mysql_fetch_array($sel);
echo "<img src='images/".$row_smilies['id'].".gif'>";
}*/
}
return $str_msg;
}
?>
[size=xsmall]Toevoeging op 16/03/2015 20:12:53:[/size]
laatste foutwarning tot nu toe:
"Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Webwinkelcentrum\MMchat3\script_page.php on line 39"
"Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Webwinkelcentrum\MMchat3\script_page.php on line 39"
je query wilt niet uitgevoerd worden omdat er foutafhandeling ontbreekt.
Kijk eens naar mysqli_error($con);
_______________
Op dit moment heb ik vooral deze error:
Notice: Undefined variable: id in C:\xampp\htdocs\Webwinkelcentrum\MMchat3\script_page.php on line 41
<?php
session_start(); // Start a new session?><?php
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
// getting info from db
}
?><?php
$conn = mysqli_connect("localhost","root","superbart","minimail") or die("could not connect to server");
if(isset($_GET['set']))
{
if(isset($_GET['content']))
{
$str_msg = stripslashes($_GET['content']);
$time = getdate();
$str_msg = add_smilies($str_msg);
$t_stamp = $time['hours'].":".$time['minutes'].":".$time['seconds'];
($_GET['uid']=='1')? $color ="red" : $color ="green";
$insert1 = "INSERT INTO chat (user_id,msg,timestamp,displayed)
VALUES ('".$_GET['uid']."', '".addslashes($str_msg)."', '$t_stamp', '0')";
$query = "select * from users where user_id= $id";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_array($result)) {
echo "<br><font color=$color><b>User" . $row['username'] . " </b>";}
$result = mysqli_query($conn,$insert1);
while($row = mysqli_fetch_array($result)) {
mysqli_query($insert1);
echo "[".$t_stamp."] <b>: </b></font>".$str_msg;}
}
else
{
echo "Failed to connect to MySQL: " . mysqli_error();
}
}
else if(isset($_GET['get']))
{
$query2 = "select * FROM users WHERE user_id= $id";
$result2 = mysqli_query($conn,$query2) or die ( mysql_error() );
$num_rows = mysqli_num_rows($result2);
if ($nrOfRows > 0)
{
while($new_msg = mysqlifetch_array($result))
echo "<br><b>User ".$id." </b>[".$new_msg['timestamp']."] <b>: </b></font>".stripslashes($new_msg['msg']);
$query = "select * from users where user_id= $id";
$result = mysqli_query($query);
}
}
else
{
echo "Failed to connect to MySQL: " . mysqli_error();
}
function add_smilies($str_msg)
{
$get_smiles = mysql_query("select * from smilies order by length(image_code) desc");
while($row_smilies = mysql_fetch_array($get_smiles))
{
$str_msg = str_replace(''.$row_smilies['image_code'].''," <img src='images/".$row_smilies['id'].".gif'> ",$str_msg);
//$str_msg = preg_match("/".$row_smilies['image_code']."/","<img src='images/".$row_smilies['id'].".gif'>");
/*if(false !== strpos($row_smilies['image_code'],$str_msg))
{
$sel = mysql_query("select * from smilies where image_code='".$row_smilies['image_code']."'");
$row = mysql_fetch_array($sel);
echo "<img src='images/".$row_smilies['id'].".gif'>";
}*/
}
return $str_msg;
}
?>
Ik heb gekeken, als ik bijv o.a. van mysql_error Mysqli_error (met tussen () $conn) maak, geeft hij aan:
Notice: Undefined variable: id in C:\xampp\htdocs\Webwinkelcentrum\MMchat3\script_page.php on line 40
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Op het eerste ogenblik zie ik ook niet waarom die $id niet zou bestaan. Wel vallen me enkele dingen op:
- Uitlijning is niet netjes, als ik accolades boven recht boven elkaar zie, dan is het script al lastig te debuggen
- MQL-functies benoemen we met een hoofdletter, dus SELECT i.p.v. select
- Gebruik van addslashes() waarmee je je input kan verminken. Gebruik gewoon mysqli_real_escape_string() voor $_POST, $_GEt en $_COOKIE in een query.
- $insert1 zegt niet veel, zie jij straks het verschil nog met $insert3 en $insert8? Noem hem dan bijvoorbeeld $insert_message.
- <font> is verouderd, kijk eens naar CSS.