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: březen 14
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod pajacz17 » 02 zář 2015 14:23

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

Reklama
Uživatelský avatar
Petr Hnátek
Level 3.5
Level 3.5
Příspěvky: 654
Registrován: listopad 13
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod Petr Hnátek » 02 zář 2015 14:36

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: březen 14
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod pajacz17 » 02 zář 2015 14:44

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: listopad 13
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod Petr Hnátek » 02 zář 2015 14:47

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: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: chyba v php

Příspěvekod CZechBoY » 02 zář 2015 20:13

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: březen 14
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod pajacz17 » 03 zář 2015 08:33

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: březen 14
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod pajacz17 » 03 zář 2015 14:46

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: listopad 13
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod Petr Hnátek » 03 zář 2015 21:32

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: březen 14
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod pajacz17 » 03 zář 2015 22:08

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: listopad 13
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod Petr Hnátek » 03 zář 2015 22:54

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: březen 14
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod pajacz17 » 04 zář 2015 09:10

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: listopad 13
Pohlaví: Muž
Stav:
Offline

Re: chyba v php

Příspěvekod Petr Hnátek » 04 zář 2015 11:43

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.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • chyba 0xc0000142
    od Culter » 24 říj 2023 21:59 » v Windows 11, 10, 8...
    1
    1847
    od Roman Tyčka Zobrazit poslední příspěvek
    25 pro 2023 18:41
  • chyba na webu
    od teichmann.ondrej » 04 zář 2023 15:45 » v Programování a tvorba webu
    1
    1988
    od petr22 Zobrazit poslední příspěvek
    04 zář 2023 16:09
  • Kritická chyba Kernel Příloha(y)
    od Domoo27 » 07 úno 2024 00:58 » v Problémy s hardwarem
    9
    1488
    od Domoo27 Zobrazit poslední příspěvek
    12 úno 2024 23:54
  • Windows 98 chyba při startu ......VXD Příloha(y)
    od Radovan-kocour » 24 říj 2023 18:49 » v Windows 11, 10, 8...
    5
    1435
    od Radovan-kocour Zobrazit poslední příspěvek
    25 říj 2023 15:24
  • Chyba po zapnutí notebooku. Příloha(y)
    od paolov » 17 říj 2023 10:52 » v Problémy s hardwarem
    9
    1725
    od petr22 Zobrazit poslední příspěvek
    21 říj 2023 13:29

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti