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: 14 let
|
0