WebHU - Programozási kérdések és válaszok

php hiba és még változó definiálása után is

ez az én kódblokkom a projektem beszúrási termékéhez

<?php
include('includes/db.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html lang="EN">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="images/logo.jpg" type="image/x-icon" />
<title>Insert Products</title>
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
  <script>tinymce.init({ selector:'textarea' });</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="fontawesome/css/font-awesome.min.css" />
</head>
<body>

<div class="row">
<div class="col-lg-12">
 <ol class="breadcrumb">
<li class="active"><i class="fa fa-dashboard"></i>Dashboard/Insert Products</li>   

</ol> <!--breadcrumb ends here-->  
 </div> <!---col-lg-12 ends-->    
</div> <!--row ends-->


<div class="row">
<div class="col-lg-12">
 <div class="panel panel-default">
<div class="panel-heading">
 <h3 class="panel-title">
 <i class="fa fa-money fa-fw"></i> Insert Products  
</h3>    

</div> <!--panel heading ends--->    

<div class="panel-body">
 <form class="form-horizontal" method="post" enctype="multipart/form-data">
 <div class="form-group">
<label class="col-md-3 control-label" >Product title</label>
<div class="col-md-6">
<input type="text" name="product_title" class="form-control" required>      

</div>

</div> <!---form-group-->   

 <div class="form-group">
<label class="col-md-3 control-label" >Product Category</label>
<div class="col-md-6">
    <select name="product_cat" class="form-control" required>
<option>Select Category</option> 
<?php
$get_p_cats="select * from product_categories";
$run_p_cats=mysqli_query($conn,$get_p_cats);

while($row_p_cats=mysqli_fetch_array($run_p_cats)){
    $p_cat_id=$row_p_cats['p_cat_id'];
    $p_cat_title=$row_p_cats['p_cat_title'];

    echo "<option value='$p_cat_id'>$p_cat_title</option>";
}

?>


</select>      

</div>

</div> <!---form-group-->   


 <div class="form-group">
<label class="col-md-3 control-label" >Category</label>
<div class="col-md-6">
<select name="cat" class="form-control" required>     
<option>Select Category</option> 
<?php
$get_cat="select * from categories";
$run_cat=mysqli_query($conn,$get_cat);

while($row_cat=mysqli_fetch_array($run_cat)){
    $cat_id=$row_cat['cat_id'];
    $cat_title=$row_cat['cat_title'];

    echo "<option value='$cat_id'>$cat_title</option>";
}

?>  

    </select>
</div>

</div> <!---form-group-->   



 <div class="form-group">
<label class="col-md-3 control-label" >Product Image 1</label>
<div class="col-md-6">
<input type="file" name="product_img1" class="form-control" required>      

</div>

</div> <!---form-group-->   


 <div class="form-group">
<label class="col-md-3 control-label" >Product Image 2</label>
<div class="col-md-6">
<input type="file" name="product_img2" class="form-control" required>      

</div>

</div> <!---form-group-->   


<div class="form-group">
<label class="col-md-3 control-label" >Product Image 3</label>
<div class="col-md-6">
<input type="file" name="product_img3" class="form-control" required>      

</div>
 </div> <!---form-group--> 

  <div class="form-group">
<label class="col-md-3 control-label" >Product Price</label>
<div class="col-md-6">
<input type="text" name="product_price" class="form-control" required>      

</div>
 </div> <!---form-group-->    

 <div class="form-group">
<label class="col-md-3 control-label" >Product Keywords</label>
<div class="col-md-6">
<input type="text" name="product_keywords" class="form-control" required>      

</div>
 </div> <!---form-group-->  


 <div class="form-group">
<label class="col-md-3 control-label" >Product Description</label>
<div class="col-md-6">
<textarea name="product_desc" class="form-control" rows="6" cols="19" style="max-width:100%; max-height:100%;"></textarea>      

</div>
 </div> <!---form-group-->  


 <div class="form-group">
<label class="col-md-3 control-label" ></label>
<div class="col-md-6">
<input type="submit" name="submit" value="Insert Product" class="btn btn-primary form-control">     
</div>
 </div> <!---form-group-->

</form>   <!--form-horizontal ends--->

</div> <!--panel-body ends-->

</div>  <!---panel panel-default ends--> 

</div> <!--col-lg-12 ends--->    

</div>  <!--row 2 ends-->
</body>
</html>

<?php

if(isset($_POST['submit'])){
    $product_title=$_POST['product_title'];
    $product_cat=$_POST['product_cat'];
    $cat=$_POST['cat'];
    $product_price=$_POST['product_price'];
    $product_desc=$_POST['product_desc'];
    $product_keyword=$_POST['product_keywords'];

    $product_img1=$_FILES['product_img1']['name'];
    $product_img2=$_FILES['product_img2']['name'];
    $product_img3=$_FILES['product_img3']['name'];

    $temp_name1=$_FILES['product_img1']['tmp_name'];
    $temp_name2=$_FILES['product_img2']['tmp_name'];
    $temp_name3=$_FILES['product_img3']['tmp_name'];

    move_uploaded_file($temp_name1,"product_images/$product_img1");
    move_uploaded_file($temp_name2,"product_images/$product_img2");
    move_uploaded_file($temp_name3,"product_images/$product_img3");

$insert_product="insert into products(p_cat_id,cat_id,date,product_title,product_img1,product_img2,product_img3,product_price,product_desc,product_keywords) values( '$product_cat','$cat',NOW(),'$product_title','$product_img1','$product_img2','$product_img3','$product_price','$product_desc','$product_keyword')";


$run_product=mysqli_query($conn,$insert_product);

if($run_product){
    echo "<script>alert('Product has been inserted successfully')</script>";
    echo "<script>window.open('insert.php','self')</script>";
}
}
?>

Még a változó definiálása után is hibaüzenetet kapok Undefined index: product_price a C:\xampp\htdocs\RangProject\admin_area\insert_products.php 183-as sorban, ez az én sorom 183

 $product_price=$_POST['product_price'];

valaki megmondaná mi a hibám?? A php eléggé zavaró és kis- és nagybetűérzékeny.

29.04.2018

  • FIGYELEM: A mysqli használatakor a paraméterezett lekérdezések és bind_param felhasználói adatok hozzáadásához kérdésére. NE használjon karakterlánc-interpolációt vagy összefűzést ehhez, mert súlyos SQL-befecskendezési hibát. SOHA ne helyezzen el $_POST, $_GET vagy semmilyen felhasználói adatot közvetlenül egy lekérdezésbe, mert nagyon káros lehet, ha valaki ki akarja használni az Ön hibáját. 30.04.2018
  • Megjegyzés: A mysqli objektumorientált felülete lényegesen kevésbé bőbeszédű, így a kód könnyebben olvasható és auditálható, és nem könnyen összetéveszthető az elavult mysql_query felülettel. Mielőtt túlságosan belefektetne az eljárási stílusba, érdemes váltani. Példa: $db = new mysqli(…) és $db->prepare("…") A procedurális interfész a PHP 4 korszakának műterméke, amikor az mysqli API-t bevezették, és nem szabad új kódban használni. 30.04.2018
  • @hanuman hanu remélem az alábbi válaszok megoldják a problémádat. 30.04.2018
  • @Amanjaura Tudom, hogy paraméterezett lekérdezéseket és bind_param-ot kellene használnom. Teszteltem a kódomat, mielőtt a biztonságra tudtam volna koncentrálni 30.04.2018
  • @tadman stackoverflow.com/questions/50104663/. Valami segítség??? 30.04.2018

Válaszok:


1

A hozzárendelés előtt ellenőrizze, hogy a bejegyzés nem üres-e.

$product_price = isset($_POST['product_price']) ? $_POST['product_price'] : '';
30.04.2018
  • beírtam a sorodat a kódomba, de most az adatok még az adatbázisba sem kerülnek. az oldal frissül 30.04.2018

  • 2

    javítottam a hibámat. Most tettem hozzá, miután megfogadtam néhány tanácsot az összes válaszomból. Köszönöm mindenkinek.

    $product_title=mysqli_real_escape_string($conn,$_POST['product_title']);
        $product_cat=mysqli_real_escape_string($conn,$_POST['product_cat']);
        $cat=mysqli_real_escape_string($conn,$_POST['cat']);
        $product_price =mysqli_real_escape_string($conn,$_POST['product_price']);
        $product_desc=mysqli_real_escape_string($conn,$_POST['product_desc']);
        $product_keyword=mysqli_real_escape_string($conn,$_POST['product_keywords']);
    
    30.04.2018
  • Ez a kézi menekülés. Ez valójában 10-szer nehezebb, mint a helyőrző értékek használata, nem beszélve a rengeteg gépelésről. 30.04.2018

  • 3

    Ez azért történik, mert a „product_price” nem létezik a $_POST-on.

    A hiba elkerülése érdekében először ellenőrizze, hogy létezik-e az isset() használatával:

    $product_price = isset($_POST['product_price']) ? $_POST['product_price'] : '';
    
    30.04.2018
  • beírtam a sorodat a kódomba, de most az adatok még az adatbázisba sem kerülnek. az oldal frissül 30.04.2018
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..