chyba v php
Moderátor: Mods_senior
Re: chyba v php
Můžete mi prosím ještě poradit, jak ověřit hodnotu v databazi zda již existuje.
Napsal jsem:
if ($_POST['email'] == "???") echo "Email je již registrován. Zadejte prosím jiný email.".mysql_close($spojeni);
ale vůbec nevím jak to tam napsat. Databáze se jmenuje db a tabulka odberatele. Děkuji
Napsal jsem:
if ($_POST['email'] == "???") echo "Email je již registrován. Zadejte prosím jiný email.".mysql_close($spojeni);
ale vůbec nevím jak to tam napsat. Databáze se jmenuje db a tabulka odberatele. Děkuji
- Petr Hnátek
- Level 3.5

- Příspěvky: 654
- Registrován: 13 lis 2013 20:48
Re: chyba v php
Zkus to takto, nezkoušel jsem, ale fungovat by to mělo.
Kód: Vybrat vše
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'");
$email = mysql_fetch_array($email_data);
if($email_form == $email)
{
echo('E-mail již v databázi existuje, zadejte jiný.');
}
else
{
echo('E-mail v databázi neexistuje.');
} Re: chyba v php
Děkuji, ale bohužel nejde. Hlásí to chybu u toho fetch_array.
- Petr Hnátek
- Level 3.5

- Příspěvky: 654
- Registrován: 13 lis 2013 20:48
Re: chyba v php
Už to vidím.
Zkus to takto:
Zkus to takto:
Kód: Vybrat vše
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'");
$email = mysql_fetch_array($email_data);
if($email_form == $email['email'])
{
echo('E-mail již v databázi existuje, zadejte jiný.');
}
else
{
echo('E-mail v databázi neexistuje.');
} - CZechBoY
- Master Level 9.5

- Příspěvky: 8813
- Registrován: 20 srp 2008 14:02
- Bydliště: Brno
- Kontaktovat uživatele:
Re: chyba v php
To by melo byt jedno.
Musíš mít sloupce na utf8 kódování a vkládat s připojením nastaveným na utf8.
Smaz obsah tabulky a zkus to vložit znova s tím MySQL_set_charset.
Petr Hnátek: to nemusí nastavit kódování pro funkci na escapovani.
Musíš mít sloupce na utf8 kódování a vkládat s připojením nastaveným na utf8.
Smaz obsah tabulky a zkus to vložit znova s tím MySQL_set_charset.
Petr Hnátek: to nemusí nastavit kódování pro funkci na escapovani.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: chyba v php
Bohužel to nefunguje,ale myslím, že to mám blbě zapsané.
Můžete prosím poradit, kde je chyba? Děkuji
Kód: Vybrat vše
<?php
MySQL_set_charset('utf8_czech_ci');
$spojeni=mysql_connect("localhost","root","");
if(!$spojeni) die("Žádné spojení s MySQL");
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'");
$email = mysql_fetch_array($email_data);
$sqlprikaz = "INSERT INTO odberatele (id, jmeno,prijmeni,email, datum) VALUES ( '', '$jmeno', '$prijmeni', '$email', '')";
if($email_form == $email['email'])
{
echo "E-mail již v databázi existuje, zadejte jiný.
<br />
<a href='http://localhost'>Zpět na formulář:</a>";
}
if (empty($_POST['jmeno'] && $_POST['prijmeni'] && $_POST['email']))
echo "Je potreba vyplnit všechny pole! <br />
<a href='http://localhost'>Zpět na formulář:</a>";
elseif (mysql_db_query("newsletter",$sqlprikaz,$spojeni)) echo "Děkujeme za registraci";
mysql_close($spojeni);
?>
Re: chyba v php
Já si myslím, že tam nemám připojenou databázi, proto to nevyhledá jestli to je již použité.
Trochu jsem to zjednodušil pouze na výpis zda existuje nebo ne.
Dále tam nikde nemám zapsáno databázi newsletter, která obsahuje právě tabulku uzivatele.
Nemůže to být také tím?
Děkuji
Trochu jsem to zjednodušil pouze na výpis zda existuje nebo ne.
Kód: Vybrat vše
<?php
MySQL_set_charset('utf8_czech_ci');
$spojeni=mysql_connect("localhost","root","");
if(!$spojeni) die("Žádné spojení s MySQL");
$email = $_POST['email'];
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'"); // nemá tady být propojení na $spojeni ???
$email2 = mysql_fetch_array($email_data);
if($email_form == $email2['email'])
{
echo('E-mail již v databázi existuje, zadejte jiný.');
}
else
{
echo('E-mail v databázi neexistuje.');
}
?>
Nemůže to být také tím?
Děkuji
- Petr Hnátek
- Level 3.5

- Příspěvky: 654
- Registrován: 13 lis 2013 20:48
Re: chyba v php
Připojené to máš co koukám, ale ten SQL dotaz pro vložení do databáze musíš umístit do té podmínky.
Re: chyba v php
Já už jsem se v tom nějak ztratil.
Mohu poprosit jak?
- Petr Hnátek
- Level 3.5

