Autor Zpráva
Pavel Vodnář
Profil *
Ahojky potřeboval by jsem pomoct - jak se dá přečíst id z databáze?

Potřebuji to zjistit nějak takto - v php mi poadili přes session, ale nedaří se mi to zakombinovat:
$iduzivatele = mysql_query("SELECT id FROM klienti ");



Děkuji Vám
ShiraNai7
Profil
Pavel Vodnář:
$iduzivatele = mysql_query("SELECT id FROM klienti");
$iduzivatele = mysql_fetch_assoc($iduzivatele);
echo $iduzivatele['id'];
Pavel Vodnář
Profil *
když toto vložím do kódu a přihlásím se pod jakým kolik uživatelem id píše hodnotu 1 proč? je tam něco špatně?
Pavel Vodnář
Profil *
mám tento kód:

<?php
 
session_start();

if (!isset($_SESSION["loggeduser"])) header("Location: prihlaseni.php");


 





// echo 'Přihlášený uživatel: '.$_SESSION["loggeduser"];
  //echo '<a href="logout.php">Odhlásit</a>'





$submit = $_POST['submit'];
$box1 = $_POST['box1'];
$box2 = $_POST['box2'];
$nadpis = $_POST['nadpis'];
$text = $_POST['text'];
$date = date("Y-m-d");



// udaje pro pripojeni k DB

$user ="-------------------";
$pass = "---------------------";
$localhost = "------------------------------";

if ($submit)
{

$connect = mysql_connect ("$localhost","$user","$pass") or die("Nepodařilo se připojit k databázi");

mysql_select_db ("-----------------");

$iduzivatele = mysql_query("SELECT id FROM klienti ");
$iduzivatele = mysql_fetch_assoc($iduzivatele);
echo $iduzivatele['id'];



$queryreg = mysql_query("

INSERT INTO inzeraty VALUES ('$iduzivatele','','','$nadpis','$text','$date')

");
}
?>


Dělá mi to chybu v tom že mi to id nezapíše dp DB, čím to je? Děkuji Vám
Taps
Profil
connect = mysql_connect ("$localhost","$user","$pass") or die("Nepodařilo se připojit k databázi");

mysql_select_db ("-----------------");

$iduzivatele = mysql_query("SELECT id FROM klienti ");
$iduzivatele = mysql_fetch_assoc($iduzivatele);
$idecko= $iduzivatele['id'];



$queryreg = mysql_query("

INSERT INTO inzeraty VALUES ('$idecko','','','$nadpis','$text','$date') or die (mysql_error());

");
}
?>
Pavel Vodnář
Profil *
Ano to pracuje správně ale, pořád mi to ukládá id 1 u jakéhokoliv uživatele, může to být ještě něčím jiným? Děkuji Vám
Radek9
Profil
Pavel Vodnář:
Klauzule WHERE ti něco říká?
xmark
Profil
Pavel Vodnář:
pořád mi to ukládá id 1 u jakéhokoliv uživatele,

A co by sis představoval jiného, když dotaz je takto?
SELECT id FROM klienti

Nemáš dořešené přihlášení. Postup má vypadat takto:
1. podle existence session rozlišuj, jestli stránku otevřel někdo přihlášený, nebo nepřihlášený
2. nepřihlášenému nabídni formulář k přihlášení, přihlášenému obsah
3. přihlášení = byl vyplněn přihlašovací formulář. Když toto nastalo, ověř username + heslo, když je to pořádku, vytvoř session a dej do ní ID osoby.
4. k přežití session stačí session_start() na začátku. Hned pod něj si dej zpracování toho formuláře.
5. V celém dalším kódu pak můžeš kdykoliv ověřit jestli session existuje nebo ne (isset) a jaký je její obsah (ID osoby). Tu hodnotu pak používáš při filtrování např. vzkazníku, inzerátů vložených danou osobou nebo čehokoliv jiného.

Až toto pochopíš, pouštěj se do dalších věcí.
Nevím, jakou strukturu má tvoje tabulka inzeraty, ale jestli první sloupec je ID (což by bylo záhodno), nepatří do něj ID vkládající osoby, musí se to chovat jako každé jiné ID - automaticky inkrementovat, ručně se nazadává. Pro ID vkládajícího si v té tabulce vyrob další sloupec. A ještě jedna rada: v INSERTu je dobré vyjmenovávat sloupce, do kterých vkládáš. Zajistí ti to lepší přehled co kam jde a mimo to to zamezí vzniku chyb v případech, že bys strukturu té tabulky změnil.

Jestli něčemu z těch bodů nerozumíš, ptej se konkrétně. Ale bylo by fajn, kdyby ses trochu snažil hledat i sám.
Pavel Vodnář
Profil *
xmark:
Děkuji Vám za informace -

bod 1,2 řesíme v prihlaseni.php

k bodu 3 se snažim přidat id osoby, ale vůbec si nevím rady - zkouším veškeré varianty co jsem našel a pořád to pracuje špatně - jak se dá přidat do session id osoby? Děkuji Vám.

ano id uzivatele mam nastaveno na auto inkrement.
Pavel Vodnář
Profil *
Jak u tohoto bodu:

3. přihlášení = byl vyplněn přihlašovací formulář. Když toto nastalo, ověř username + heslo, když je to pořádku, vytvoř session a dej do ní ID osoby.

jak dám do session id osoby?

Děkuji Vám
Tori
Profil
Obyč.uložení hodnoty do pole, stejně jako už ukládáte uživ.jméno tady - co je na tom? A id zjistíte v tom samém dotazu, jako jméno a heslo uživatele.
Pavel Vodnář
Profil *
Tori:
To znamená že by to mělo vypadat nějak takto ?:

if ($radek = mysql_fetch_assoc($vysledekSql)) $_SESSION["id"]=$radek["id"];



Děkuji Vám
Tori
Profil
Ukládejte ID a také jméno uživatele (a případně jakékoli další údaje, které by mohlo být potřeba někde zobrazovat po dobu přihlášení uživatele, např.čas/IP posledního přihlášení, apod. - nevím, co všechno máte v tabulce klienti. Jméno uživatele v session přece jinde používáte na odlišení přihlášen/nepřihlášen).
Pavel Vodnář
Profil *
aha, když se pokusím vytvořit:

$vysledekSql = mysql_query("SELECT uzivatelskejmeno, heslo FROM klienti WHERE uzivatelskejmeno = '".$name."' AND heslo = '".$password."';");

if ($radek = mysql_fetch_row($vysledekSql)) 
{
$_SESSION["id"]=$radek['id'];

}


Jak to pak uložim do druhé databáze s inzeráty na první místo u id:


$queryreg = mysql_query("

INSERT INTO inzeraty VALUES ('id','','','$nadpis','$text','$date') 

");


Děkuji Vám
xmark
Profil
Pavel Vodnář:
No sláva, ten první blok kódu je správně.
Ten druhý je úplně špatně. Přečti si, co jsem psal pod těmi pár body. A až se podle toho zařídíš, dej vědět, jestli to funguje.
<sipkadolu>Tori: pravda, přehlídl jsem, pardon.
Tori
Profil
xmark:
No sláva, ten první blok kódu je správně.
Bude, až bude z DB číst i to ID uživatele, které pak ukládá.
Pavel Vodnář
Profil *
xmark:
DB mám db takto:

INSERT INTO inzeraty VALUES ('id_klienta','id_inzeratu','','$nadpis','$text','$date')

id_inzeratu mám auto inkrement

ale nedaří se mi zapsat to $_SESSION["id"]=$radek['id'] do id_klienta...

Co tam může tedy být ještě špatně? Děkuji Vám
Pavel Vodnář
Profil *
Když pacuji s tímto kódem:

if ($submit)
{

$connect = mysql_connect ("$localhost","$user","$pass") or die("Nepodařilo se připojit k databázi");

mysql_select_db ("DB");

$vysledekSql = mysql_query("SELECT uzivatelskejmeno, heslo FROM klienti WHERE uzivatelskejmeno = '".$name."' AND heslo = '".$password."';");

if ($radek = mysql_fetch_row($vysledekSql)) 
{
$_SESSION["id"]=$radek['id'];

$id=$_SESSION["id"]=$radek['id'];
}
$queryreg = mysql_query("INSERT INTO inzeraty VALUES ('$id','','','$nadpis','$text','$date') ");
}



Proč mi to do hodnoty $id uloží vždy nulu? Děkuji Vám
xmark
Profil
Pavel Vodnář:
Proč mi to do hodnoty $id uloží vždy nulu?
#16
Pavel Vodnář
Profil *
znamená to tedy že do $id ukládám vždy nulu? proč to tedy neukládá id z tabulky klienti? však ho ukládam do session a to pak převedu do proměnné $id
nebo co tam je ještě špatně? Děkuji Vám
Pavel Vodnář
Profil *
Nebo to nešte id z databáze klienti? Děkuji
Pavel Vodnář
Profil *
Už sem na to přišel - chyba byla v tom že hodota $name neobsahovala nic a byla prázdná,

děkuji Vám za pomoc - i tak - sem rád za tento portál a Vážim si všech, kteří se účatní diskuze. U mě máte všici palec nahoru ;)

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: