| Autor | Zpráva | ||
|---|---|---|---|
| Honzik84 Profil * |
#1 · Zasláno: 11. 4. 2015, 10:45:53 · Upravil/a: Honzik84
Ahoj, potřeboval bych poradit, mám, resp. budu mít databázi lidí v sql, kde bude mít pole Den, Mesic a Rok a já bych potřeboval, jen aby mi to v daném roce vypisovalo jen lidi, kteří slaví kulatiny (5 a 0), někdo nějaký nápad? Děkuji.
pro upřesnění ,a by mi to vypisovalo jen lidi, kteří v daném roce slaví kulatiny, ale aby to vždy vypisovalo ty kulatiny (to je i příští rok .....) |
||
| juriad Profil |
#2 · Zasláno: 11. 4. 2015, 10:50:10
Honzik84:
Co znamená v daném roce? Jako že v období od 1.1.2015 do 31.12.2015 budou mít oslavu kulatých narozenin? Jakmile budeš vědět, kolik jim bylo/je/bude (viz výše), kulaté poznáš podle zbytku po dělení 5: WHERE MOD(vek, 5) = 0 |
||
| juriad Profil |
Takže to budou lidé, kterým bude 31.12. kulatý počet let.
Věk tedy bude: YEAR(NOW()) - YEAR(narozeni) Pro cachování dotazů je vhodnější tu první část ( YEAR(NOW())) vypočítat v PHP.
|
||
| Honzik84 Profil * |
#4 · Zasláno: 11. 4. 2015, 12:57:31
To je přesně to co jsem potřeboval, velice děkuji.
|
||
| Honzik84 Profil * |
#5 · Zasláno: 11. 4. 2015, 19:25:04
Ještě jednu věc, jak to udělat
Protože já v SQL nemám proměnnou věk, v tuhle chvíli to mám takhle <?php $srchQ = "SELECT * FROM jubilant ORDER BY Rok, Mesic DESC"; $srch = MySQL_Query($srchQ); $rows = MySQL_Num_Rows($srch); if ($rows !== 0): ?> <table width="1200px" border="1xp solid black;"> <?php for ($i=0;$i<$rows;$i++): $zaznam = MySQL_Fetch_Assoc($srch); ?> <tr><td><b><?php echo $zaznam['Jmeno'] ?> <?php echo $zaznam['Prijmeni'] ?></b></td><td><?php echo $zaznam['Den'] ?>. <?php echo $zaznam['Mesic'] ?>. <?php echo $zaznam['Rok'] ?></td><td><i><?php echo $zaznam['Odvetvi'] ?></i></td><td><?php echo $zaznam['Adresa'] ?></td><td><?php echo $zaznam['Email'] ?></td><td><?php echo $zaznam['Popis'] ?></td></tr> <?php endfor; ?> </table> <br><br> <?php endif; ?> |
||
| juriad Profil |
#6 · Zasláno: 11. 4. 2015, 19:31:03
Honzik84:
Proč máš datum narození jako tři různé sloupce? Správně bys měl mIt jeden sloupec typu DATETIME. Ale budiž: $srch = mysql_query("
SELECT *
FROM jubilant
WHERE MOD(" . date("Y") . " - Rok, 5) = 0
ORDER BY Rok, Mesic DESC"); |
||
| Honzik84 Profil * |
#7 · Zasláno: 12. 4. 2015, 12:43:08
Ahoj, nefunguje, hlásí to chybu Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /data/web/virtuals/16062/virtual/www/subdom/jubilanti/index.php on line 32
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
<?php
$spojenie = mysql_connect('wm38.wedos.net', 'XXX', 'XXX');
if (!$spojenie) {
die('Nemozem sa pripojit na databazu: ' .mysql_error());
}
mysql_query('set names utf8');
mysql_query('SET COLLATION_CONNECTION=utf8');
$vybratie = MySQL_Select_Db("d17162_jubi");
if (!$vybratie) {
die('Nemozem sa spojit s databazou: ' .mysql_error());
}
?>
<h1><center>
Jubilanti</center>
</h1>
<?php
$srch = mysql_query("SELECT * FROM jubilant WHERE MOD(" . date("Y") . " - Rok, 5) = 0 ORDER BY Rok, Mesic DESC");
$srch = MySQL_Query($srchQ);
$rows = MySQL_Num_Rows($srch);
if ($rows !== 0):
?>
<table width="1200px" border="1xp solid black;">
<?php
for ($i=0;$i<$rows;$i++):
$zaznam = MySQL_Fetch_Assoc($srch);
?>
<tr><td><b><?php echo $zaznam['Jmeno'] ?> <?php echo $zaznam['Prijmeni'] ?></b></td><td><?php echo $zaznam['Den'] ?>. <?php echo $zaznam['Mesic'] ?>. <?php echo $zaznam['Rok'] ?></td><td><i><?php echo $zaznam['Odvetvi'] ?></i></td><td><?php echo $zaznam['Adresa'] ?></td><td><?php echo $zaznam['Email'] ?></td><td><?php echo $zaznam['Popis'] ?></td></tr>
<?php endfor; ?>
</table>
<br><br>
<?php endif; ?> |
||
| Keeehi Profil |
#8 · Zasláno: 12. 4. 2015, 13:26:37
Řádek 30 tam je navíc. Nemusí to s tou chybou souviset ale třeba ano.
|
||
| juriad Profil |
#9 · Zasláno: 12. 4. 2015, 13:35:48
Honzik84:
Ohledně toho erroru, mě PHP (ve verzi 5.6.7) nehlásí žádnou syntaktickou chybu. |
||
| Honzik84 Profil * |
#10 · Zasláno: 12. 4. 2015, 13:44:59
Super Funguje
|
||
| Honzik 84 Profil * |
#11 · Zasláno: 14. 4. 2015, 13:51:39 · Upravil/a: Honzik 84
A ještě jedna věc, mám tedy nějakou funkční databázi, kde mi funguje přidávání, mazání a ještě bych chtěl vyřešit editaci, vytvořil jsem tam odkaz ve stylu
...edit.php?akce=10 , kde ID je řádek, auto increment jak to teď mám udělat? resp. jak z databáze vytáhnu jen údaje s tím jedním konkrétním ID? Uvažoval jsem že bych použil tuto konstrukci? Jestli je to teda možné. <p> Jméno: <input type="text" name="jmeno" value="<?php echo $zaznam['Prijmeni'] ?>" size="30"class="formik" /> </p> <?php
$srch = mysql_query("SELECT * FROM jubilant WHERE ID = '. $_GET['akce']");
$rows = MySQL_Num_Rows($srch);
if ($rows !== 0):
?>
<?php
for ($i=0;$i<$rows;$i++):
$zaznam = MySQL_Fetch_Assoc($srch);
?>
?>
<h1>Editace jubilanta</h1>
<form method="post" enctype="multipart/form-data" action="odeslat2.php">
<p>
Jméno: <input type="text" name="jmeno" value="<?php echo $zaznam['Prijmeni'] ?>" size="30"class="formik" />
</p> |
||
| Honzik84 Profil * |
#12 · Zasláno: 14. 4. 2015, 20:51:56
Nikdo neví? Děkuji
Nebo jak udělat editaci přes ID? |
||
| juriad Profil |
#13 · Zasláno: 14. 4. 2015, 20:58:26
Máš chybně ten SQL dotaz:
$srch = mysql_query("SELECT * FROM jubilant WHERE ID = ". $_GET['akce']);A nejspíš ti chybí v tom formuláři ID, abys poznal, kterého edituješ. <input type="hidden" name="akce" value="<?php echo $_GET['akce']; ?>"> |
||
| Honzik 84 Profil * |
#14 · Zasláno: 15. 4. 2015, 10:18:30
Ještě dotaz k té editaci, resp. jak by měl znít ten sql dotaz, přes POST? Nějak takhle?
$query = 'UPDATE jubilant SET Jmeno = mysql_real_escape_string($_POST['jmeno']) |
||
| juriad Profil |
#15 · Zasláno: 15. 4. 2015, 11:06:55
Dávej si pozor na uvozovky/apostrofy. Nezapomínej na to, že SQL dotaz je pořád jen obyčejný řetězec.
$query = "UPDATE jubilant SET Jmeno = '" . mysql_real_escape_string($_POST['jmeno']) . "' WHERE ID = " . (int) $_POST['akce']; Tu podmínku WHERE tam musíš nějakou mít, jinak bys změnil jméno každému. |
||
| Honzik 84 Profil * |
#16 · Zasláno: 15. 4. 2015, 11:40:35
Tak jsem to upravil dle rady a hází mi to chybu
Parse error: syntax error, unexpected '"' in /data/web/virtuals/16062/virtual/www/subdom/jubilanti/odeslat2.php on line 18 $query = 'UPDATE jubilant SET Jmeno = '" . mysql_real_escape_string($_POST['jmeno']) . "' SET Prijmeni = '" . mysql_real_escape_string($_POST['prijmeni']) . "' SET Den = '" . mysql_real_escape_string($_POST['den']) . "' SET Mesic = '" . mysql_real_escape_string($_POST['mesic']) . "' SET Rok = '" . mysql_real_escape_string($_POST['rok']) . "' SET Odvetvi = '" . mysql_real_escape_string($_POST['odvetvi']) . "' SET Tel = '" . mysql_real_escape_string($_POST['tel']) . "' SET Email = '" . mysql_real_escape_string($_POST['email']) . "' SET Popis = '" . mysql_real_escape_string($_POST['popis']) . "' WHERE ID = '. $_POST['akce']; |
||
| juriad Profil |
#17 · Zasláno: 15. 4. 2015, 11:46:06
Hm, proč to asi celé ukazuje červeně jako řetězec? Protože to celé máš v apostrofech. Já jsem záměrně použil uvozovky, protože je to zvykem a je zvykem obalovat řetězce uvnitř SQL apostrofy.
$query = "UPDATE jubilant SET Jmeno = '" . mysql_real_escape_string($_POST['jmeno']) . "' SET Prijmeni = '" . mysql_real_escape_string($_POST['prijmeni']) . "' SET Den = '" . mysql_real_escape_string($_POST['den']) . "' SET Mesic = '" . mysql_real_escape_string($_POST['mesic']) . "' SET Rok = '" . mysql_real_escape_string($_POST['rok']) . "' SET Odvetvi = '" . mysql_real_escape_string($_POST['odvetvi']) . "' SET Tel = '" . mysql_real_escape_string($_POST['tel']) . "' SET Email = '" . mysql_real_escape_string($_POST['email']) . "' SET Popis = '" . mysql_real_escape_string($_POST['popis']) . "' WHERE ID = ". $_POST['akce']; Případně to tvé s apostrofy, ale uznej sám, že se ti to nelíbí: $query = 'UPDATE jubilant SET Jmeno = \'' . mysql_real_escape_string($_POST['jmeno']) . '\' SET Prijmeni = \'' . mysql_real_escape_string($_POST['prijmeni']) . '\' SET Den = \'' . mysql_real_escape_string($_POST['den']) . '\' SET Mesic = \'' . mysql_real_escape_string($_POST['mesic']) . '\' SET Rok = \'' . mysql_real_escape_string($_POST['rok']) . '\' SET Odvetvi = \'' . mysql_real_escape_string($_POST['odvetvi']) . '\' SET Tel = \'' . mysql_real_escape_string($_POST['tel']) . '\' SET Email = \'' . mysql_real_escape_string($_POST['email']) . '\' SET Popis = \'' . mysql_real_escape_string($_POST['popis']) . '\' WHERE ID = '. $_POST['akce']; |
||
| juriad Profil |
#18 · Zasláno: 15. 4. 2015, 11:50:40
juriad:
A věci, které nejsou řetězce, ale jsou to čísla (Den, Mesic, Rok) nevkládej do DB jako řetězce, ale jako čísla. A musíš se postarat o nezávadnost čísel přetypováním na čísla. |
||
| Honzik 84 Profil * |
#19 · Zasláno: 15. 4. 2015, 12:05:09
Nechce mi to editovat, nevím kde je chyba:
<?php
mysql_connect('wm38.wedos.net', 'xxx', 'xxx');//database connection
mysql_select_db("d17162_jubi");
mysql_query('set names utf8');
$query = "UPDATE jubilant
SET Jmeno = '" . mysql_real_escape_string($_POST['jmeno']) . "'
SET Prijmeni = '" . mysql_real_escape_string($_POST['prijmeni']) . "'
SET Den = '" . mysql_real_escape_string($_POST['den']) . "'
SET Mesic = '" . mysql_real_escape_string($_POST['mesic']) . "'
SET Rok = '" . mysql_real_escape_string($_POST['rok']) . "'
SET Odvetvi = '" . mysql_real_escape_string($_POST['odvetvi']) . "'
SET Tel = '" . mysql_real_escape_string($_POST['tel']) . "'
SET Email = '" . mysql_real_escape_string($_POST['email']) . "'
SET Popis = '" . mysql_real_escape_string($_POST['popis']) . "'
WHERE ID = ". $_POST['akce'];
mysql_query($query);
?> |
||
| juriad Profil |
#20 · Zasláno: 15. 4. 2015, 12:55:29
Vypiš si ten $query (pomocí echa) a zkus ten dotaz spustit ručně v PHPMyAdminu (nebo Admineru).
|
||
| Honzik 84 Profil * |
#21 · Zasláno: 15. 4. 2015, 13:48:21 · Upravil/a: Honzik 84
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET Prijmeni = 'Tester5' SET Den = '10' SET Mesic = '10' SET Rok = '2015' SET Od' at line 1
UPDATE jubilant SET Jmeno = 'TESTovač' SET Prijmeni = 'Tester5' SET Den = '10' SET Mesic = '10' SET Rok = '2015' SET Odvetvi = 'test' SET Tel = 'test' SET Email = 'test' SET Popis = 'test test' WHERE ID = 95 Chyba objevena a napravena - Má být jen jednou set a pak mi tam chyběla čárka - již funguje $query = "UPDATE jubilant SET Jmeno = '" . mysql_real_escape_string($_POST['jmeno']) . "', Prijmeni = '" . mysql_real_escape_string($_POST['prijmeni']) . "', Den = '" . mysql_real_escape_string($_POST['den']) . "', Mesic = '" . mysql_real_escape_string($_POST['mesic']) . "', Rok = '" . mysql_real_escape_string($_POST['rok']) . "', Odvetvi = '" . mysql_real_escape_string($_POST['odvetvi']) . "', Tel = '" . mysql_real_escape_string($_POST['tel']) . "', Email = '" . mysql_real_escape_string($_POST['email']) . "', Popis = '" . mysql_real_escape_string($_POST['popis']) . "' WHERE ID = ". $_POST['akce']; |
||
|
Časová prodleva: 11 let
|
|||
0