Autor Zpráva
martin@monfish
Profil *
ahoj, psal jsem uz vcera, dostal jsem napovedu, ale moc mi nepomohla, jsem zacatecnik, prosim pokud nekdo vite, napiste mi co je spatne, ne samotny odkaz nekam jinam, zatim jsem skaloprevne presvedcen, ze kod mam dobre:) a mysql se na me spiklo...
prolezl jsem spousty navodu a rad na to jak ziskat data z tabulky a podle vseho by to melo fungovat bez problemu, ale pise mi to
za ziskana data z tabulky vyraz: ,resource id #2
<?
require('../soucast pripojeni');
$con = mysql_connect ($s, $d, 'heslo');
if (!$con)
{
die ( '<p style=color:red;>Nelze se připojit k databázi SQL, omlouváme se! </p>');
}

mysql_select_db ($db);
$query = "SELECT * FROM CLANKY WHERE ID=1";
$result = mysql_query($query); // dotaz
$row = mysql_fetch_array($result, MYSQL_ASSOC); // ulozeni vysledku do mezipameti?

$tit= stripslashes($row['TITUL']); // prizazeni vysledku k promennym ? esi se nepletu...
$aut= stripslashes($row['AUTOR']);
$kw1= stripslashes($row['KEYW1']);
$kw2= stripslashes($row['KEYW2']);
$kw3= stripslashes($row['KEYW3']);
$obs= stripslashes($row['OBSAH']);
$dat= stripslashes($row['DATUM']);

mysql_close($con);
?>

promene $tit, $aut, $kw1 pouzivam v nasledujicim php kodu stranky a tam se objevuje i ten identifikator dotazu

dekuji za pomoc, rad bych to pochopil
joejoe
Profil *
na prvni se zda ze by to melo fungovat, zkusil bych pridat ladici vypisy, bez nich se da relativne tezko poznat kde je chyba

<?php
require('config.php');
error_reporting(E_ALL);
$con = mysql_connect ($config['dbhost'], $config['dbuser'], $config['dbpass']) or die ( '<p style=color:red;>Nelze se připojit k databázi SQL, omlouváme se! </p>');
mysql_select_db ($config['dbname']) or die(mysql_error());

$query = "SELECT * FROM CLANKY WHERE ID=1";
$result = mysql_query($query) or die(mysql_error()); // dotaz
$row = mysql_fetch_array($result, MYSQL_ASSOC); // ulozeni vysledku do mezipameti?
print_r($row);

$tit= stripslashes($row['TITUL']); // prizazeni vysledku k promennym ? esi se nepletu...
$aut= stripslashes($row['AUTOR']);
$kw1= stripslashes($row['KEYW1']);
$kw2= stripslashes($row['KEYW2']);
$kw3= stripslashes($row['KEYW3']);
$obs= stripslashes($row['OBSAH']);
$dat= stripslashes($row['DATUM']);

mysql_close($con);
?>
martin@monfish
Profil *
mno, co se tyce pripojeni a ziskani vysledku z databaze, tak s tim problem neni a snad ani nebyl, dle tvych rad jsem to cvicne prepsal, ale zadna zmena v konecnem dusledku...

