pátek 31. srpna 2012

Tvorba Chatu v PHP - část 1

Tenhle skript jsem dělala v programu PSPadu a databázi jsem dělala v My Admin PHP přímo v programu Vertrigo. Program Vertrigo jak jsem už psala slouží pro běh stránek psaných v PHP, protože PHP stránky - skripty prostě normálně v okně nějakého prohlížeče nepustíte, teda aspoň nevím, že by to šlo. V My Admin PHP si vytvoříte databázi, založíte uživatele. Otevře se Vám celá nabídka možností, založíte to co chcete a proklikáte se atributy, který si nastavíte. Na co celkem bacha, když děláte Chat, nebo cokoliv s online časem tak možná narazíte na problém asi jak já. On totiž čas je docela oříšek, pokusím se v nějakém článku se o tom rozepsat stručněji, ale jde o to, že by bylo dobré opravdu koukat na to, jak máte čas psaný v samotné databázi. rok, měsíc, den, hodina minuta sekunda, prostě přesně tak jak máte v databázi to musíte udělat i do samotného skriptu, protože by se Vám to vůbec dobře nemuselo ukazovat. Já jsem se s tím opravdu mordovala.


První co musíte při tvorbě Chatu udělat je naprogramovat Form. Ten je psaný v HTML, ale možná má někdo jiný způsob, já to dělala takto.

1.Form


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title>CHAT BOX</title>
  </head>
  <body>
 
 
  <h1>Chat room</h1>
  <form action="chat.php" method = "post">
Přezdívka
  <input type="text" name = "jmeno" maxlenght = "20"><br>
  <textarea size= "100" rows= "8" cols="30" name= "text"> Zde napište vzkaz</textarea><br>
 
  <input type="submit" name = "Odeslat" value = "odeslat">

   </form>

 
  </body>
  </html>

2. Form.php


<?php
echo('

  <h1>Chat room</h1>
  <form action="chat.php" method = "post">
Přezdívka
  <input type="text" name = "jmeno" maxlenght = "20"><br>
  <textarea size= "100" rows= "8" cols="30" name= "text">Zde napište vzkaz</textarea><br>
 
  <input type="submit" name = "Odeslat" value = "odeslat">

   </form>');
 

?>

3.Chat.php


<?php
$prezdivka = $_POST['jmeno'];
$text = $_POST['text'];

//echo("přezdívka =$prezdivka<br />text zprávy= $text<br />");
include 'PripojDatabaze.php';
include 'zjistiID.php';
include 'ZjistiDatumCas.php';
$ID_celkemUP =  $ID_celkem+1;
echo("pocet prispevku = $ID_celkemUP<br />");

If ($prezdivka!="" or $text!="Zde napište vzkaz" )
  $zapisDB = MySQL_Query("INSERT INTO diskuze (NICK,TEXT,CAS)VALUES ('$prezdivka','$text','$datum')")
    OR DIE ("<b>zapis do databaze se nezdaril: ".mysql_error()."</b>");

include 'NactiChat.php';
include 'form.php';

4. index.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>

  </body>
</html>

5.NactiChat.php


<?php
function datumCZ ($datumCasDB){
  $datumCas = explode(" ",$datumCasDB);
  $datumDB =  $datumCas[0] ;
  $cas=   $datumCas[1];
 
  $datumDBe = explode("-",$datumDB);
  $NewDate  =  $datumDBe[2].".".$datumDBe[1].".".$datumDBe[0];
  $NewDate  =  str_replace("..", "", "$NewDate");
  $NewDateCas = $cas."-".$NewDate;
  return($NewDateCas);
}

$suda=true;
$barva = "000000"   ;

$vysledek = MySQL_Query("SELECT * FROM diskuze ORDER BY CAS desc")
  or die (" <br><b> Nepodařilo se načíst CHAT z databáze: ".mysql_error()."</b>");
$zaznamX = 0;
echo('<table width="400" height="200" align="left" border="2" bordercolor="#FFCC33" bgcolor="#FFFFCC">');
while($Zaznam = MySQL_Fetch_Array($vysledek)):
  $cisloZaznamu[$zaznamX] = ($Zaznam['ID']);
  $cas[$zaznamX]          = ($Zaznam['Cas']);
  $nick[$zaznamX]         = ($Zaznam['Nick']);
  $textChat[$zaznamX]     = ($Zaznam['Text']);
        $suda=!$suda;
        if ($suda==1)
           $barva = '"000000"';
        else
            $barva = '"AA0000"';
        echo ('<tr><td>');
        echo ("<font color=$barva>");
        echo  ("Přezdívka: $nick[$zaznamX]") ;
        echo ("</font>");
        echo    ('</td></tr><tr><td>') ;
        //echo  ("Datum a čas: $cas[$zaznamX]------") ;
        echo (datumCZ($cas[$zaznamX]));
        echo    ('</td></tr><tr><td>');
        echo  ("$textChat[$zaznamX]") ;
        echo    ('</td></tr>');
       
           

 
 
  //echo  ('<hr align="center" size="2">') ;
  $zaznamX++;
endwhile;
echo    ('</table><br />')
?>



6.PripojDatabaze.php


<?php
//spojen mysql local

$spojeni = mysql_connect("Localhost", "chat", "8VLtJb2HVtFjDGwn");
if (!$spojeni)  {
  echo"Nepodarilo se pripojit k MySQL servru.";
  exit;
  }
//nastavena aktualni databaze
$vybrana = MySQL_select_DB("chat");
if (!$vybrana)  {
 echo "Nepodarilo se zasavit databazi jako aktivni.";
 exit;
 }
?>

7.ZjistiDatumCas.php


<?php
$datum = StrFTime("%Y-%m-%d %H:%M:%S", Time()+7200);
//echo($datum);
?>

8.ZjistiID.php


<?php

$ID_celkem=0;
$cti = MySQL_Query("SELECT * FROM diskuze ORDER BY ID ");
if (!$cti)  {
 echo "Došlo k chybí pro zpracování dotazu v databazi při zjišťování ID. <BR>\n";
 exit;
    }
while ($zaznam = MySQL_fetch_Array($cti)) {
$ID_celkem ++;
}
?>

Je to opravdu obyčejný Chat s datumem, id, nickem, chatovacím polem, obyčejná barva, žádný grafické prvky. Můžete si to vyzkoušet. Jinak byla bych docela ráda, kdyby jste si tenhle skript chtěli hodit na své stránky nebo jinak publikovat tak určitě, ale s odkazem na mé stránky a aspoň to napsat do komentáře a uvést, kde se tento skript bude nacházet. Přece jenom jsem nad tím strávila nějakou tu chvilku. Děkuju..

Jinak není to žádný extra výtvor, spíš taková prvotina mé tvorby v PHP. Jsem začátečník.





1 komentář: