Il était difficile de trouver le bon titre pour cette question. Je fais peu de stock / système d'inventaire avec php. Cette méthode d'ajout fonctionne presque bien, mais j'ai eu un petit problème. Je peux ajouter un produit avec le même ID.

Mon code:

<?php

// Viestit
$same_id = "This ID number is already taken";

// Formin inputit
$name = $_POST['add_nimi'];
$product_id = $_POST['add_tuoteid'];
$url = $_POST['add_image_url'];
$category = $_POST['add_kategoria'];
$price = $_POST['add_hinta'];
$weight = $_POST['add_paino'];

// Muuttaa formin antamat stringit luvuiksi
$price = (double)$price; 
$product_id = (int)$product_id;
$weight = (double)$weight;

// Hakee JSON datan
$tavarat_json = file_get_contents('JSON/tuotteet.json'); 

// Decoodaa json filun arrayksi
$tavarat_array = json_decode($tavarat_json, true);

array_push($tavarat_array, array('nimi' => $name, "tuoteid" => $product_id, "tuotekuva_url" => $url, "kategoria" => $category, "hinta" => $price, "paino" => $weight));
    
    // Encoodaa Arrayn takaisin JSON muotoon ja pushaa sen tuotteet.json filuun
    file_put_contents('JSON/tuotteet.json', json_encode($tavarat_array));
    
    // Palauttaa add sivulle takaisin
    Header( "Location: add.php" );

?>

Ce premier ci-dessous fonctionne, si $product_id est 1. Mais j'ai besoin d'obtenir en quelque sorte la valeur "tuoteid" du tableau. J'ai essayé foreach et je pense que c'est la façon de procéder, mais il y a un problème.

J'ai également essayé différentes négations in_array sans résultat.

if ($product_id == 1 ) { 
    
    echo "<script type='text/javascript'>alert('$same_id');</script>";
    //Header( "Location: add.php" );
}
else { 
    array_push($tavarat_array, array('nimi' => $name, "tuoteid" => $product_id, "tuotekuva_url" => $url, "kategoria" => $category, "hinta" => $price, "paino" => $weight));
    
    // Encoodaa Arrayn takaisin JSON muotoon ja pushaa sen tuotteet.json filuun
    file_put_contents('JSON/tuotteet.json', json_encode($tavarat_array));
    
    // Palauttaa add sivulle takaisin
    Header( "Location: add.php" );
    
}

foreach ($tavarat_array as $tavara) {
    if ($tavara->tuoteid == $product_id ) { 
        
        echo "<script type='text/javascript'>alert('$same_id');</script>";
    }
    else { 
        array_push($tavarat_array, array('nimi' => $name, "tuoteid" => $product_id, "tuotekuva_url" => $url, "kategoria" => $category, "hinta" => $price, "paino" => $weight));
        
        // Encoodaa Arrayn takaisin JSON muotoon ja pushaa sen tuotteet.json filuun
        file_put_contents('JSON/tuotteet.json', json_encode($tavarat_array));
        
        // Palauttaa add sivulle takaisin
        Header( "Location: add.php" );
        
    }
}

JSON ressemble à ceci :

[
    {
        "nimi": "Logitech K270",
        "tuoteid": 1,
        "tuotekuva_url": "https://cdn.verk.net/576/images/33/2_145225-700x423.jpeg",
        "kategoria": "Mouse",
        "hinta": 18.9,
        "paino": 0.2
    }
]


CODE DE FONCTIONNEMENT MAINTENANT :

$product_id_list = array_column($tavarat_array  ,'tuoteid');
$name_list = array_column($tavarat_array  ,'nimi');


// Etsii annettua tuotenumeroa arraysta $column, jossa tuoteid:t listattuna. !== tarkoittaa not identical
if(array_search($product_id, $product_id_list) !== false) // true ja false toimii molemmat samalla tavallaonko ideaa ???????
{
    
    echo    "<script>
                alert('Varastossa on tuote samalla tuotenumerolla.');
                window.location.href='add.php';
            </script>";

} elseif(array_search($name, $name_list) !== false) // true ja false toimii molemmat samalla tavallaonko ideaa ???????
{
    echo    "<script>
                alert('Varastossa on tuote samalla nimellä.');
                window.location.href='add.php';
            </script>";

} else {

    // Tekee annetuista tiedoista uuden arrayn, ja siitä uuden elementin JSON listaan
    array_push($tavarat_array, array('nimi' => $name, "tuoteid" => $product_id, "tuotekuva_url" => $url, "kategoria" => $category, "hinta" => $price, "paino" => $weight));
  
    // Encoodaa Arrayn takaisin JSON muotoon ja pushaa sen tuotteet.json filuun
    file_put_contents('JSON/tuotteet.json', json_encode($tavarat_array));
  
    // Palauttaa add sivulle takaisin
    Header( "Location: add.php" );
    
}
php
0
masteroscar 30 oct. 2020 à 16:17

1 réponse

Meilleure réponse

Combinaison de array_search et de array_column fonctionne pour moi

$column = array_column($tavarat_array  ,'tuoteid');

if(array_search($product_id, $column) !== false) 
{
  echo "<script type='text/javascript'>alert('$same_id');</script>";

} else {

  array_push($tavarat_array, array('nimi' => $name, "tuoteid" => $product_id, "tuotekuva_url" => $url, "kategoria" => $category, "hinta" => $price, "paino" => $weight));
  
  // Encoodaa Arrayn takaisin JSON muotoon ja pushaa sen tuotteet.json filuun
  file_put_contents('JSON/tuotteet.json', json_encode($tavarat_array));
  
  // Palauttaa add sivulle takaisin
  Header( "Location: add.php" );
    
}
1
Jerson 30 oct. 2020 à 13:32