- Příspěvky: 654
- Registrován: 13 lis 2013 20:48
Re: chyba v php
Takto.
Kód: Vybrat vše
<?php
$spojeni = mysql_connect("localhost","root","")or die("Žádné spojení s MySQL");
mysql_select_db("sprava")or die("Databáze neexistuje");
MySQL_set_charset('utf8_czech_ci');
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'");
$email = mysql_fetch_array($email_data);
if($email_form == $email['email'])
{
mysql_close($spojeni);
echo('E-mail již v databázi existuje, zadejte jiný.');
echo('<br />');
echo('<a href='http://localhost'>Zpět na formulář:</a>');
}
else
{
if (!empty($jmeno && $prijmeni && $email))
{
mysql_query("INSERT INTO odberatele (id, jmeno,prijmeni,email, datum) VALUES (0, '$jmeno', '$prijmeni', '$email', '')");
mysql_close($spojeni);
echo('Děkujeme za registraci');
}
else
{
echo('Je potreba vyplnit všechny pole!<br />');
echo('<a href='http://localhost'>Zpět na formulář:</a>');
}
}
?>Re: chyba v php
Děkuji, bohužel to píše při vyplněných polích "Je potřeba vyplnit všechny pole". Ale díky tomuto Vašemu zápisu jsem pochopil spoustu věcí, co jsem nepobral z knížky.
Zápis jsem upravil takto: nyní funguje
Nejdříve jsem zkoušel tento zápis, ale tam to nezapíše data do databáze. Netušíte, proč to vypisuje "Data se nezapsala do databáze"?
Myslel jsem, že je databáze připojena pomocí
Nebo se pletu? V prvním příkladu je INSERT vyřešen pomocí proměnné a poté mysql_db_query.
tady celý zápis:
Jinak v databázi to pořád píše špatné znaky u diakritiky, ale to teď na učení zas tak nevadí.
Ještě jednou moc děkuji za Vaši pomoc Petr Hnátek
, snad se to časem také naučím. 
Zápis jsem upravil takto: nyní funguje
Kód: Vybrat vše
<?php
$spojeni = mysql_connect("localhost","root","")or die("Žádné spojení s MySQL");
mysql_select_db("newsletter")or die("Databáze neexistuje");
MySQL_set_charset('utf8_czech_ci');
mysql_query("SET NAMES 'utf8_czech_ci'");
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$sqlprikaz = "INSERT INTO odberatele (id, jmeno,prijmeni,email, datum) VALUES ( '', '$jmeno', '$prijmeni', '$email', '')";
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'");
$email = mysql_fetch_array($email_data);
if (empty($_POST['jmeno'] && $_POST['prijmeni'] && $_POST['email']))
{
echo "Je potreba vyplnit všechny pole! <br />
<a href='http://localhost'>Zpět na formulář:</a>";
}
elseif ($email_form == $email['email'])
{
mysql_close($spojeni);
echo "Tento email je již zaregistrován. Použijte prosím jiný email.";
}
elseif (mysql_db_query("newsletter",$sqlprikaz,$spojeni)or die ("Data nejsou zapsána do databáze"))
{
mysql_close($spojeni) or die ("Není uzavřeno");
echo "Děkujeme za registraci";
}
else
{
mysql_close($spojeni) or die ("Nepodařilo se zavřít databázi");
echo "Registrace se nepovedla";
}
?>
Myslel jsem, že je databáze připojena pomocí
Kód: Vybrat vše
mysql_select_db("newsletter")or die("Databáze neexistuje"); tady celý zápis:
Kód: Vybrat vše
<?php
$spojeni = mysql_connect("localhost","root","")or die("Žádné spojení s MySQL");
mysql_select_db("newsletter")or die("Databáze neexistuje");
MySQL_set_charset('utf8_czech_ci');
mysql_query("SET NAMES 'utf8_czech_ci'");
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$email_form = $_POST['email'];
$email_data = mysql_query("SELECT email FROM odberatele WHERE email='$email_form'");
$email = mysql_fetch_array($email_data);
if (empty($_POST['jmeno'] && $_POST['prijmeni'] && $_POST['email']))
{
echo "Je potreba vyplnit všechny pole! <br />
<a href='http://localhost'>Zpět na formulář:</a>";
}
elseif ($email_form == $email['email'])
{
mysql_close($spojeni);
echo "Tento email je již zaregistrován. Použijte prosím jiný email.";
}
elseif (!empty($_POST['jmeno'] && $_POST['prijmeni'] && $_POST['email']))
{
mysql_query("INSERT INTO odberatele (id, jmeno, prijmeni, email, datum) VALUES ('', '$jmeno', '$prijmeni', '$email', '',)") or die("Data se nezapsala do databáze");
mysql_close($spojeni) or die ("Není zapsáno");
echo "Děkujeme za registraci";
}
else
{
mysql_close($spojeni) or die ("Nepodařilo se zavřít databázi");
echo "Registrace se nepovedla";
}
?>
Ještě jednou moc děkuji za Vaši pomoc Petr Hnátek
- Petr Hnátek
- Level 3.5

- Příspěvky: 654
- Registrován: 13 lis 2013 20:48
Re: chyba v php
V PHP používej pouze zápis utf8, utf8_czech_ci pak pro nastavení tabulek v databázi.
nebo
mysql_db_query(); jsem já nepoužil, pouze jsem zdůraznil, že je to další způsob, kterým to lze zapsat.
Další věc je, že váš "celý kód" neodpovídá tomu, co jsem zde včera napsal. SQL dotaz pro zápis do databáze je napsán jinak. Takže si to zkontrolujte.
Kód: Vybrat vše
MySQL_set_charset('utf8);
Kód: Vybrat vše
mysql_query("SET NAMES 'utf8'");
Další věc je, že váš "celý kód" neodpovídá tomu, co jsem zde včera napsal. SQL dotaz pro zápis do databáze je napsán jinak. Takže si to zkontrolujte.
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek

