यहाँ मैंने अपना कोड search.php फ़ाइल में लिखा है

if(isset($_POST['searchField'])){
    $searchName = UserManager::searchName();
    if(empty($_POST['searchField'])){
        $error = 'Typ a name';
    }else{
        if(!isset($_POST['searchName'])){
                $error = 'No result';
            } else{
                foreach($searchName as $name){
                    $succes = $name['firstName'] . " ". $name['lastName'];
                }
            }
    }
}

यहां HTML का एक हिस्सा है जहां यह पूरे नाम प्रिंट करता है।

<div class="form-group">
    <?php if(isset($error)): ?>
        <p>
            <?php echo $error; ?>
        </p>
    <?php endif; ?>

    <?php if(isset($succes)): ?>
        <p>
            <?php echo $succes; ?>
        </p>
    <?php endif; ?>
 </div>

यहाँ मेरा कार्य है:

public static function searchName()
 {
    $conn = Db::getConnection();

    $searchField = $_POST['searchField'];

    $statement = ("SELECT * from tl_user WHERE firstname = :name OR lastname = :name");

    $query = $conn->prepare($statement);

    $query->bindValue(':name', $searchField);
    //var_dump($searchField);

    $query->execute();
    //"SELECT * from tl_user WHERE firstName LIKE '%$searchName% OR lastName LIKE '%$searchName%"

    $count = $query->fetchAll(PDO::FETCH_ASSOC);
    var_dump($count);
    return $count;
 }

मेरा प्रश्न वास्तव में है: यदि समान अंतिम नाम वाले और लोग हैं, तो यह कई नामों के बजाय केवल 1 पूर्ण नाम प्रिंट करता है।

अपने फ़ंक्शन में मैंने 'var_dump($count);' डाला है यह देखने के लिए कि क्या 1 से अधिक सरणी है और वहाँ है, लेकिन यह प्रिंट नहीं करता है

मैं एक नौसिखिया हूँ, इसलिए मैं अभी भी सीख रहा हूँ :)

php
-1
Lieselotte Philips 6 अप्रैल 2020, 12:59
3
आप प्रत्येक लूप रन पर अपने $success वर को ओवरराइड कर रहे हैं
 – 
Pierre
6 अप्रैल 2020, 13:02
हम इसके बारे में कैसे कर सकते हैं? :/
 – 
Lieselotte Philips
6 अप्रैल 2020, 13:03
मुझे नहीं पता, यह आपका कोड है, मेरा नहीं... आप सरणी को सीधे अपने लूप के अंदर प्रिंट कर सकते हैं या बाद में इसे प्रिंट करने के लिए लूप में एक सरणी बना सकते हैं (हालांकि मुझे सरणी प्राप्त करने के लिए बिंदु दिखाई नहीं देता है और इसे बाद में प्रिंट करने के लिए दूसरा बनाएं)
 – 
Pierre
6 अप्रैल 2020, 13:04
आप पुनरावृति में array_push का उपयोग कर सकते हैं ताकि यह आपको $success से प्राप्त होने वाले परिणामों को एक सरणी में जोड़ देगा जिसे पुनरावृत्ति शुरू होने से पहले परिभाषित किया गया है। और आप उन मूल्यों को भी जोड़ सकते हैं जो आपको पुनरावृत्ति में भी मिलते हैं।
 – 
Hirumina
6 अप्रैल 2020, 13:11

1 उत्तर

हर बार लूप के चारों ओर ओवरराइट करने के बजाय .= का उपयोग करके मूल्यों को $succes में संयोजित करें

$succes = '';
foreach($searchName as $name){
    $succes .= $name['firstName'] . " ". $name['lastName'];
}
1
RiggsFolly 6 अप्रैल 2020, 13:19
मैंने इसे अपने कोड में रखा है। अब मुझे कई नाम मिलते हैं! धन्यवाद! लेकिन यह एक त्रुटि देता है: उस पंक्ति पर 'अपरिभाषित चर: सफल'
 – 
Lieselotte Philips
6 अप्रैल 2020, 13:17
यदि आप .= संयोजन का उपयोग कर रहे हैं, तो $succes संस्करण को पहले उपयोग से पहले प्रारंभ करना होगा।
 – 
RiggsFolly
6 अप्रैल 2020, 13:18
संशोधित उत्तर देखें
 – 
RiggsFolly
6 अप्रैल 2020, 13:19
1
अब यह चला गया है और यह काम कर रहा है! सहायता के लिए धनयवाद!!
 – 
Lieselotte Philips
6 अप्रैल 2020, 13:20