За последние 24 часа нас посетили 30929 программистов и 1446 роботов. Сейчас ищут 860 программистов ...

Не передается парметр в функцию

Тема в разделе "PHP для новичков", создана пользователем usik, 24 сен 2008.

  1. usik

    usik Активный пользователь

    С нами с:
    22 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    Ситуация следующая имеется БД с одной таблицей и с одним полем : Table1 поле Name. В ней хранятся имена людей. Идем даьбше...
    При запуске сценария появляется рубрикатор. По моей задумке по нажатии любой гиперссылки в броузер должно выписаться имена людей , которые
    начинается с буквы нажатой мной гиперсылки. Ну например я нажал на 'A' и в броузер выпишется такое :Аня, Антон, Андрей и т.д. Чтобы реализовать то, что я хочу я написал сценарий, он ниже...

    Код (Text):
    1. <?php
    2.  
    3. function MakeQuery($Sel)
    4.   {
    5.  
    6.   if(isset($_GET["Sel"]))
    7.     {
    8.      
    9.      if (!mysql_connect("localhost", "root",'1111'))
    10.      echo "Невозможно подключиться к серверу.";
    11.  
    12.      $BaseName="test";
    13.       mysql_select_db($BaseName);
    14.      mysql_query("SET NAMES cp1251");
    15.        $result=mysql_query("Select Otrasl from table1 where Name like '$Sel%'");
    16.      while ($s=mysql_fetch_array($result))
    17.      echo "<a href=1.html>$s[Otrasl]</a><br>";
    18.  
    19.     }
    20.      
    21.   };
    22.  
    23. ?>
    24.  
    25.  
    26.  
    27. <HTML>
    28.    <Head>
    29.      <Title> Главная </Title>
    30.    </Head>
    31.  
    32. <BODY>
    33.  
    34.   <?php
    35.     MakeQuery($Selected)
    36.   ?>  
    37.  
    38.    
    39. <div class>  
    40.    <a href="myscript.php?Selected=А">А</a>
    41.    <a href="myscript.php?Selected=Б">Б</a>
    42.    <a href="myscript.php?Selected=В">В</a>
    43.    <a href="myscript.php?Selected=Г">Г</a>
    44.    </div>
    45. </BODY>
    46.   </HTML>
    Но ничего не происходит ,и что-то мне говорит потому что в функцию MyQuery не попадает параметр. Или , может по какой - нибудь другой причине..
    В общем помогите мне плз.
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    mysql_real_escape_string если ещё и о кодировках подумать
     
  4. usik

    usik Активный пользователь

    С нами с:
    22 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    Вот подправил все:

    Код (Text):
    1. <?php
    2.  
    3.  function MakeQuery($Selected)
    4.    {
    5.      if(isset($_GET["Selected"]))
    6.       {
    7.          if (!mysql_connect("localhost", "root",'1111'))
    8.           echo "Невозможно подключиться к серверу.";
    9.  
    10.           $BaseName="Names";
    11.           mysql_select_db($BaseName);
    12.           mysql_query("SET NAMES cp1251");
    13.           $result=mysql_query("Select Name from table1 where Name like '" . mysql_escape_string($Selected) . "%'");
    14.          
    15.            while ($s=mysql_fetch_array($result))
    16.             echo "$s[Name]<br>";
    17.       }
    18.     };
    19.  
    20. ?>
    21. //-------------------------------------------------------------------------------------------
    22. <HTML>
    23.    <Head>
    24.      <Title> Главная </Title>
    25.    </Head>
    26.  
    27.  <BODY>
    28.     <?php
    29.       MakeQuery($Selected)
    30.     ?>  
    31.        <a href="Query.php?Selected=А">А</a><br>
    32.        <a href="Query.php?Selected=Б">Б</a><br>
    33.        <a href="Query.php?Selected=В">В</a><br>
    34.    </BODY>
    35. </HTML>
    При нажатии на гиперссылку ничего не происходит.Что я не так сделал?

    У меня вот еще такой вот вопрос:
    Положим есть такая функция на C++

    Код (Text):
    1. void ShowValue (int a)
    2.   {
    3.     printf("%d\n",a);
    4.   }
    5. //-----------------------
    Вызов данной функции:

    Код (Text):
    1. void Main ()
    2.   {
    3.     int My_var=10;
    4.    ShowValue(My_var);
    5.   }
    //----------------------------

    Все работает. Вопрос у меня в том что , обязательно ли при описании функции называть входной параметр также
    как и переменную которая будет передаваться по ссылке. В моем случае это будет выглядеть так
    Код (Text):
    1. function MakeQuery($Selected)
    .

    Просто если обязательно , то функция какая-то не универсальная , она зависит от имени параметра.Как сделать
    так чтобы она не зависела от имени входной переменной(например, как в примере на C++), если это вообще возможно?
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1. <?php
    2.  
    3. function MakeQuery($Sel)
    4.   {
    5.  
    6.   if(isset($Sel))
    7.     {
    8.      $Sel=rawurldecode($Sel);
    9.      if (!mysql_connect("localhost", "root",'1111'))
    10.      die("Невозможно подключиться к серверу.");
    11.      $Sel=mysql_real_escape_string($Sel);
    12.      $BaseName="test";
    13.       mysql_select_db($BaseName);
    14.      mysql_query("SET NAMES cp1251");
    15.        $result=mysql_query("Select Otrasl from table1 where Name like '$Sel%'");
    16.      while ($s=mysql_fetch_array($result))
    17.      echo "<a href=1.html>".$s['Otrasl']."</a><br>";
    18.  
    19.     }
    20.  
    21.   };
    22.  
    23. ?>
    24.  
    25.  
    26.  
    27. <HTML>
    28.    <Head>
    29.      <Title> Главная </Title>
    30.    </Head>
    31.  
    32. <BODY>
    33.  
    34.   <?php
    35.     MakeQuery($_GET['Sel'])
    36.   ?>
    37.  
    38.  
    39. <div class>
    40.    <a href="myscript.php?Sel=<?=rawurlencode('А');?>">А</a>
    41.    <a href="myscript.php?Sel=<?=rawurlencode('Б');?>">Б</a>
    42.    <a href="myscript.php?Sel=<?=rawurlencode('В');?>">В</a>
    43.    <a href="myscript.php?Sel=<?=rawurlencode('Г');?>">Г</a>
    44.    </div>
    45. </BODY>
    46.   </HTML>
    upd/ исправилсо
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Mr.M.I.T.
    не покатит. mysql_real_escape_string работает только после подключения к БД
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Да?
    ну эмм =) меняем местами
     
  8. usik

    usik Активный пользователь

    С нами с:
    22 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    Код (Text):
    1.  
    2. mysql_real_escape_string
    Я переместил эту строчку, ниже , после подключения к БД и все заработало. Спасибо.
    Дак а вы не могли бы ответить на вопрос который я задавал выше :

    обязательно ли при описании функции называть входной параметр также
    как и переменную которая будет передаваться по ссылке.............................

    И еще у меня вопрос:
    Положим я зашел на сайт музыки и вижу рубрикотор, нажимаю на букву, появляются исполнители на заданную букву.
    Вопрос: На таких сайтах используется механизм похожий на мои-совместные труды или проблема такого рода решаются как то по другому?