راکت
حل شده

روند reply کامنت ها در php

11 پاسخ

سلام دوستان
من بخش کامنت رو پیاده سازی کردم و هرکامنتی ک گذاشته میشه مربوط به پست خودشه ، الان میخام بخش reply رو طراحی بکنم ب نظر شما چیکار کنم؟
وقتی یکی کامنت میزاره خب در اصل یک ایدی براش تو دیتابیس ذخیره میشه و الان من چجوری بگم کسی ک داره ریلای میکنه پیامش مساوی باشه با ایدی اون کامنت؟ خیلی سرچ کردم ب جایی نرسیدم اگ کسی ی توضیح خوب داره برام بگه ممنون میشم، شرط هم میزارم انجام نمیشه نمیدونم من اشتبا انجام میدم یا ی مدل دیگس!

ثبت پرسش جدید

پاسخ‌ها

11
امیر علی
امیر علی
@ajdar9667

تخصص: طراح و توسعه دهنده fullstack

بهترین پاسخ

سلام چون پی اچ پی خام هست اینجا توضیح دادن یکم سخته میتونی باهام داخل تلگرام ارتباط بگیری برات توضیح بدم ولی بخام خلاصه بگم باید یک فیلد در دیتابیس به نام parent_id اضافه کنی و پاسخ هایی که به عنوان ریپلای هستن رو یک اینپوت هیدن براش بزاری و مقدار parent_id رو برابر با ایدی اون نظر ثبت شده اصلی بزاری و هنگام نمایش نظرا اونایی که parent_id دارن رو زیر محموعه نظرات اصلی مربوطشون بزارین

zahr..
zahr..
@zahramalekipor

تخصص: هک ناسا با html

محمد
محمد
@mprogrammer7

تخصص: Laravel

سلام
برای reply یک فیلد در جدول نظرات اضافه کنید parent_id و به صورت دیفالت 0 باشد
و اگر کاربر برای پست نظر ایجاد کرد همون 0 رو در نظر بگیرید
اگر در پاسخ به نظر یکی دیگه بود id اون نظر رو به عنوان parent_id بزارید

شاید پاسخ شما همین‌جا باشد

محمد
محمد
@mprogrammer7

تخصص: Laravel

این کد جدول نظرات من هست

        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id')->nullable();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->string('name');
            $table->text('text');
            $table->boolean('is_approved')->default(false);
            $table->unsignedBigInteger('post_id');
            $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
            $table->unsignedBigInteger('parent_id')->default(0);

            $table->timestamps();
        });
سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام از فریمورک استفاده می کنید؟؟ یا فقط php

zahr..
zahr..
@zahramalekipor

تخصص: هک ناسا با html

@mrn
ممنون از پاسخگوییتون ، منم یک فیلد ایجاد کردم ، برا مثال اقای x کامنت گذاشته الان اقای y میخاد پاسخ بده من چجوری باید مقدار اقای x رو بگیرم؟
چون وقتی مقدار میگیرم اینطوری ذخیره میشه:
فرض کنین این x ی کامنت گذاشته و ایدی این کامنت 1 و نفرات بعدی هم همینطوری 2 . 3 .4. 5 و ....
وقتی مقدار این کامنت x رو میگیرم و میگم هرچی که به این x پاسخ داده شد ایدی این کامن بره ذخیره بشه قسمت parent_id ب قول خودتون ولی اینطوری نمیشه ، ب جاش ادامه عدد اون بالا ک گفتم 6 . 7 .8. 9 و .... ب ترتیب ذخیره میشه
ی خورده راهمایی بکنین ک باید چیکار کنم دقیق مثل شما بشه و این مشکلات رو نداشته باشم

zahr..
zahr..
@zahramalekipor

تخصص: هک ناسا با html

@websaz

با php خام

محمد
محمد
@mprogrammer7

تخصص: Laravel

نگا کنید تو صفحه تکی مقالات
این کد فرم برای ارسال نظر اصلی هست بدون parent_id و در پاسخ هیچ کس نیست

         <form wire:submit.prevent="SendNewComment" class="row max-auto">
                        <div class="col-12">
                            @error('comment.text')
                            <span class="text-danger">{{ $message }}</span>
                        @enderror
                            <textarea wire:model.lazy="comment.text" rows="5" placeholder="نظر خود را درباره این مطلب با دیگران به اشتراک بگذارید"></textarea>
                        </div>
                        @error('comment.name')
                        <span class="text-danger">{{ $message }}</span>
                        @enderror
                        <div class="col-12 col-md-6">
                            <input wire:model.lazy="comment.name" type="text" placeholder="نظر شما به چه نامی در سایت منتشر شود؟">
                        </div>
                        {{-- <div class="col-12 col-md-6">
                            <input type="email" placeholder="ایمیل">
                        </div> --}}
                        <div class="col-12">
                            <button type="submit" class="btn1 mx-auto ms-md-0">ارسال نظر</button>
                        </div>
                    </form>

حالا شما تو php خام روت درست کنید و ادرس روت رو بزارید تو action و اطلاعات ورودی رو بگیرید و کامنت بدون parent_id ذخیره کنید

بعد پایین لیست تمام نظرات رو دارم
داخل لیست هر نظر یک فرم دارم که برای پاسخ به اون نظر هست و display همشون none وقتی رو ایکون زدم نشون میدم

  @foreach ($comments as $item)
                                <div class="comment-body">
                                    <div class="user-meta">
                                        <div class="user-img">
                                            <img src="{{ asset('/user-assets/images/logo.png') }}" class="img-fluid">
                                        </div>
                                        <div class="user-name">
                                            <p>{{ $item->name }}</p>
                                            @if (!$item->user)
                                            <p class="user-type">مهمان</p>

                                            @endif
                                        </div>
                                        <div class="comment-time">
                                            در
                                            <span>{{ jdate($item->created_at)->format("j F  Y      G:i") }}</span>
                                            <p>درباره این مطلب گفته:</p>
                                        </div>
                                    </div> 
                                    <div class="comment-content">
                                        <p>{{ $item->text }}</p>
                                    </div>
 <div class="reply-form">
        <form wire:submit.prevent="SendResponseComment" class="row max-auto">
            <div class="col-12">
                @error('response.text')
                <span class="text-danger">{{ $message }}</span>
            @enderror
                <textarea wire:model.lazy="response.text" rows="5" placeholder="نظر خود را درباره این مطلب با دیگران به اشتراک بگذارید"></textarea>
            </div>
            @error('response.name')
            <span class="text-danger">{{ $message }}</span>
            @enderror
            <div class="col-12 col-md-6">
                <input wire:model.lazy="response.name" type="text" placeholder="نظر شما به چه نامی در سایت منتشر شود؟">
            </div>
            {{-- <div class="col-12 col-md-6">
                <input type="email" placeholder="ایمیل">
            </div> --}}
            <div class="col-12">
                <button type="submit" class="btn1 mx-auto ms-md-0">ارسال نظر</button>
            </div>

        </form>                                  
                                </div>   

شما داخل فرم ارسال پاسخ یک فیلد بزارید به عنوان parent_id تا مشخص بشه حالا با php خام نمیدونم به چه صورت میخاید پاس بدید
تو لاراول id اون نظر والد رو در action قرار میدیم

محمد
محمد
@mprogrammer7

تخصص: Laravel

شما از یک فرم ارسال نظر نمیتونید متوجه بشید در پاسخ به کیه باید یک فرم برای نظر اصلی داشته باشید
و داخل حلقه که تمام نظرات رو نشون میدید هم برای هر نظر یک فرم درست کنید و id همون نظر رو در Action قرار بدید

zahr..
zahr..
@zahramalekipor

تخصص: هک ناسا با html

واااااای خد اازت راضی باشه ب محض اینکه گفتین اینپوت انجام دادم مشکلم حل شد تونستم اوکیش کنم خیلییی ممنون سه روز بود درگیر این بودم
@ajdar9667

امیر علی
امیر علی
@ajdar9667

تخصص: طراح و توسعه دهنده fullstack

خواهش میکنم موفق باشین

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام