نمایش نتایج 1 تا 13 از 13

نام تاپیک: 2 سوال در مورد mysql در php

  1. #1

    2 سوال در مورد mysql در php

    سلام به همگی

    مثلا دیتابیسی با 15 سطر داریم که نام کاربری و رمز عبور داخلش ذخیره شده.چطور میشه با یک دستور به سطر 4 بدون استفاده از حلقه for رفت؟
    من این دستور رو نوشتم اما برنامه error داد:

    <?php
    $db=mysql_connect("127.0.0.1","root","");
    mysql_select_db('mydb',$db);
    $query="SELECT * FROM counter";
    $result=mysql_query($query,$db);
    $num=mysql_num_rows($result);
    //********
    $name=mysql_result($result,4,0);
    $f=mysql_result($result,$num,0);
    ?>
    خطاش هم این بود که برنامه mysql نمیتونه پرش کنه به سطر 4 یا سطری که

    $num
    نشون میده!!!!
    آیا نمیشه با mysql بصورت کار با آرایه ها کار کرد؟مثلا نام جدولمون هست counter.برای رفتن به سطر 4 بنویسیم:

    counter[4]
    ???


    سوال دومم در کار با دیتابیس mysql هست.مثلا ابتدا داده ها در phpMyAdmin بشکل زیر نمایش داده میشن:
    num --------- date
    ===============
    3---- 2011,01,15
    8---- 2011,01,16
    4---- 2011,01,18
    7---- 2011,01,19
    2---- 2011,01,20
    اگر داده ای از این جدول پاک نکنیم ، داده ها به ترتیب ورود از بالا به پایین ذخیره میشن.اما اگر مثلا داده دوم رو delete کنیم ، و سپس داده ای جدید، insert کنیم ، این داده جدید بجای اینکه در پایین جدول قرار بگیره ،بر خلاف نظم اولیه ، در جایی که داده قبلی delete شده ، ذخیره میشه.اما داده های بعدی که insert میشن ، بر اساس همون نظم ابتدایی ، از بالا به پایین ذخیره میشن.راهی نیست که این مشکل بوجود نیاد و همون نظم اولیه رعایت بشه؟؟


    ممنون

  2. #2

    نقل قول: 2 سوال در مورد mysql در php

    <?php
    $db=mysql_connect("127.0.0.1","root","");
    mysql_select_db('countries',$db);
    $query="SELECT * FROM countries;";

    $result=mysql_query($query,$db);

    $num=mysql_num_rows($result);
    //********
    $name = mysql_result($result,3,1);
    ?>

    mysql_result اولین آرگومانت result و بعد شماره سطر البته از صفر شروع میشه و بعد شماره فیلد که اونم از 0 شروع میشه
    شما $num اکه 40 تا باشه چون از 0 شروع میشه 39 تاشماره داریم پس نمیتونه به اون دست پیدا کنه

  3. #3

    نقل قول: 2 سوال در مورد mysql در php

    در مورد سوا دوم ههم بیشتر توضیح بدین
    اگه نظم خاصی دارن مرتب کنید

  4. #4

    نقل قول: 2 سوال در مورد mysql در php

    ممنون.اصلا یادم نبود که از 0 شروع به شمارش میکنه!

  5. #5

    نقل قول: 2 سوال در مورد mysql در php

    در مورد سوال دوم هم .خیر نظم خاصی ندارن.برای مثال یک سری اطلاعات در دیتابیس به این صورت ذخیره شدن:

    num --------- date
    ===============
    3---- 2011,01,15
    8---- 2011,01,19
    4---- 2011,01,18
    7---- 2011,01,11
    2---- 2011,01,20

    اگر داده ای رو insert کنیم ، در بالای جدول قرار میگیره (البته این روند تا زمانی هست که در دیتابیس رکوردی رو delete نکنیم.)
    برای delete کردن هم از این دستور استفاده میکنم:
    mysql_query("delete from users where username=".@mysql_result($result,2,0)."");

    با توجه به این دستور ، رکورد سومی از دیتابیس پاک میشه.حالا اگر داده ای جدید insert کنیم ، در محل داده قبلی که delete شده (یعنی سطر 3) ذخیره میشه که نباید به این صورت باشه.(داده ها باید به ترتیب ورود ، هر بار ، به بالای جدول اضافه بشن)

    حالا راهی نیست که این مشکل پیش نیاد؟

  6. #6

    نقل قول: 2 سوال در مورد mysql در php

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

  7. #7

    نقل قول: 2 سوال در مورد mysql در php

    کلا کد برنامه من این هست.ابتدا یه فرم html که داده رو میگیره:

    کد HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta http-equiv="Content-Language" content="en-us" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled 1</title>
    <style type="text/css">
    .style1 {
        font-size: x-large;
    }
    </style>
    </head>
    
    <body>
    
    <p class="style1"><strong>Insert</strong></p>
    <form method="post" action="test.php">
        username: <input name="user1" style="height: 22px" /><br />
        password: <input name="pass1" /><br />
        <input name="Reset1" type="reset" value="reset" />
        <input name="Submit1" type="submit" value="submit" /></form>
    
    </body>
    
    </html>
    =============
    فایل بعد کار insert رو انجام میده:

    نام فایل: test.php

    <html>
    <head>
    <meta http-equiv="Content-Language" content="php; charset=utf-8" />
    <meta http-equiv="Content-Type" content="php; charset=utf-8" />
    <body>
    <?php

    $db=mysql_connect("127.0.0.1","root","");
    mysql_select_db('mydb',$db);
    $query="SELECT * FROM users";
    $result=mysql_query($query,$db);
    $num=mysql_num_rows($result);
    //***************INSERT*****************
    $user1=htmlspecialchars($_POST['user1']);
    $pass1=htmlspecialchars($_POST['pass1']);
    $query="insert into users(username,password) value ('".$user1."','".$pass1."')";
    $result=mysql_query($query);
    mysql_close();
    print('<p><a href="insert.htm"> Insert Again</a></p><p><a target="_blank" href="db.php"> Show Data</a></p>');
    ?>
    </body>
    </head>
    </html>
    ======================
    این فایل هم اطلاعات ذخیره شده رو نمایش میده.فقط برای هر رکورد یک چک باکس قرار دادم که اگر کاربر خواست چند رکورد رو حذف کنه ، جلوی هر رکورد تیک میزنه و در آخر برای انجام عملیات حذف دکمه submit پایین جدول رو میزنه.

    نام فایل: db3.php

    <html>
    <body>
    <?php

    $db=mysql_connect("127.0.0.1","root","");
    if($db)
    print("Connection Sucsessful!");
    else
    print("Connection Failed!");

    mysql_select_db('mydb',$db);
    $query="SELECT * FROM users";
    $result=mysql_query($query,$db);
    $num=mysql_num_rows($result);
    //********************************************
    echo "<form method='post' action='delete.php'>";
    echo "<table border=1>";
    for ($i=0;$i<$num;$i++)
    {
    $row=mysql_fetch_array($result);
    echo "<tr><td>".($i+1)."</td>";
    echo "<td>".@mysql_result($result,$i,0)."</td>";
    echo "<td>".@mysql_result($result,$i,1)."</td>";
    print('<td><input name="'.$i.'" type="checkbox" /></td></tr>');
    }
    echo "</table>";
    echo "<input name='Submit1' type='submit' value='submit' /></form>";
    //number of rows:
    echo "Rows number:".mysql_affected_rows($db);
    //end

    //delete
    mysql_query("delete from users where username='100'");
    //

    ?>
    </body>
    </html>
    برای انجام کار delete هم این فایل وجود داره که داده های ورودیش رو از فایل قبلی (همون رکوردهای تیک خورده) میگیره.

    نام فایل: delete.php

    <html>
    <body>
    <?php

    $db=mysql_connect("127.0.0.1","root","");
    /*
    if($db)
    print("Connection Sucsessful!");
    else
    print("Connection Failed!");
    */
    mysql_select_db('mydb',$db);
    $query="SELECT * FROM users";
    $result=mysql_query($query,$db);
    $num=mysql_num_rows($result);
    //********************************************

    for($i=0;$i<$num;$i++)
    {
    if(!empty($_POST[$i]))
    {
    mysql_query("delete from users where username=".@mysql_result($result,$i,0)."");
    echo @mysql_result($result,$i,0)." Delete.<br>";
    }
    }


    ?>
    </body>
    </html>

    این تمام یه برنامه بود که نوشتمش

    ممنون

  8. #8

    نقل قول: 2 سوال در مورد mysql در php

    من روشتورو اصلا قبول ندارم خیلیبه خودتسخت گرفتی
    اما همون و برات درستکردم
    بهتره از mysql_result اینجا استفاده نکنی تو checkbod مقدار value و نام username بزار تا یک قدم جلوتر باشی
    ببینم چیکارش میکنی
    این فایل درسته بازش کن ببین اشکات و تصحیح کن
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: rar 17.rar‏ (1.9 کیلوبایت, 4 دیدار)

  9. #9

    نقل قول: 2 سوال در مورد mysql در php

    در ضمن کیبوردم خرابه ببخشید بد تایپ میکنم

  10. #10

    نقل قول: 2 سوال در مورد mysql در php

    ممنون.خیلی کمکم کردین.thx
    مخصوصا فایل delete رو خوب نوشتید.راستش من روی این برنامه زیاد وقت نگذاشتم و از طرفی اصلا روشی رو که در فایل delete انجام دادم دوست نداشتم.چون اینطوری سیستم باید به اندازه تمام رکوردها دستورات داخل حلقه for رو تکرار میکرد و بررسی میکرد که هر جا چک باکس پر هست ، عمل delete رو انجام بده! که این کار برای داده های زیاد وقت گیر و بیهوده هست.اما شما جالب نوشتید.من راستش 5 روز شده که php رو شروع کردم و زیاد در مورد php نمیدونم.لطفا این قسمت رو که در فایل delete استفاده کردید ، یکم توضیح بدید.ممنونم از توجه شما

    $p_chk = null;
    import_request_variables('p', 'p_');
    $arr = array();
    $arr = $p_chk;
    foreach($arr as $value)
    {
    $del_index = mysql_result($result,$value,0);
    mysql_query("delete from users where username='$del_index'",$db);
    echo "Delete ".$del_index."<br/>";

    }

  11. #11

    نقل قول: 2 سوال در مورد mysql در php

    راستی من دیتابیسی که قبلا برای کدی که خودم نوشته بودم رو empty کردم و برای تست کدی که شما تغییرش دادید ، داده ها رو از نو وارد کردم.باز هم همون مشکل وجود داره.مشکلی که در تاپیک #5 نوشتم

    ممنون

  12. #12

    نقل قول: 2 سوال در مورد mysql در php


    import_request_variables('p', 'p_');

    ما متغییر هایی داریم برای پست و گت
    منظور $_POST و $_GET

    اینه یک نوع آرایه هم حساب میان

    if ($_POST) {
    echo '<pre>';
    echo htmlspecialchars(print_r($_POST, true));
    echo '</pre>';
    }


    کد بالا اولین مقدارش p یا g که همونپست وگت هست
    دومی یک پیشوند برای متغییرمشخص میکنی و بعد استفاده میکنی
    بقیش که مشخصه
    راستشبا این کیبوردحال ندارم بنویسم موردی سوال کن بگم

  13. #13

    نقل قول: 2 سوال در مورد mysql در php

    مشکل چیه؟ارور و بگین
    کلی حرف نزنیدلطفا

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •