Mikähän tuossa kyseisessä lauseessa takkuaa...
Oon jo katsellut pitkään muttei jakeluun...
Print:tin kanssa toimii ilman ongelmia.
$tarkistus = mysql_result($hakutulos, $i, "salasana");
Ei tuossa kyllä mitään vikaa pitäisi olla, jos muuttujien arvot ovat oikeat. Tieto siis näkyy tulostettuna oikein? Ei nyt muuta tule mieleen, kuin että merkkijonoon on eksynyt ylimääräisiä välilyöntejä tai rivinvaihtoja, joita ei huomaa, kun merkkijonon tulostaa sivulle (jos siis salasanaa verrataan toiseen). Mutta jos ei ongelma muuten ratkea, niin näytä vähän enemmän koodiasi.
Hokasin virhettä vähän pidemmälle.
Alla oleva haku tulostaa salasana kentän kolmannelta riviltä.
Tarkoitus olisi että tulostaa kentän, salasana riviltä jossa id:n arvona 3.
Myslistä poistettu php:llä rivejä joten ei vastaa toisiaan.
echo mysql_result($hakutulos, 3, "salasana");
Öh öh... Mikset sitten hae id:n perusteella salasanaa?
ajv kirjoitti:
Öh öh... Mikset sitten hae id:n perusteella salasanaa?
Miten???
Se tässä onkin ongelma ei mee jakeluun ;)
<?php $temp = mysql_query("SELECT salasana FROM taulu WHERE id = 3"); $temp = mysql_fetch_array($salasana); $salasana = $temp['salasana']; echo $salasana; ?>
Nyt vaikuttaa siltä että tietokanta on hieman oudosti suunniteltu. Ihan mielenkiinnosta: miksi salasana edes haetaan tietokannasta? Yleensähän siihen vain verrataan ja haetaan muita tietoja sen perusteella.
Että saa verrattua onko sama kuin käyttäjän lomakkeessa syöttämä salasana.
Jos keino miten saa verrattua tuonne kantaan päin niin kerro ihmeessä.
(PHP + MYSQL opetteluasteella.)
Ihan hatusta heitän nyt tämmösen esimerkin:
<?php //käyttäjän lähettämä salasana lomakkeelta $user_pswd = mysql_escape_string($_POST['salasana']); //haetaan salasanan perusteella etunimi ja sukunimi $temp = mysql_query("SELECT etunimi, sukunimi FROM taulu WHERE salasana = '$user_pswd'"); $temp = mysql_fetch_array($salasana); $etunimi = $temp['etunimi']; $sukunimi = $temp['sukunimi']; //jos vaikka $etunimi ei ole tyhjä kirjautuminen onnistui if($etunimi != ""){ echo "Kirjautuminen onnistui<br>\n" echo "Tervetuloa $etunimi $sukunimi!"; }else{ //muistathan, että ennen haederia ei saa tulostaa mitään! header("Location: http://perse.com/"); } ?>
Edit:
<?php //nii ja yleensä kirjauduttaessa kysytään myös käyttäjätunnusta: $user_pswd = mysql_escape_string($_POST['salasana']); $tunnus = mysql_escape_string($_POST['tunnus']); $temp = mysql_query("SELECT etunimi, sukunimi FROM taulu WHERE salasana = '$user_pswd' AND tunnus = '$tunnus'"); //jne... ?>
Vähän metsään selitetään tarkemmin...
Tarkoituksena on tehdä scripti mikä toimii aikaslailla samanlailla kun vieraskirja.
ilmoituksen jättäjä saa valita ilmoitusta jättäessään salasanan millä ilmoituksen voi poistaa.
Tulostaa ilmoitukset for silmukassa tulostaa kaikkiin ilmoituksiin posta linkin.
Painettaessa linkkiä nappaa id:n millä rivilla ilmoitus on ja menee sivulle mikä kysyy salasanan.
Sivulta lähetetään salasana ($salainen) ja id ($iidee) sivulle del.php(allaoleva koodi) koodi postaa viestin(toimii näin)
Pitäisi saada lisäksi tarkistettua samalla id numerolla olevalta rivilta salasana kentän sisällön että on sama kuin $salainen.
Kanta suurinpiirtein.
-----------------------------------------------------
! id ! nimi ! posti ! puhelin ! salasana !
-----------------------------------------------------
! 3 ! minä ! j@k.fi! 0400-33 ! munsala !
-----------------------------------------------------
! 4 ! muu ! h@g.fi! 06-8665 ! kijkij !
-----------------------------------------------------
<?php include("yhteys.php"); $sqlkom="SELECT * FROM elukat ORDER BY id, salasana"; $hakutulos=mysql_query($sqlkom, $yhteys) or die("SQL-komennossa virhe:" .mysql_error($yhteys)); mysql_query("DELETE FROM `elukat` WHERE `id` = '$iidee' LIMIT 1"); echo "Viesti poistettu onnistuneesti."; mysql_close($yhteys) or die("Error in connection."); ?>
Ups, vähän meni mettään toi mun esimerkki...
Hilppasen on nyt kiirus, mutta sen verran, että tuohan onnistuu yhdellä kyselyllä:
mysql_query("DELETE FROM elukat WHERE id = $iidee AND salasana = '$salasana'");
id-kentän yhteydessä ei tarvitse käyttää hipsuja, koska id on numeerinen, samoin ei taulun eikä kenttien kanssa.
Tänne kirjotin juuri tuosta viestien poistosta.
Nyt viikonlopun viettoon!
Edit: Just huomasin että sinähän se siellä kuhassakin olit kyselijänä :)
Poisto onnistuukin ongelmitta.
Pitäisi vaan saada tuo tarkistus ettei kuka tahansa pysty poistamaan.
~3 promillea:
Siis jos kaikki viestin kirjoittajan tiedot viesti mukaan lukien on samalla rivillä, niin miksei seuraava toimisi?
mysql_query("DELETE FROM elukat WHERE id = $iidee AND salasana = '$salasana'");
Jokaisella rivillä on oma id, niin on mahdottomuus, että poistuisi useampi kuin id:n osoittama rivi ja sekin vain siinä tapauksessa, että salasana on oikea.
ajv kirjoitti:
~3 promillea:
Siis jos kaikki viestin kirjoittajan tiedot viesti mukaan lukien on samalla rivillä, niin miksei seuraava toimisi?mysql_query("DELETE FROM elukat WHERE id = $iidee AND salasana = '$salasana'");Jokaisella rivillä on oma id, niin on mahdottomuus, että poistuisi useampi kuin id:n osoittama rivi ja sekin vain siinä tapauksessa, että salasana on oikea.
Aika hyvin 3:lla promillella :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.