zahr..
3 سال پیش توسط zahr.. مطرح شد
11 پاسخ

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

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


ثبت پرسش جدید
امیر علی
تخصص : طراح و توسعه دهنده fullstack
@ajdar9667 3 سال پیش آپدیت شد
-1

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


zahr..
تخصص : هک ناسا با html
@zahramalekipor 3 سال پیش مطرح شد
محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
0

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


محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
0

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

        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();
        });

سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

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


zahr..
تخصص : هک ناسا با html
@zahramalekipor 3 سال پیش مطرح شد
0

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


zahr..
تخصص : هک ناسا با html
@zahramalekipor 3 سال پیش مطرح شد
0
محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
-1

نگا کنید تو صفحه تکی مقالات
این کد فرم برای ارسال نظر اصلی هست بدون 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 قرار میدیم


محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
0

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


امیر علی
تخصص : طراح و توسعه دهنده fullstack
@ajdar9667 3 سال پیش آپدیت شد
-1

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


zahr..
تخصص : هک ناسا با html
@zahramalekipor 3 سال پیش مطرح شد
0

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


امیر علی
تخصص : طراح و توسعه دهنده fullstack
@ajdar9667 3 سال پیش مطرح شد
0

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


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

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