Autor Zpráva
virgo86
Profil
Zdravím,
Už delší dobu mám problém s načitaním dat z databaze MySQL pomocí PHP. Skript v souboru zkouska0.php tvoří formulář´pro zadani poznámky. script v souboru zkouska1.php zajistí uložení do databaze. soubor zkouska2.php načte z databaze zadane novinky. Cokoli vložim do dabaze ručně pomocí phpMyadmin tak se novinky zobrazi spravně ale po načtení na webu se nezobrazí diakritika...čárky ano háčky ne. zkouska2.php

zkouska0.php
<?php
require_once('fce.php');
session_start();
hlavicka('Computer Numeric Control', '', $strana);
?>
<center> 
          <fieldset><legend>           
           Vložit Poznámku</legend>       
          </center>     
        <form action="zkouska1.php" method=post>
   <table width="100" cellpadding=2 cellspacing=0>
   <tr>
       <td><input type=textarea name=poznamka size=16 maxlength=1000></td>
   </tr>
   <tr><td align=right><input type=submit value="Uložit">
   </td></tr>
   </table>       
          </fieldset>     
          </form>
<?php 
konec();

?>

zkouska1.php
<?php 
// skript pro vložení poznámky
// vytvoření proměných
$poznamka = $_POST['poznamka'];
require_once('fce.php');
hlavicka('Computer Numeric Control', '', $strana);
 ?>
 
<?php
$conn = db_connect();
  if (!$conn)
  {
     echo 'chyba: k databazi se nelze připojit';
     konec();
     exit;
  }
  if (!filled_out($HTTP_POST_VARS))
 {
   echo 'Nenapsal jste žadnou poznámku.
         Zkuste to znovu';
   konec();  
   exit;
 }
 else 
 {
   // pokus vlozeni do databaze
   
   $nickid = 'virgo';
   $query= "insert into poznamky values ('', '$nickid', '$poznamka')";
    $result = mysql_query($query);
  if (!$result)
{
    echo 'Poznámka: '.$poznamka.' nebyla vložena';
}
 else 
 {
  echo $nickid.' Vaše poznámka '.$poznamka.' byla přidána. <a href="zkouska0.php">zpět</a>';
 }
 }
  
  konec();
?>

zkouska2.php
<?php 
//zde si muže registrovaný uživatel přečíst své vložene poznámky
require_once('fce.php');
session_start();
hlavicka('Computer Numeric Control', '', '');
$conn = db_connect();
if (!$conn)
  {
     echo 'chyba: k databazi se nelze připojit';
     konec();
     exit;
  }
  $query = "select * from poznamky where nickid like 'virgo'";
  $result = mysql_query($query);
  @$num_results = mysql_num_rows($result);
if ($num_results==0)
  {
  echo 'Nemate napsany žadné poznámky';
  konec();
  exit;
  }
 echo 'Poznámek nalezeno celkem '.$num_results;
echo '<br /><font color="white"><ul>';
  for ($i=0; $i <$num_results; $i++)
  {
  $row = mysql_fetch_array($result);
  echo '<li>';
  echo htmlspecialchars(stripslashes($row['poznamka']));
   print ' [<a href="smazat_poznamku.php?poznamka='.$row['id'].'">smazat</a>] ';
  echo '</li>';
}
echo '</ul>';
konec();

´
volani databaze $conn
// funkce pro pripojeni k databazi.
function db_connect()
{


      @$result = mysql_pconnect('localhost', 'uziv.jmneo', 'heslo'); 
   if (!$result)
      return false;
   if (!mysql_select_db('virgonet_cz'))
      return false;

   return $result;
}
function get_writer_record($username)
{
  $conn = db_connect();
  $sql = "select * from uzivatele where nickid = '$username'";
  $result = mysql_query($sql, $conn);
  return(mysql_fetch_array($result));
}

function get_story_record($story)
{
  $conn = db_connect();
  $sql = "select * from stories where id = '$story'";
  $result = mysql_query($sql, $conn);
  return(mysql_fetch_array($result));
}


Tak a ještě to zatím neřeším ale nejde ani vložit poznamku do databaze zastavý se to u podmínky
 if (!$result)
{
    echo 'Poznámka nebyla vložena';
}
 else 
 {
  echo $nickid.' Vaše poznámka '.$poznamka.' byla přidána. <a href="zkouska0.php">zpět</a>';
 }
 }

Vím že bych tady našel rady. Vada asi bude v kodovaní ale nevím kde a hlavně na jaké kodovaní co změnit. V databazi mám nastaveno porovnavaní na utf8_czech_ci a něco na cp1250_czech_cs. to je nastaveno v phpMyadmin a v hlavicce stranek je
<meta http-equiv="content-type" content="text/html; charset=windows-1250">  
Jinak u mě v PC všechno běží bez jakýkoliv problému myslím na virtualnim serveru.
Casero
Profil
virgo86:
Přečti si něco o tom kódování. Mělo by to vyřešit nastavení "set names" po připojeni k db.
virgo86
Profil
Casero:
díky moc teď to načitá bez problému. Teď tedy vyřešit jak to do databaze vložit přes web?
virgo86
Profil
nejde vložit poznamka přes webovou stranku do databaze .Vyzkoušejte si to pomocí zkouska0.php
Casero
Profil
virgo86:
Cituji zdejší FAQ: ,,Nefungují proměnné z formuláře nebo z URL
K hodnotě vstupního pole s názvem "nazev" se dříve přistupovalo přes proměnnou $nazev. Z bezpečnostních důvodů to dnes bývá na serverech často zakázáno.
K hodnotám zaslaným metodou POST lze přistupovat přes $_POST['nazev'], metodou GET přes $_GET['nazev']. K proměnným z cookies přes pole $_COOKIE.
Případně lze využít pole $_REQUEST, ve kterém jsou všechny proměnné zaslané metodou GET, POST i v cookies. "
virgo86
Profil
Casero:
no když jsem se učil programovat pomocí knižky tak v úvodu to psaly ale nějak jsem na to pozapoměl...tak tedy tam vložim
$poznamka = $HTTP_POST_VARS['poznamka'];
a uvidim
nebo tam musí byt $_post['poznamka'] podle mé hytré knihy je to jedno. ale stejně to není ta hlavní chyba scriptu kvůly kteremu nelze vkladat data.
Casero
Profil
virgo86:
Nejlepší je se rovnou naučit pracovat s proměnnou z formuláře jako
$_POST["poznamka"]
Alphard
Profil
virgo86:
$poznamka = $HTTP_POST_VARS['poznamka'];
Myslím, že je to dosud funkční, ale zastaralé. Podívejte se, z jakého roku ta vaše kniha je :-)
Jak píše Casero, tak pro post proměnné $_POST["poznamka"], pro data v url potom $_GET["poznamka"] a obdobně $_SESSION a $_COOKIE.
virgo86
Profil
Alphard:
jde o knihu PHP a MySQL Rozvoj webových aplikaci autorři: Luke Welling a Laura Thomson Třetí vydaní rok 2004/05
virgo86
Profil
Pánové problém s načitaním je v pořádku chtělo to opravdu nastavit správné kodovaní jak v databazi tak ve scriptu. díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: