| Autor | Zpráva | ||
|---|---|---|---|
| virgo86 Profil |
#1 · Zasláno: 2. 1. 2010, 13:33:15 · Upravil/a: virgo86
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"> |
||
| Casero Profil |
#2 · Zasláno: 2. 1. 2010, 14:10:45
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 |
#3 · Zasláno: 2. 1. 2010, 14:21:22
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 |
#4 · Zasláno: 2. 1. 2010, 14:22:06 · Upravil/a: virgo86
nejde vložit poznamka přes webovou stranku do databaze .Vyzkoušejte si to pomocí zkouska0.php
|
||
| Casero Profil |
#5 · Zasláno: 2. 1. 2010, 14:26:33
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 |
#6 · Zasláno: 2. 1. 2010, 14:31:49 · Upravil/a: virgo86
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']; 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 |
#7 · Zasláno: 2. 1. 2010, 14:39:45
virgo86:
Nejlepší je se rovnou naučit pracovat s proměnnou z formuláře jako $_POST["poznamka"] |
||
| Alphard Profil |
#8 · Zasláno: 2. 1. 2010, 15:27:31
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 |
#9 · Zasláno: 2. 1. 2010, 15:43:28
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 |
#10 · Zasláno: 3. 1. 2010, 11:08:33
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
|
||
|
Časová prodleva: 17 let
|
|||
0