Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Zdravím všechny, dnes jsme se konečně dokopal k tomu začít se učit pracovat s databázemi a s php vůbec. A narazil jsem na první problém. Připojení k databázi dojde v pohodě ale nemůžu už vybrat tabulku. Zasílám kód, který je čistě na zkoušku a je poměrně šílený. Nevím proč, ale rovnou si to zkouším trochu objektově i když ke správné architektuře to má daleko :D.

<?php
class MyDatabaze
{
        private $spojeni;
        private $databaze;
        function ConnectDatabaze($hostitel,$login,$pass)
        {
            $spojeni=mysqli_connect($hostitel,$login,$pass);
                return $spojeni;
        }

        function SelectDB()
        {
           $databaze=mysqli_select_db($spojeni,'zirkoadmin');
           if($databaze)
           {return true;}
           else {return false;}
        }


        function CreateTable()
        {
                $OK=mysqli_query('CREATE TABLE pocitadlo(id CHAR(1), hodnota INT UNSIGNED)',$databaze);
                if($OK)
                return true;
                else return false;
        }
}


$myDb=new MyDatabaze();

$connectDb=$myDb->ConnectDatabaze('localhost','zirkoAdmin','admin');

if(!$connectDb)
{Die('Error - databaze nenalezena');}

$db=$myDb->SelectDB();

if($db)
echo "Databaze zvolena";
else Die('Databaze nezvolena');


$ok=$myDb->CreateTable();

if($ok)
 echo "Bingo tabulka vytovřena";
else Die('Tabulka nevytvořena');
?>

Všechny údaje tu nechávám otevřeně, stejně se jedná o localhost. Zvolená jména jsou také nešťastně, jak říkám, pouze zkouším.

Jméno databáze: zirkoadmin
Uživatel: zirkoAdmin
Heslo: admin

Uživatel má nstavená všechna práva k databázi.
Nyní už očekávám jenom vlnu rad a kritiky :) Děkuji

Odpovědět 20.1.2013 19:19
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Don
Člen
Avatar
Odpovídá na Petr Nymsa
Don:

Databázi si vyber rovnou při připojení jako další parametr.

 
Nahoru Odpovědět 20.1.2013 20:50
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Don
Petr Nymsa:
<?php
class MyDatabaze
{
        private $spojeni;

        function ConnectDatabaze($hostitel,$login,$pass)
        {
            $spojeni=mysqli_connect($hostitel,$login,$pass,'zirkoadmin');
                $databaze='zirkoadmin';
                return $spojeni;
        }


        function CreateTable()
        {
                $OK=mysqli_query('CREATE TABLE pocitadlo(id CHAR(1), hodnota INT UNSIGNED)','zirkoadmin');
                if($OK)
                return true;
                else return false;
        }
}


$myDb=new MyDatabaze();

$connectDb=$myDb->ConnectDatabaze('localhost','zirkoAdmin','admin');

if(!$connectDb)
{Die('Error - databaze nenalezena');}

/*$db=$myDb->SelectDB();

if($db)
echo "Databaze zvolena";
else Die('Databaze nezvolena');
*/

$ok=$myDb->CreateTable();

if($ok)
 echo "Bingo tabulka vytovřena";
else Die('Tabulka nevytvořena');
?>

Dostal jsem jeden warning
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdoc­s\Test\index.php on line 16

Jedná se o jakýsi result_mode a nevím co tam patří.
A tabulka se stále nevytvoří. Nečekal jsem že se zaseknu takhle rychle :D

Nahoru Odpovědět 20.1.2013 21:09
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Don
Člen
Avatar
Odpovídá na Petr Nymsa
Don:
mysqli_query($spojeni,'CREATE TABLE pocitadlo(id CHAR(1), hodnota INT UNSIGNED)','zirkoadmin');

jelikož to nemáš objektový tak tam musíš všude cpát proměnou s číslem spojení k databázi

 
Nahoru Odpovědět 20.1.2013 21:16
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Nechci vytvářet nové vlákno, tak píšu sem.

Mám formulář

