php - Increase the depth of an MySQL query -


  सार्वजनिक फ़ंक्शन get_children ($ id) {$ query = $ this- & gt; db- & gt; क्वेरी (" SELECT @last_id: = id आईडी, parent_id, FIO, @depth: = if (parent_id = "। $ Id।", 1, @depth + 1) गहराई के रूप में, @first: = IF (id = "। $ Id । ',' पहले ', रिक्त) पहले उपयोगकर्ताओं के लिए फॉरेड इंडेक्स (इंडेक्स_पेरेंट_आईडी, प्राइमरी, इंडेक्स_बोथ), (SELECT @last_id: = "। $ Id।", @depth: = -1) वार्स WHERE id = "। $ आईडी "या parent_id = @last_id या parent_id ="। $ Id "" "); वापसी $ क्वेरी; }   

मैं आसन्न मॉडल सूची और इस प्रश्न का उपयोग करके बच्चों के नोड्स की स्तर की गहराई कैसे बढ़ा सकता हूं, अब तक यह मुझे मूल अभिभावक (फ़ंक्शन में आईडी द्वारा चयनित) देता है और ($ Q- & gt; पहली == 'पहले') {बच्चों के लिए, $ Parent_id = $ q- & gt; पैरेंट_आईडी; टूटना; }} फ़ंक्शन print_list ($ सरणी, $ parent = 0) {प्रिंट "& lt; ul & gt;"; विदेशी मुद्रा ($ पंक्ति के रूप में $ पंक्ति) {if ($ row- & gt; parent_id == $ parent) {प्रिंट "& lt; li & gt; $ row- & gt; FIO"; Print_list ($ सरणी, $ पंक्ति- & gt; आईडी); # रिकर्स प्रिंट "& lt; / li & gt;"; }} प्रिंट "& lt; / ul & gt;"; } प्रिंट करें echo ($ query- & gt; परिणाम (), $ parent_id);

फिर मैं इसे दृश्य फ़ाइल में प्रस्तुत करता हूं ... कृपया मदद या मेरी सलाह के बारे में सलाह देनी है कि क्या परिवर्तन या mysql क्वेरी की गहराई बढ़ाने के लिए।

मुझे डेटाबेस के स्कीमा के बारे में निश्चित नहीं है, लेकिन यह मूल रूप से कुछ ऐसी चीज का एक छीन लिया गया है जिसे आप ढूंढ सकते हैं। असल में, आपको एक फ़ंक्शन की ज़रूरत होगी जो कॉल करता है, लेकिन तर्क बदलता है।

इस स्थिति में, यह parent_id = $ parent_id (रूट का parent_id मान कर 0 है) और प्रत्येक उपयोगकर्ता के लिए, यह parent_id = $ id (जहां $ id है उनका आईडी है) के अन्य उपयोगकर्ताओं के लिए लगता है, इसलिए मूल रूप से, आपके पास अनंत गहराई है

  & lt ;? फ़ंक्शन print_list ($ parent_id) {$ query = "चयन करें * उपयोगकर्ता से जहां parent_id ="। Parent_id; प्रिंट "& lt; ul & gt;"; विदेशी मुद्रा ($ क्वेरी- & gt; परिणाम () $ q के रूप में) {$ id = $ q- & gt; आईडी; प्रिंट "& lt; li & gt;"; प्रिंट $ q- & gt; FIO; प्रिंट "& lt; / li & gt;"; print_list ($ आईडी); // यहां, यह फिर से कॉल करता है) प्रिंट "& lt; / ul & gt;"; } Print_list (0); // मूल-मूल-आईडी नंबर 0 मानते हुए    

Comments