Autor Zpráva
Honzik84
Profil *
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
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 *
To je přesně to co jsem potřeboval, velice děkuji.
Honzik84
Profil *
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
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 *
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
Řádek 30 tam je navíc. Nemusí to s tou chybou souviset ale třeba ano.
juriad
Profil
Honzik84:
Ohledně toho erroru, mě PHP (ve verzi 5.6.7) nehlásí žádnou syntaktickou chybu.
Honzik84
Profil *
Super Funguje
Honzik 84
Profil *
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 *
Nikdo neví? Děkuji
Nebo jak udělat editaci přes ID?
juriad
Profil
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 *
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
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 *
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
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
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 *
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
Vypiš si ten $query (pomocí echa) a zkus ten dotaz spustit ručně v PHPMyAdminu (nebo Admineru).
Honzik 84
Profil *
#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'];

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: