chyba v php

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

pajacz17
Level 3
Level 3
Příspěvky: 592
Registrován: 22 bře 2014 22:31

Re: chyba v php

Příspěvek od pajacz17 »

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
Uživatelský avatar
Petr Hnátek
Level 3.5
Level 3.5
Příspěvky: 654
Registrován: 13 lis 2013 20:48

Re: chyba v php

Příspěvek od Petr Hnátek »

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.');
} 
pajacz17
Level 3
Level 3
Příspěvky: 592
Registrován: 22 bře 2014 22:31

Re: chyba v php

Příspěvek od pajacz17 »

Děkuji, ale bohužel nejde. Hlásí to chybu u toho fetch_array.
Uživatelský avatar
Petr Hnátek
Level 3.5
Level 3.5
Příspěvky: 654
Registrován: 13 lis 2013 20:48

Re: chyba v php

Příspěvek od Petr Hnátek »

Už to vidím.

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.');
} 
Uživatelský avatar
CZechBoY
Master Level 9.5
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

Příspěvek od CZechBoY »

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.
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
pajacz17
Level 3
Level 3
Příspěvky: 592
Registrován: 22 bře 2014 22:31

Re: chyba v php

Příspěvek od pajacz17 »

Bohužel to nefunguje,ale myslím, že to mám blbě zapsané.

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);
  ?>
Můžete prosím poradit, kde je chyba? Děkuji
pajacz17
Level 3
Level 3
Příspěvky: 592
Registrován: 22 bře 2014 22:31

Re: chyba v php

Příspěvek od pajacz17 »

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.

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.');
  } 
  
 
  ?>
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
Uživatelský avatar
Petr Hnátek
Level 3.5
Level 3.5
Příspěvky: 654
Registrován: 13 lis 2013 20:48

Re: chyba v php

Příspěvek od Petr Hnátek »

Připojené to máš co koukám, ale ten SQL dotaz pro vložení do databáze musíš umístit do té podmínky.
pajacz17
Level 3
Level 3
Příspěvky: 592
Registrován: 22 bře 2014 22:31

Re: chyba v php

Příspěvek od pajacz17 »

Já už jsem se v tom nějak ztratil. :-( Mohu poprosit jak?
Uživatelský avatar
Petr Hnátek
Level 3.5
Level 3.5
Příspěvky: 654
Registrován: 13 lis 2013 20:48

Re: chyba v php

Příspěvek od Petr Hnátek »

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>');
      }
  }     
  ?>
pajacz17
Level 3
Level 3
Příspěvky: 592
Registrován: 22 bře 2014 22:31

Re: chyba v php

Příspěvek od pajacz17 »

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

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";
           }
  
  ?> 
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í

Kód: Vybrat vše

mysql_select_db("newsletter")or die("Databáze neexistuje"); 
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:

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";
           }
  
  ?>
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 :clap: , snad se to časem také naučím. :-)
Uživatelský avatar
Petr Hnátek
Level 3.5
Level 3.5
Příspěvky: 654
Registrován: 13 lis 2013 20:48

Re: chyba v php

Příspěvek od Petr Hnátek »

V PHP používej pouze zápis utf8, utf8_czech_ci pak pro nastavení tabulek v databázi.

Kód: Vybrat vše

  
MySQL_set_charset('utf8);
 
nebo

Kód: Vybrat vše

  
mysql_query("SET NAMES 'utf8'");
 
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.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Chyba CPU na desce
    od petan320 » » v Problémy s hardwarem
    16 Odpovědi
    14684 Zobrazení
    Poslední příspěvek od petr22
  • Sqlite - systémová chyba
    od cindy the skull » » v Vše ostatní (sw)
    6 Odpovědi
    14848 Zobrazení
    Poslední příspěvek od atari
  • Chyba příkazový řádek
    od zik9 » » v Windows 11, 10, 8...
    4 Odpovědi
    5870 Zobrazení
    Poslední příspěvek od zik9
  • prohližeč událostí id 1796 chyba
    od walderan » » v Problémy s hardwarem
    9 Odpovědi
    8916 Zobrazení
    Poslední příspěvek od walderan
  • Windows Update nelze stáhnout, chyba 0x80070246
    od Rewqa » » v Windows 11, 10, 8...
    11 Odpovědi
    11672 Zobrazení
    Poslední příspěvek od Rewqa

Zpět na „Programování a tvorba webu“