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


Zobrazeno 41 zpráv z 41.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
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.