1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Не можам да инсертирам во табела...

Дискусија во форумот 'PHP, ASP, JSP (JavaServer Pages)' започната од larilari, 5 Август 2019.

Тагови:
  1. larilari

    larilari
    Intern

    4
    0
    8 Декември 2018
    Машко
    Поздрав, работам на персонален мини проект и неможам да инсертирам во табела во phpmyadmin.

    И второ прашањe кога е дефиниран $dbname = "movietheatre", не креира табела, морам да избришам, без $dbname се креира табелата, после треба да дефинирам за да се конектира. Како да напишам попрофесионално?

    PHP:
    <!DOCTYPE html>
    <html>
    <body>

      <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
        Name:<input name="fname" type="text">
        Surname:<input name="lname" type="text">
        Age: <input name="age" type="text">
        Genre:<select name="genre">
          <option value=""></option>
          <option value="action">action</option>
          <option value="comedy">comedy</option>
          <option value="romance">romance</option>
        </select>
        <input type="submit" value="submit">
      </form>
    <?php

      $servername 
    "localhost";
      
    $username "root";
      
    $password "";
      
    $dbname "movietheatre";


      
    $conn = new mysqli($servername$username$password$dbname);

      
    $sql "CREATE DATABASE IF NOT EXISTS movietheatre";
      
    $conn->query($sql);

      
    $sqltable "CREATE TABLE IF NOT EXISTS person (
          id INT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY,
          fname VARCHAR(30),
          lname VARCHAR(30),
          age INT(2),
          genre VARCHAR(30)
      )"
    ;
      
    $conn->query($sqltable);


    //сум ги пробал овие методи подолу но не инсертира
      //$fname =   htmlspecialchars($_POST['fname']);
      //$lname =   htmlspecialchars($_POST['lname']);
      //$age =   htmlspecialchars($_POST['age']);
      //$genre =   htmlspecialchars($_POST['genre']);
      //$fname = isset($_POST['fname']) ? $_POST['fname'] : '';
      //$lname = isset($_POST['lname']) ? $_POST['lname'] : '';
      //$age = isset($_POST['$age']) ? $_POST['$age'] : '';
      //$genre = isset($_POST['genre']) ? $_POST['genre'] : '';
      
    $fname $_POST['fname'] ?? '';
      
    $lname $_POST['lname'] ?? '';
      
    $age $_POST['age'] ?? '';
      
    $genre $_POST['genre'] ?? '';
     
        if(isset(
    $_POST['submit'])){
        
    $sqlinsert "INSERT INTO 'person' (fname, lname, age, genre) VALUES ('$fname', '$lname', '$age', '$genre')";
        
    $conn->query($sqlinsert);}

      
    $sqlselect "SELECT age FROM person";
      
    $result $conn->query($sqlselect);
      if(
    $result->num_rows ){
        global 
    $agerec$genrerec;
        while(
    $row $result->fetch_assoc()){
          
    $agerec $row['age'];//$agerec = $_POST['age']
          
    $genrerec $row['genre'];

        }
        }
    Фала однапред.
     
  2. spiritBreaker

    spiritBreaker
    Unstoppable

    2,646
    2,946
    27 oктомври 2015
    Машко
    g4m3R
    вака треба да ти биди кверито.

    "INSERT INTO `person` (`fname`, `lname`, `age`, `genre`) VALUES ('$fname', '$lname', '$age', '$genre')"

    работи кои шо мора да ги имаш во предвид:

    - $_SERVER["PHP_SELF"] во никој случај повеќе да не користиш, зато шо можиш да наидиш на грешки при постирање во истата форма и да не можиш да ги решиш до крај.
    - isset ќе ти помини проверката (ќе ти врати true) дури и кога пример $_POST['age'] е null!
    - кверијата за креирање датабаза и табела ќе си ги извршиш во sql, а не во php
    - global да се одвикниш од користење, и да прочиташ убаво за variable scope во php (голема веројатност за колизија помеѓу варијабли ако не си доволно внимателен).
     
  3. flashgordon007

    flashgordon007
    On your way to fame

    476
    509
    15 Септември 2012
    Машко
    Ако е зборот на почетокот на реченицата, првото п треба да е напишано со голема буква: „Попрофесионално“. Во сите други прилики (освен Најпрофесионална) можеш да го користиш зборот во оригинална верзија, без да ја користиш верзијата „повеќе професионално“ или „помалку професионално“.

    Извини, ми налета реченицата на волеј, неможев да издржам.
     
  4. JensenInterceptor

    JensenInterceptor
    Gaining Experience

    561
    215
    28 ноември 2015
    Машко
    Ако добро се сеќавам требаше ова https://www.php.net/manual/en/book.pdo.php
    да се користи за работа со база. Само излеа вметнување нов ред пак иде преку лепење кверија како стринг.

    Во Јава беше Хибернејт, во Це Шарп, Ентити Фрејмворк за работа со бази на податоци. Не знам за Пе Ха Пе дали има слично.

    Обично користат MVC фремјворци како Ларавел, Коуд Игнајтер каде во погледот имаш само ХТМЛ код, серверскиот код ти е во посебен фајл што се вика „контролер“, а за пристап до база, најчесто користат „модел“ класи, но моделите се уствари податочни структури.

    Не работам со Ларавел но од прилика знам дека сигурно си има свој механизам за пристап до база. Ти треба само да конфигурираш кај ти е базата и да ги искористиш вградените методи на Ларавел за снимање/уредување/бришење/барање податоци од база на податоци.

    Ова твоево е „шпагети“ код, и како ќе додаваш функционалности, така ќе почнеш да се губиш во својот код.
    Зависи, ако е само една страничка ќе завршиш работа.

    Башка, phpMyAdmin ти е веб алатка за работа со MySQL серверот. Ти не вметнуваш ред во phpMyAdmin, туку во MySQL.

    Ај прочитај си за справување со грешки во Пе Ха Пе PHP: Examples - Manual

    Исто пробај со функцијата die().
    Некако да испечатиш каков исклучок(exception) се дешава, пораката на исклучокот.
     
    Последна промена: 5 Август 2019
  5. spiritBreaker

    spiritBreaker
    Unstoppable

    2,646
    2,946
    27 oктомври 2015
    Машко
    g4m3R
    За учење, доволно му е ова. Ти од кога си почнал кодирање, си почнал од напредните методи? Да да...

    Prepared statements не се 100% сигурни иако ти даваат такво топло чувство... Од искуство, не верувај на user input. Никогаш. Филтрирај, па после дали ќе користиш стринг за квери, дали сакаш orm, итн итн останува на тебе.

    Каква врска има die во целава скрипта?
     
    На JensenInterceptor му/ѝ се допаѓа ова.
  6. JensenInterceptor

    JensenInterceptor
    Gaining Experience

    561
    215
    28 ноември 2015
    Машко
    Одамна не сум куцал Пе Ха Пе.
    Да ни кажеше човекот што е грешката. Дали е нешто нул и слично.
     

Сподели

Вчитување...