<form name="formular" action="send.php" method="post">
           <table class="formular">
           <tr>
           <td><label for="name">* Vaše jméno:</label> </td>
           <td><input class="inputText" type="text" name="name"/></td>
           </tr>
           <tr>
           <td><label for="email">* Váš e-mail:</label> </td>
           <td><input class="inputText" type="text" name="email" /></td>
           </tr>
           <tr>
           <td><label for="zprava">* Vaše zpráva</label></td>
           <td><textarea name="zprava"></textarea></td>
           </tr>
           <tr>
           <td><label for="antispam">* Kolik je 0*5+2</label></td>
           <td><input class="inputText" type="text" name="antispam" />(antispamová ochrana)</td>
           </tr>
           <tr>
           <td></td>
           <td><input type="submit" class="inputButton" value="Odeslat zprávu" name="ok" /></td>
           </tr>
           </table>
           </form>

a k němu patřičný velmi primitivní php kód

<?php
$name=$_POST['name'];
$email=$_POST['email'];
$zprava=$_POST['zprava'];
$antispam=$_POST['antispam'];






         if (isset($name) && isset($email) && $zprava && isset($antispam) && ($antispam =='2') )
        // && isset($_POST['hidespam'])==false)
         {

                mail('petr.nymsa@seznam.cz',$_POST['predmet'],$_POST['od'].': '.$_POST['zprava']);
                echo "Odesláno";
         }
         else//chyby
         {
           echo "Neodesláno";
         }

        //header('Location: http://localhost/Zirko/#Kontakt');

?>

Píše mi to že $zprava není definovaná, repsketive v poli $_POST není index $zprava. Ale nemůžu přijít na to proč. Poradí někdo prosím ?

Nahoru Odpovědět 21.1.2013 20:03
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
albertpatera
Redaktor
Avatar
albertpatera:

mozna mas policko ZPRAVA v databazi pojmenovany jinak

Editováno 21.1.2013 21:24
 
Nahoru Odpovědět 21.1.2013 21:24
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na albertpatera
Petr Nymsa:

Nemám to vůbec v databázi ale posílám ty data metodou pos přes formulář, ostatní data jako jméno, email, antispam přijdou v pořádku

Nahoru Odpovědět 21.1.2013 21:29
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
albertpatera
Redaktor
Avatar
albertpatera:

ja si to vzdycky delam pres databazi a funguje mi to

 
Nahoru Odpovědět 21.1.2013 21:32
Avatar
Pavel Vosyka
Člen
Avatar
Odpovídá na Petr Nymsa
Pavel Vosyka:

Moc jsem to nezkoumal, ale na první pohled bych řekl, že ti tám chybí "isset($zprava)" - máš jenom "$zprava"...Tedy bez "isset()" by to asi mělo vracet true/false, takže by to mohlo fungovat, ale když všude jinde isset() máš..

Nahoru Odpovědět 21.1.2013 21:59
"nikdy nepiš nic 2x"
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Pavel Vosyka
Petr Nymsa:

Jak jsem psa, do $zprava se ani nic neuloží protože není $_POST vložená hodnota z formuláře, i když by měla

Nahoru Odpovědět 22.1.2013 8:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Pavel Vosyka
Člen
Avatar
Pavel Vosyka:

To se mi nějak nezdá... zkus dát var_dump($_POST) ať vidíš, co ti to pošle.. Mě to html normálně funguje a var_dump($_POST) mi vrátilo:

array(5) { ["name"]=> string(12) "Pavel Vosyka" ["email"]=> string(21) "vosykapavel@gmail.com" ["zprava"]=> string(20) "zpráva, zprávička" ["antispam"]=> string(1) "2" ["ok"]=> string(15) "Odeslat zprávu" }
Nahoru Odpovědět 22.1.2013 9:50
"nikdy nepiš nic 2x"
Avatar
Odpovídá na Petr Nymsa
Martin Konečný (pavelco1998):

Je to tím, že se proměnné snaží deklarovat i v případě, že formulář neodešleš. Z toho vyplývá, že pokud neodešleš formulář, pole $_POST v sobě nemá žádné prvky. Proto ti to hlásí, že $_POST['zprava'] neexistuje.

 
Nahoru Odpovědět 22.1.2013 13:18
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Petr Nymsa:

Ostatní proměnné se zaregistrují v pohodě, resp. odešlou.

Nahoru Odpovědět 22.1.2013 13:45
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

Nebylo by špatné, kdybys sem konečně poslal požadovaný výstup příkazu

var_dump($_POST);
Nahoru Odpovědět 22.1.2013 14:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

jo omlouvám se, no var_dump mi vypsal a ukázalo se že proměnná zpráva je odeslána. A nevím proč, ale to náhle funguje. V k´du jsem nic neměnil, jediný co jsme udělal, bylo že jsme restartoval Apache

Nahoru Odpovědět 22.1.2013 15:58
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.