Hei!
Teen ylläpitopuolta, jossa hyödynnän istuntopiparia globaalin muuttujan cookien avulla. Minulla on nyt muuten toimiva päivityslomake tehtynä, mutta kuinka luen sen hetkisen tallentajan tietokantaan? Ylläpitoon on useampi tunnus ja tunnuksilla pääsee päivittämään muidenkin tallentamia tietoja. Seuraavalla $kyselyllä ilman lisämääreitä ei tulostu sen hetkisen käyttäjän nimeä vaan tietokannan ensimmäinen. Hyödynnänkö jotenkin istuntopiparia tässä vai mikä olisi simppeli ratkaisu tallentamaan $tallentaja-muutuujaan sen hetkinen tunnuksilla kirjautunut käyttäjä?
Koodinpätkää...
$kysely = mysql_query("select * from kayttaja where tunnus= ??? "); $tieto = mysql_fetch_row($kysely); // luetaan muuttujaan, kumpaa nappia käyttäjä painoi edellisellä lomakkeella $nappi = $_POST['nappi']; // luetaan sitten muutkin muuttujien arvot $id = $_POST['id']; $otsikko = $_POST['otsikko']; $wwwosoite = $_POST['wwwosoite']; $tallentaja = $tieto[1]; // vai mikä ????;
Olen vasta aloittelija ja tunnun hukkuvan tietoviidakkoon. Kiitos jo etukäteen vinkeistä ja avuista.
Hmm... Mainostan koodivinkkiäni, siitä saattaa olla apua:
https://www.ohjelmointiputka.net/koodivinkit/
Tuossa systeemissä pipariin tallennetaan käyttäjäkohtainen istunto, jonka avulla käyttäjän tiedot saa helposti luettua:
$kysely = mysql_query("SELECT tunnus FROM kayttajat WHERE istunto = '".$_COOKIE['istunto']."'"); $tieto = mysql_fetch_row($kysely); $tallentaja = $tieto['tunnus'];
Näyttää mielenkiintoiselta ja toimivalta, mutta en saa poimittua tuolla kyselyllä $tallentajaa. En tosin saa mitään herjaustakaan, $tallentajaa ei vain tulostu. Mitähän teen väärin?
$kysely = mysql_query("select tunnus from kayttaja where istuntotunnus = '".$_COOKIE['istuntotunnus']."'"); mysql_error(); $tieto = mysql_fetch_row($kysely); mysql_error(); $tallentaja = $tieto['tunnus']; mysql_error(); print "Tallentaja on: $tallentaja"; mysql_error();
Piparini on asetettu seuraavasti:
setcookie("istuntopipari","$istunto");
Ja kayttaja-tauluni on seuraavanlainen:
create table kayttaja ( id int(11) not null auto_increment primary key, tunnus varchar(10) not null, salasana varchar(100) not null, aika timestamp, istuntotunnus varchar(32), );
setcookie("istuntopipari","$istunto");
muotoon
setcookie("istuntotunnus","$istunto");
Hei!
En saanut tuollainkaan pelaamaan (varmaan vika tämän pään nupissa). Mutta onnistuin tälläin kun lisäsin rivin lisää koodiini:
$kysely = mysql_query("select tunnus from kayttaja where istuntotunnus = '$istuntopipari' "); $rivit = mysql_num_rows($kysely); /* uusi rivi --> */ $tallentaja = mysql_fetch_row($kysely);
Josta sitten pääsin lukemaan tallentajan tunnuksen $tallentaja[0].
Kiitos oikein paljon avusta! Koodivinkkisi https://www.ohjelmointiputka.net/koodivinkit/
Mun moka. Kehotin käyttämään mysql_fetch_row()-funktiota, vaikka tarkoitin mysql_fetch_array()-funktiota. mysql_fetch_array()-funktio palauttaa taulun rivistä taulukon, jonka alkioina on sekä taulun sarakkeen nimi ($tallentaja['tunnus']), että sen indexi ($tallentaja[0]).
edit:
https://www.php.net/manual/en/function.mysql-fetch-array.php:
mysql_fetch_array() is an extended version of mysql_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.
Aihe on jo aika vanha, joten et voi enää vastata siihen.