| 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: 18 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0