Diskuze: MySQL
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 41 zpráv z 41.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Přidej do SQL: "ORDER BY id".
Porovnej s tímto:
$result = mysql_query("SELECT meno, mince FROM pouzivatelia ORDER BY id");
echo '<table>';
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$meno = htmlspecialchars($row["meno"]);
echo <<<EOT
<tr><td>$meno</td><td>$row[mince]</td></tr>
EOT;
}
echo '</table>';
Funguje samozřejmě i tohle:
echo "<tr><td>$meno</td><td>$row[mince]</td></tr>";
nebo tohle:
echo "<tr>
<td>$meno</td>
<td>$row[mince]</td>
</tr>";
nejde to. stále vypisuje všechni uživatele pri kterích píše počet mincí. Počul som že tam má isť iný príkaz while nebo where nevím presne a že tam má bejt session_id ješte raz prikladam kompletný zmenený kod:
<?php
$result = mysql_query("SELECT usr, mince FROM tz_members ORDER BY id");
echo '<table>';
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$usr = htmlspecialchars($row["usr"]);
echo <<<EOT
<tr><td>$usr</td><td>$row[mince]</td></tr>
EOT;
}
echo '</table>';
?>
Tady to píše : http://diskuse.jakpsatweb.cz/?…
Myslel jsem si, že chceš, aby to bylo seřazeno podle ID. Pokud chceš pouze pro jedno ID, místo "ORDER BY id" tam dej "WHERE id=$id".
Jenom doufám, že proměnnou $id nevytahuješ z $_GET nebo $_POST, ale z pole $_SESSION.
ne neboj je to z tabulky
ne z POST
ok jdu to
skusit
jo super jde to fakt
díki
ID uživatele by mělo být hlavně v $_SESSION, abys věděl, kdo je přihlášený.
Ako tam vytvorím border ? Chcem vytvoriť tabuľku kde bude hore písať Meno a pod tým meno. Potom vedľa počet mincí a pod tým mince.. Potom tam pribudnú aj body a ďalšie veci. Lenže do php tabuľy sa nejak nerozumiem.
To už s jazykem SQL nesouvisí. To musíš udělat v HTML a CSS.
<tr><th>Meno</th><th>Počet mincí</th></tr>
oukej a ešte jedna vec. Ako / kde nastavím abz hráč po registrácii dostal automaticky 100 mincí ? Pridal som mince aj do tohto.
mysql_query(" INSERT INTO tz_members(usr,pass,email,regIP,dt,mince)
VALUES(
'".$_POST['username']."',
'".md5($pass)."',
'".$_POST['email']."',
'".$_SERVER['REMOTE_ADDR']."',
'".$_POST['mince']."',
NOW()
určite tam nemá byť post no eiem čo tam dať.
No furt to nejde. Meno a mince sú v jednom stlpci pod Meno.
<TABLE BGCOLOR="CC9900" BORDER=3 >
<tr><td>Meno</th><th>Mince</td></tr>
<tr><td>
<?php
$result = mysql_query("SELECT usr, mince FROM tz_members WHERE id=$id");
echo '<table>';
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo '<tr>';
echo '<td>'. $row["usr"] .'</td>';
echo '<td>'. $row["mince"] .'</td>';
echo '</tr>';
}
echo '</table>';
mysql_free_result($result);
?>
</TABLE>
Také by ses mohl naučit odsazovat. Kód se nepíše tak vpravo.
$username = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['pass']);
$email = mysql_real_escape_string($_POST['email']);
mysql_query("INSERT INTO tz_members(usr, pass, email, regIP, dt, mince)
VALUES('$username', MD5($pass), '$email',
'$_SERVER[REMOTE_ADDR]', NOW(), 100)");
Však jsem ti napsal, abys to napsal takhle:
<tr><th>Meno</th><th>Mince</th></tr>
Tie mince mi vubec nefunguji a už mi nešlo ani vubec registovat jen furtt psalo ze uz jmeno existuje. Akonáhle tam neo pridám dosere celý registračný zdoják.
Doporučuji ti naučit se SQL pořádně, začít používat PDO (nebo alternativu) a OOP a pak přepsat celý kód.
-
Potrebujem veiet ako tam ritto že pri registráci dosanhrá 100 micí ddaabáz takže pridaať novú hodntu. Kit m už nejak nechce odpisovať tak tu dávam celoý zdroják.
<head>
<link rel="shortcut icon" href="icon.ico">
<title>Online hra Villagers</title>
</head>
<div align="right"><b><font size="6"></font></b>
<script language="JavaScript" src="http://htmlky.szm.com/cas.js"></script>
<span id="xClock" style="color:#000000"></span>
<img src="title1.0.png" align="bottom">
<div align="center"><b><font size="6"></font></b>
<IMG SRC="http://villagers.wz.sk/logohome.png">
<BR><B><font color="#FFFFFF">
</form>
<TABLE BGCOLOR="CC9900" BORDER=3 >
<TR> <TD>
<?php
define('INCLUDE_CHECK',true);
require 'connect.php';
require 'functions.php';
// Those two files can be included only if INCLUDE_CHECK is defined
session_name('tzLogin');
// Starting the session
session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks
session_start();
if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
{
$_SESSION = array();
session_destroy();
// Destroy the session
}
if(isset($_GET['logoff']))
{
$_SESSION = array();
session_destroy();
header("Location: registracia.php");
exit;
}
if($_POST['submit']=='Login')
{
// Checking whether the Login form has been submitted
$err = array();
// Will hold our errors
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
// Escaping all input data
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr,mince FROM tz_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usr'])
{
// If everything is OK login
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// Store some data in the session
setcookie('tzRemember',$_POST['rememberMe']);
}
else $err[]='Wrong username and/or password!';
}
if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);
// Save the error messages in the session
header("Location: registracia.php");
exit;
}
else if($_POST['submit']=='Register')
{
// If the Register form has been submitted
$err = array();
if(strlen($_POST['username'])<4 || strlen($_POST['username'])>10)
{
$err[]='Heslo musi mat viac ako 3 a menej ako 10 znakov !';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['username']))
{
$err[]='Tvoje heslo obsahuje neplatne znaky !';
}
if(!checkEmail($_POST['email']))
{
$err[]='Zadal si neplatny e-mail !';
}
if(!count($err))
{
// If there are no errors
$pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
// Generate a random password
$_POST['email'] = mysql_real_escape_string($_POST['email']);
$_POST['username'] = mysql_real_escape_string($_POST['username']);
// Escape the input data
mysql_query(" INSERT INTO tz_members(usr,pass,email,regIP,dt)
VALUES(
'".$_POST['username']."',
'".md5($pass)."',
'".$_POST['email']."',
'".$_SERVER['REMOTE_ADDR']."',
NOW()
)");
if(mysql_affected_rows($link)==1)
{
send_mail( 'villagersadmin',
$_POST['email'],
'Registration accepted !',
'Tvoje heslo je: '.$pass);
$_SESSION['msg']['reg-success']='Registracia uspesna! Na vas e-mail sme odoslali vase heslo!';
}
else $err[]='Toto meno uz existuje !!';
}
if(count($err))
{
$_SESSION['msg']['reg-err'] = implode('<br />',$err);
}
header("Location: registracia.php");
exit;
}
$script = '';
if($_SESSION['msg'])
{
// The script below shows the sliding panel on page load
$script = '
<script type="text/javascript">
$(function(){
$("div#panel").show();
$("#toggle a").toggle();
});
</script>';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php echo $script; ?>
</head>
<body>
<!-- Register Form -->
<form action="" method="post">
<h2>Registracia</h2>
<?php
if($_SESSION['msg']['reg-err'])
{
echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
unset($_SESSION['msg']['reg-err']);
}
if($_SESSION['msg']['reg-success'])
{
echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
unset($_SESSION['msg']['reg-success']);
}
?>
<label class="grey" for="username">Username:</label><br>
<input class="field" type="text" name="username" id="username" value="" size="23" /><br>
<label class="grey" for="email">Email:</label><br>
<input class="field" type="text" name="email" id="email" size="23" /><br>
<label>Heslo vam bude odoslane na e-mail.</label><br>
<input type="submit" name="submit" value="Register" class="bt_register" />
</form>
</div>
</div>
</div>
</TD> </TR>
</table>
</body>
</html>
Nemá smysl opravovat, co je od základu špatně a tohle:
$_POST['username'] = mysql_real_escape_string($_POST['username']);
je úplná hovadina.
Já sem to nedelal a rikam že ten kod ted nijak neovplivnuje registraci. To te zabije kdyz mi tu vypíšeš jeden kód ?
Nevidím žádnou vlastní snahu. Proč bych ti měl pomáhat s opravováním cizího kódu, navíc úplně špatně napsaného?
Já se tomu venuju hoiny denne nale nemuzu delat nic ál protože sem skusil tam dat uz 5 kou a furt mi to skazí celou regiszraci. a proste nemuzu delat kody dal kdyz tam nemám tohle
Když nebudeš pokračovat dál, tak prokážeš světu službu. Ale ty mince přičteš tak, že ve vkládacím dotazu u registrace vložíš do sloupce s mincema hodnotu 100.
Proč si nepřečteš návody, které tu máš? Dělat v PHP hru za pomocí HTML a rádoby PHP kódu bez OOP je patlanina nejvyššího rázu. Neříkám to proto, že tě chci urazit, ale proto, že tenhle kód je ŠPATNĚ a mohl by jsi ho psát dobře. Tyhle problémy, o kterých tu věčně píšeš vyplívají ze špatného kódu.
No jo tady je zbytečne neco resit. Kím nejsou kody podle vašich predstáv
nikto nic nerekne. Díki
Ale to, že kódy mají nějak vypadat, není pro nic za nic. To si lidi nevymysleli jen tak. Až příjdeš k tomu svému kódu za rok, nebudeš vůbec vědět, na co je.
Ja to nevím ani ted protože jsem ti kody nedelal já. Tohle je už 3 databáze co elám a tahle funguje skvele okrem toho kodu ktery tu vypisujete. Vymazal jsem ho. Ted vás pekne prosím o to aby ste mi poradili jak mám nastavit hodnotu mincí 100 automaticky po registraci.
Jak jsem říkal, v insert dotazu vložit do sloupce s mincema hodnotu 100.
Tak proč používáš kódy, které nejsou tvoje? ... Kdyby byli tvoje, víš jak to funguje a taky víš, jak nastavit počáteční hodnotu ve sloupci v databázi. Vše máš tady na devbooku.
tak jak pesne ? vím že tam nemá bejt post .... Prosím te múžš mi sem hodiť pressný kód ?
mysql_query(" INSERT INTO tz_members(usr,pass,email,regIP,mince,ddt)
VALUES(
'".$_POST['username']."',
'".md5($pass)."',
'".$_POST['email']."',
'".$_SERVER['REMOTE_ADDR']."',
'".$_POST['mince']."',
NOW()
Však jsem ti ho už poslal. Podívej se laskavě na příspěvek z "01.11.2013 15:22:06". V něm to máš hotové. Jsi líný si to okopírovat.
Vložil jsem to tam a neungovalo nic
odepisoval jsem ti
ale nic.
V tom případě jsi opisoval blbě. Kdybys aspoň napsal, ve kterém místě ti to nefunguje.
To je jeno nastavil jsem not null a pak výchozí na 100 a už to je.
Zobrazeno 41 zpráv z 41.