Autor | Zpráva | ||
---|---|---|---|
Tomashek Profil |
#1 · Zasláno: 30. 3. 2008, 15:29:25
Zdravím..
Mám takový problém: Potřeboval bych změnit udaje uživatele..všechno funguje celkem dobře, ale když se nevyplní všechny údaje tak to z databáze vymaže ty, které jsou prázdné. MySQL_Query("UPDATE $MySQL_tabulka SET heslo='$heslo1', web='$web' where id='$id'") or die (mysql_error()); echo"<FONT color=\"darkred\" size=\"+1\">Údaje byly změněny</FONT>"; Myslím si, že problém je někde v mysql... Předem díky |
||
Venca V Profil |
#2 · Zasláno: 30. 3. 2008, 15:42:02
Problém rozhodně není v mysql, ale mezi klávesnicí a židlí. Pokud uživatel nějaké údaje nezadá, logicky se při příkazu update uloží do tabulky prázdný řetězec.
Řešení: zkontroluj si při odeslání formuláře vyplnění polí, podle toho si udělej podmínky, kterým pak přizpůsobíš UPDATE dotazy. |
||
Tomashek Profil |
#3 · Zasláno: 30. 3. 2008, 15:58:31 · Upravil/a: Tomashek
Co kdybych ale nechtěl aby musel zadávat všechny údaje ?
|
||
Venca V Profil |
#4 · Zasláno: 30. 3. 2008, 16:12:39
Tomashek
jen budu citovat z předchozí odpovědi: Řešení: zkontroluj si při odeslání formuláře vyplnění polí, podle toho si udělej podmínky, kterým pak přizpůsobíš UPDATE dotazy. Není tam nic o tom, že by musela být vyplněna všechna pole. Co má být vyplněno, musíš vědět ty, a podmínky a následné mysql dotazy si vytvořit podle toho. |
||
Adam Zábranský Profil |
#5 · Zasláno: 30. 3. 2008, 16:31:58
můžeš to zkusit třeba takhle:
$uzivatel = mysql_fetch_array(mysql_query("SELECT * FROM $MySQL_tabulka WHERE id='$id'")); $heslo1 = $uzivatel['heslo']; if(isset($_POST['heslo1'])) { $heslo1 = $_POST['heslo1']; } MySQL_Query("UPDATE $MySQL_tabulka SET heslo='$heslo1', web='$web' where id='$id'") or die (mysql_error()); doufám žes pochopil jak to funguje a je to to co potřebuješ. |
||
dajusa Profil |
#6 · Zasláno: 31. 3. 2008, 09:07:54
Ještě by bylo jedno řešení. Do formuláře, ve kterém upravuješ dané inforamce si na začátku natáhni z databáze veškeré údaje, které tam již máš uložené. Tím si zajistíš, že budou vyplněna pole ve formuláři a pokud uživatel opravdu bude chtít vymazat daný údaj tak ho smaže z pole. V opačném případě máš zajištěno, že se údaje v databázi nepromažou.
|
||
Tomashek Profil |
#7 · Zasláno: 31. 3. 2008, 13:49:02 · Upravil/a: Tomashek
To, co udělal Adam jsem zkoušel celý večer (přetvořoval atd.) a dospěl jsem k názoru, že to nejde, protože u toho jde zadat jedině to samé heslo jaké měl ..tudíž si ho nemůže změnit.
Asi zkusím radu dajusa.. Díky zatím všem. |
||
Venca V Profil |
#8 · Zasláno: 31. 3. 2008, 14:22:38
To, co udělal Adam jsem zkoušel celý večer (přetvořoval atd.) a dospěl jsem k názoru, že to nejde, protože u toho jde zadat jedině to samé heslo jaké měl ..tudíž si ho nemůže změnit. - zkoušel jsi špatně, to co napsal Adam Zábranský je naprosto správně fungující kód, který ti změní heslo pouze v případě, že ho uživatel vyplní. Co napsal(?a) dajusa je taky řešení, IMHO je ale lepší (jednodušší) to od Adama. Jednoduchou modifikací scriptu si pak můžeš takto ošetřit všechny vstupy z formuláře.
|
||
Tomashek Profil |
#9 · Zasláno: 31. 3. 2008, 16:27:14 · Upravil/a: Tomashek
Nevím, opravdu nevím v čem je problém. Možná, že to máte dobře napsané, ale mě to prostě vždycky když dám heslo jiné než bylo předtím, že se heslo neshoduje ( mám podmínku na shodnost hesla v prvním formuláři s druhým). zkusím sem napsat kód jestli byste nenašli nějakou chybu. Já nad tím sedím pořád a nic mě nenapadá
<h1>Změna hesla</h1> <? // zjistím jestli je uživatel přihlášen if($prihlasen==false){ header("Location:/?str=block"); exit; } else { $bb = MySQL_Query("SELECT * FROM $MySQL_tabulka WHERE id='$prihlasen';"); $aa=MySQL_Fetch_Array($bb); $kredit=$aa[kredit]; } ?> <br> <TABLE border="1" cellspacing="1" cellpadding="1" width="75%" align="center"><tr><TD align="center"> <? $id = $_GET['id']; $zob="ne"; if($odeslano=="ano"){ // test vyplnenych udaju if($heslo1!=$heslo2){ $zob="ano"; echo "<FONT color=\"FUCHSIA\"><b>Chyba: </b>Hesla nejsou stejná</FONT><br>"; } }else $zob="ano"; if($zob=="ano"){ ?> <br> <form action="" method="post"> <table align="center" border="1"> <tr> <? // formuláře k odeslání echo"<TD nowrap align=\"right\"><FONT color=\"RED\"><b>Heslo:</b></font><TD nowrap><INPUT type=\"password\" name=\"heslo1\" maxlength=\"25\" class=\"form\">"; echo'<tr>'; echo"<TD nowrap align=\"right\"><FONT color=\"RED\"><b>Opakuj heslo:</b></font><TD nowrap><INPUT type=\"password\" name=\"heslo2\" maxlength=\"25\" echo'<tr>'; echo"<TD nowrap align=\"right\"><FONT color=\"RED\"><b>Web:</b></font><TD nowrap><INPUT type=\"text\" name=\"web\" maxlength=\"128\" class=\"form\">"; ?> <tr> <th colspan="2"><INPUT type="submit" class="button" value="Změnit"> <input type="hidden" name="odeslano" value="ano"> </table> </form><?} else{ MySQL_Query("UPDATE $MySQL_tabulka redirect SET heslo='$heslo1', web='$web' where id='$id'") or die (mysql_error()); echo"<FONT color=\"darkred\" size=\"+1\">Údaje byly změněny</FONT>"; } ?></table> |
||
Venca V Profil |
#10 · Zasláno: 1. 4. 2008, 13:31:54
Jedna věc, která mě napadá souvisí se safe_modem. V tomto scriptu používáš globální proměnné ($heslo1 atd.), které ti ale budou fungovat pouze při safe_mode=off. Jakmile je safe_mode=on, musíš k proměnným z polí POST, GET, COOKIE, SESSION přistupovat pomocí $_POST["heslo1"] atd.
|
||
Tomashek Profil |
#11 · Zasláno: 1. 4. 2008, 16:25:28
Asi to mám....stacilo udelat takove jednoduche podminky:
if ($heslo1!="") { MySQL_Query("UPDATE $MySQL_tabulka redirect SET heslo='$heslo1' where id='$id'") or die (mysql_error()); } elseif ($web!="") { MySQL_Query("UPDATE $MySQL_tabulka redirect SET web='$web' where id='$id'") or die (mysql_error()); } Jinak díky všem za snahu :-) |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0