muj problem je nasledujici: ziskam data z databaze, vypisu si je do stranky vsude kde je potrebuju, ALE! za kazdou promennou
mi to pripise identifikator dotazu ( Resource id #2) a ten identifikator je to, co mi pije krev, nevim proc tam leze, hledal jsem snad uz vsude, ale jedine co se kdy kde resilo, ze lidi zapomneli tento radek: $row = mysql_fetch_array($result, MYSQL_ASSOC);
a pak jim to delalo rotiku, prolezl jsem i manualy a dokonce to prepsal i podle nich a stale mi to vraci spolu s vysledkem ten pitomej identifikator, mozna sem pitomej ja,nekde mam chybu, ale kde ?! nemuze to byt nekde v tabulce databaze?
joejoe
Profil *
ladici vypisy u kazde komunikace s databazi "or die(mysql_error())" by ukazaly problem u spojeni s databazi.

a ladici vypis print_r($row) by ti mel ukazat co dostanes od databaze - v podstate jsou tam 2 mozne problemy:
- pri vkladani se ti do dotazu INSERT nebo UPDATE dostane retezec 'Resource id #2'
- pri vypisovani vysledku dotazu delas neco jako echo $tit.$result;

V kazdem pripade imho chyba neni nikde v tomto skriptu.

Jeste se muzes podivat treba pomoci phpmyadminu do databaze a rucne prekontrolovat jake jsou tam data..
martin@monfish
Profil *
jojo, ladici vypis mi to vypsal vporadku, zkusil jsem si cvicne zadat nova data do db a opravdu se mi tam v phpadminu objevily ty resoursy, fuj to je ale slovo...

no tak jsem to vsechno odzkousel a nesel jsem co to zpusobuje, prikladam nasledujici kody, nevim ktera cast to dela

formular:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>napsat článek</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="content-language" content="cs">
<meta name="robots" content="noindex,nofollow">
<link rel="stylesheet" type="text/css" href="styl.css" media="screen">
<body>
<div id="top"><h1>
<a href="logout.php">logout</a> - pro skončení relace je z hlediska bezpečnosti vždy nutné se odlogovat !!!</h1></div>
<div id="cover"><div id="head"></div>

<div id="obsah">
<?echo(strftime("%d-%m-%Y ", getlastmod()));?>
<form action="posilaciscript" method="post">
<p>Datum: <input type="text" name="DATUM" size="30" value="sem překopíruj datum"></p>
<p>Autor: <input type="text" name="AUTOR" maxlength="30" size="30"></p>
<p>Název článku - titul: <input type="text" name="TITUL" maxlength="60" size="60"></p>
<p>Klíčové slovo 1: <input type="text" name="KEYW1" maxlength="60" size="60"></p>
<p>Klíčové slovo 2: <input type="text" name="KEYW2" maxlength="20" size="20"></p>
<p>Klíčové slovo 3: <input type="text" name="KEYW3" maxlength="20" size="20"></p>
<p><textarea name="OBSAH" cols="72" rows="20" value="<? if (isset ($_POST["OBSAH"])) echo $_POST["OBSAH"];?> "></p>
<p> !!! autor, titul a obsah článku musí být vyplněno !!! <br><input type="submit"></p>
</form>

</div></div>




odesilaci script:
<?php
if ( ($_POST ["DATUM"]) && ($_POST["AUTOR"]) && ($_POST["OBSAH"]))
{
session_start();
if(session_is_registered("jm")){
require('spojeni');}
}
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>článek byl odeslán</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="content-language" content="cs">
<meta name="robots" content="noindex,nofollow">
<link rel="stylesheet" type="text/css" href="styl.css" media="screen">
<body>


<?
$con = mysql_connect ($s, $, 'heslo');
if (!$con)
{
die ( '<p style=color:red;>Nelze se připojit k databázi SQL, nebo není vyplněno jedno z polí AUTOR, TITUL či OBSAH článku! </p>');
}

function no_problem ($data) {
global $con;
if (ini_get ("magic_quotes_gpc")){
$data = stripslashes($data);}
return mysql_real_escape_string("$data, $con");
}
$dat= no_problem($_POST[DATUM]);
$aut= no_problem($_POST[AUTOR]);
$tit= no_problem($_POST[TITUL]);
$kw1= no_problem($_POST[KEYW1]);
$kw2= no_problem($_POST[KEYW2]);
$kw3= no_problem($_POST[KEYW3]);
$obs= no_problem($_POST[OBSAH]);

mysql_select_db ($db);

$sql="INSERT INTO CLANKY (DATUM, AUTOR, TITUL, KEYW1, KEYW2, KEYW3, OBSAH)
VALUES ('$dat','$aut','$tit','$kw1','$kw2','$kw3','$obs')";

if (!mysql_query($sql,$con))
{
die('Error: článek se nepodařilo uložit, chyba systému SQL ' . mysql_error());
}
echo "článek byl odeslán
<p style=color:blue;><a href=logged.php>napsat další </a></p>
<p style=color:red;><a href=logout.php>odhlásit se</a></p>


";

mysql_close($con)
?>
martin@monfish
Profil *
mam to, opsal jsem ten nesmysl z knizky, ta funkce no_problem, smazal jsem to a pridal addsleshes a funguje

otazka? pouzivate nekdo tuto funkci, jak se nejlip resi problematicke znaky?
joejoe
Profil *
return mysql_real_escape_string("$data, $con");
joejoe
Profil *
spravne by melo byt:
return mysql_real_escape_string($data, $con);
martin@monfish
Profil *
díky, joe
Toto téma je uzamčeno. Odpověď nelze zaslat.