使用concat从单独的单词中取出第一个字母

时间:2016-01-05 08:12:22

标签: php mysql

我的客户问我是否可以添加到项目中,根据其名称生成的产品代码和数量。 每个例子:如果产品是Samsung Grand 2,数量是30,代码应该看起来像SG2-30。 我的项目是用PHP,MySQL和一些JS脚本编写的。

首先,这是一种在商店中对产品进行编码的实用方法吗?

如果是,如何在PHP中完成?

我尝试使用if(isset($_POST['username'])){ $userName = $_POST['username']; $query = "SELECT id, name, username, telno FROM users WHERE username = ?"; $stmt = $conn->prepare($query); $stmt->bind_param('s', $userName); $stmt->execute(); $res = $stmt->get_result(); $row = $res->fetch_array(); $_SESSION['id'] = $row['id']; $_SESSION['name'] = $row['name']; $_SESSION['username'] = $row['username']; $_SESSION['telno'] = $row['telno']; $query = "SELECT useradvert.name2, useradvert.color2, useradvert.hobby2,useradvert.radiobtn, useradvert.kupon, useradvert.image, useradvert.image2 FROM users INNER JOIN useradvert ON users.id=useradvert.id "; $stmt = $conn->prepare($query); $stmt->execute(); $res = $stmt->get_result(); $row2 = $res->fetch_array(); // $_SESSION['name'] = $row2['name']; $_SESSION['name2'] = $row2['name2']; $_SESSION['color2'] = $row2['color2']; $_SESSION['hobby2'] = $row2['hobby2']; $_SESSION['radiobtn'] = $row2['radiobtn']; $_SESSION['kupon'] = $row2['kupon']; $_SESSION['image'] = $row2['image']; $_SESSION['image2'] = $row2['image2']; } ?> 连接2个变量,但我不能只接受每个单词的第一个字母。

concat

结果:

enter image description here

4 个答案:

答案 0 :(得分:2)

不要将数量附加到产品标识符。数量是一个可变的东西,产品标识符在所有情况下都应该相同,无论数量是多少。如果你这样做,你说的其他问题会增加,例如搜索和索引等。

我的建议是生成一个5位随机整数,然后应用您在问题中讨论的方案,例如" Samsung Grand 2"将编码为SG2-12345和#34; Samsung Grand 2.1"将编码为SG2-98765。

所以我的答案是 <link rel="import" href="../bower_components/polymer/polymer.html"> <script src='https://cdn.firebase.com/js/client/2.2.1/firebase.js'></script> <link rel="import" href="../bower_components/paper-icon-button"> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script> <dom-module id="sample-page"> <style> </style> <template> <div class="items"> </div> </template> </dom-module> <script> Polymer({ is: "sample-page", }); $(document).ready(function(){ ; var rootRef = "myfirebase ref......." rootRef.on("child_added", function (snapshot, prevChildKey) { var pointData = snapshot.val(); snapshot.forEach(function (childSnap) { $('#items').append( pointData.user); var key = childSnap.key(); //console.log('here come'); // console.log("Title: " + pointData.user); }) // }); // }); </script>

答案 1 :(得分:0)

  

首先,这是一种在商店中对产品进行编码的实用方法吗?

简单回答:不。

此方案不会阻止暧昧的代码。例如,“Samsung Grand 2”和“Samsung Grand 2.1”将生成相同的编码(SG2)。

不要使用这种编码。使用独特的产品编号是一种很好的做法。

答案 2 :(得分:0)

您可以使用以下函数来获取字符串的第一个字母。

function get_first_letters($string)
{
  return preg_replace('/(\B.|\s+)/','',$string);
}

$str = 'Samsung Galaxy V 2.1.3';

$first_letters = strtoupper(get_first_letters($str));

echo $first_letters;
  

虽然创建像这样的产品代码不是一个好习惯。

答案 3 :(得分:0)

我接受上述maxhb的答案,但是他的解决方案。

请尝试以下代码。

$splitWords = explode(" ", "Samsung Grand 2");
$firstLetters = "";

foreach ($splitWords as $word) {
  $firstLetters .= $word[0];
}
$quantity = 30; //get your quantity from your database

$code = $firstLetters."-".$quantity; //will result SG2-30