home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 August / PCWorld_2001-08_cd.bin / Komunikace / phptriad / phptriadsetup2-11.exe / htdocs / phpMyAdmin / tbl_qbe.php < prev    next >
PHP Script  |  2000-08-20  |  14KB  |  496 lines

  1. <?php
  2. require( "header.inc.php");
  3.  
  4. if(empty($Columns))
  5.     $Columns = 3;  # initial number of columns
  6.  
  7. if(!isset($Add_Col))
  8.     $Add_Col = "";
  9.  
  10. if(!isset($Add_Row))
  11.     $Add_Row = "";
  12.  
  13. if(!isset($Rows))
  14.     $Rows = "";
  15.  
  16. if(!isset($InsCol))
  17.     $InsCol = "";
  18.  
  19. if(!isset($DelCol))
  20.     $DelCol = "";
  21.  
  22. if(!isset($Criteria))
  23.     $Criteria = "";
  24.  
  25. if(!isset($InsRow))
  26.     $InsRow = "";
  27.  
  28. if(!isset($DelRow))
  29.     $DelRow = "";
  30.  
  31. if(!isset($AndOrRow))
  32.     $AndOrRow = "";
  33.  
  34. if(!isset($AndOrCol))
  35.     $AndOrCol = "";
  36.  
  37.  
  38. $wid =  "12";
  39. $widem = $wid. "em";
  40. $col = $Columns + $Add_Col;
  41.  
  42. if($col < 0)
  43.     $col = 0;
  44. $row = $Rows + $Add_Row;
  45. if($row < 0)
  46.     $row = 0;
  47.  
  48. $tbl_result = mysql_list_tables ($db);
  49. $i = 0; $k = 0;
  50.  
  51. if(!empty($TableList))
  52. {
  53.     for($x=0; $x<sizeof($TableList); $x++)
  54.         $tbl_names[$TableList[$x]] =  "selected";
  55. }
  56.  
  57. while($i < mysql_num_rows($tbl_result))
  58. {
  59.     $tbl = mysql_tablename ($tbl_result, $i);
  60.     $fld_results = mysql_list_fields($db, $tbl);
  61.     $j = 0;
  62.  
  63.     if(empty($tbl_names[$tbl]) && !empty($TableList))
  64.         $tbl_names[$tbl]= "";
  65.     else
  66.         $tbl_names[$tbl]= "selected";
  67.  
  68.     if($tbl_names[$tbl]== "selected")
  69.     {
  70.         $fld[$k++] =  "$tbl.*";
  71.         while($j < mysql_num_fields($fld_results))
  72.         {
  73.             $fld[$k] = mysql_field_name ($fld_results, $j);
  74.             $fld[$k] =  "$tbl.$fld[$k]";
  75.             $k++;
  76.             $j++;
  77.         }
  78.     }
  79.  
  80.     $i++;
  81. }
  82.  
  83. echo "<form action='tbl_qbe.php' method='POST'>\n";
  84. echo "<table border='$cfgBorder'><tr>\n";
  85.  
  86. ### Field columns
  87. echo "<td align='RIGHT' bgcolor='$cfgThBgcolor'><b>$strField:</b></td>\n";
  88. $z=0;
  89. for($x = 0; $x < $col; $x++)
  90. {
  91.     if(isset($InsCol[$x]) && $InsCol[$x]== "on")
  92.     {
  93.         echo  "<td align=center bgcolor='$cfgBgcolorOne'><select style='width: $widem;' name='Field[$z]' size='1'>\n";
  94.         echo  "<option value=''></option>\n";
  95.         for($y = 0; $y < sizeof($fld); $y++)
  96.         {
  97.             $sel =  "";
  98.             if($fld[$y] ==  "")
  99.                 $sel =  "selected";
  100.             echo  "<option $sel value='$fld[$y]'>$fld[$y]</option>\n";
  101.         }
  102.         echo  "</select>\n";
  103.         echo  "</td>\n";
  104.         $z++;
  105.     }
  106.  
  107.     if(isset($DelCol[$x]) && $DelCol[$x]== "on")
  108.         continue;
  109.     echo "<td align=center bgcolor='$cfgBgcolorOne'><select style='width: $widem;' name='Field[$z]' size='1'>\n";
  110.     echo "<option value=''></option>\n";
  111.     for($y = 0; $y < sizeof($fld); $y++)
  112.     {
  113.         $sel =  "";
  114.         if($fld[$y] == $Field[$x])
  115.         {
  116.             $curField[$z]=$Field[$x];
  117.             $sel =  "selected";}
  118.             echo  "<option $sel  value='$fld[$y]'>$fld[$y]</option>\n";
  119.         }
  120.     $z++;
  121.     echo  "</select>\n";
  122.     echo  "</td>\n";
  123. }
  124. echo  "</tr><tr>\n";
  125.  
  126. ### Sort columns
  127. echo  "<td align='RIGHT' bgcolor='$cfgThBgcolor'><b>Sort:</b></td>\n";
  128. $z = 0;
  129. for($x = 0; $x < $col; $x++)
  130. {
  131.     if(isset($InsCol[$x]) && $InsCol[$x]== "on")
  132.     {
  133.         echo "<td align=center bgcolor='$cfgBgcolorTwo'><select style='width: $widem;' name='Sort[$z]' size='1'>\n";
  134.         echo "<option value=''></option>\n";
  135.         echo "<option value='ASC'>Ascending</option>\n";
  136.         echo "<option value='DESC'>Decending</option>\n";
  137.         echo "</select>\n";
  138.         echo "</td>\n";
  139.       $z++;
  140.     }
  141.     if(isset($DelCol[$x]) && $DelCol[$x]== "on")
  142.         continue;
  143.     echo  "<td align=center bgcolor='$cfgBgcolorTwo'><select style='width: $widem;' name='Sort[$z]' size='1'>\n";
  144.     echo  "<option value=''></option>\n";
  145.     if($Sort[$x] ==  "ASC")
  146.     {
  147.         $curSort[$z]=$Sort[$x];
  148.         $sel =  "selected";
  149.     }
  150.     else
  151.         $sel =  "";
  152.     echo  "<option $sel value='ASC'>Ascending</option>\n";
  153.     if($Sort[$x] ==  "DESC")
  154.     {
  155.         $curSort[$z]=$Sort[$x];
  156.         $sel =  "selected";
  157.     }
  158.     else
  159.         $sel =  "";
  160.     echo  "<option $sel value='DESC'>Desending</option>\n";
  161.     echo  "</select>\n";
  162.     echo  "</td>\n";
  163.     $z++;
  164. }
  165.  
  166. ### Show columns
  167. echo  "</tr><tr><td align='RIGHT' bgcolor='$cfgThBgcolor'><b>Show:</b></td>\n";
  168. $z=0;
  169. for($x = 0; $x < $col; $x++)
  170. {
  171.     if(isset($InsCol[$x]) && $InsCol[$x]== "on")
  172.     {
  173.         echo  "<td align='CENTER'><input type='Checkbox' name='Show[$z]'></td>\n";
  174.         $z++;
  175.     }
  176.     if(isset($DelCol[$x]) && $DelCol[$x]== "on")
  177.         continue;
  178.     $sel =  "";
  179.     if(isset($Show[$x]))
  180.     {
  181.         $sel =  "checked";
  182.         $curShow[$z] = $Show[$x];
  183.     }
  184.     echo  "<td align='CENTER' bgcolor='$cfgBgcolorOne'><input type='Checkbox' $sel name='Show[$z]'></td>\n";
  185.     $z++;
  186. }
  187.  
  188. ### Criteria columns
  189. echo  "</tr><tr><td align='RIGHT' bgcolor='$cfgThBgcolor'><b>Criteria:</b></td>\n";
  190. $z=0;
  191. for($x = 0; $x < $col; $x++)
  192. {
  193.     if(isset($InsCol[$x]) && $InsCol[$x]== "on")
  194.     {
  195.         echo  "<td align=center bgcolor='$cfgBgcolorTwo'><input type='Text' name='Criteria[$z]' value='' style='width: $widem;' size='20'></td>\n";
  196.         $z++;
  197.     }
  198.     if(isset($DelCol[$x]) && $DelCol[$x]== "on")
  199.         continue;
  200.     echo  "<td align=center bgcolor='$cfgBgcolorTwo'><input type='Text' name='Criteria[$z]' value=\"".stripslashes($Criteria[$x])."\" style='width: $widem;' size='20'></td>\n";
  201.     $curCriteria[$z] = $Criteria[$x];
  202.     $z++;
  203. }
  204.  
  205. ### And/Or columns and rows
  206. $w=0;
  207. for($y = 0; $y <= $row; $y++)
  208. {
  209.     $bgcolor = $cfgBgcolorOne;
  210.     if($y % 2 == 0)
  211.         $bgcolor = $cfgBgcolorTwo;
  212.     if($InsRow[$y]== "on")
  213.     {
  214.         echo "</tr><tr><td nowrap align='RIGHT' bgcolor='$bgcolor'>";
  215.         $chk[ 'or'] =  "checked"; $chk[ 'and'] =  "";
  216.         # Row controls
  217.         echo  "
  218.          <table bgcolor='$bgcolor'><tr>
  219.          <td align=right nowrap><small>Ins:</small><input type='checkbox' name='InsRow[$w]'></td>
  220.          <td align=right><b>And:</b></td>
  221.          <td><input type='radio' ".$chk[ 'and'].  " name='AndOrRow[$w]' value='and'></td></tr>
  222.          </tr><td align=right nowrap><small>Del:</small><input type='checkbox' name='DelRow[$w]'></td>
  223.          <td align=right><b>Or:</b></td>
  224.          <td><input type='radio' ".$chk[ 'or']. " name='AndOrRow[$w]' value='or'></td></tr>
  225.          </table></td>\n";
  226.         $z=0;
  227.         for ($x = 0; $x < $col; $x++)
  228.         {
  229.             if($InsCol[$x]== "on")
  230.             {
  231.                 $or =  "Or".$w;
  232.                 echo  "<td align=center bgcolor='$bgcolor'><textarea style='width: $widem;' rows=2 name='".$or. "[$z]'></textarea></td>\n";
  233.                 $z++;
  234.             }
  235.             if($DelCol[$x]== "on")
  236.                 continue;
  237.             $or =  "Or".$w;
  238.             echo  "<td align=center bgcolor='$bgcolor'><textarea rows=2 style='width: $widem;' name='".$or. "[$z]'></textarea></td>\n";
  239.             $z++;
  240.         }
  241.         $w++;
  242.     }
  243.     if($DelRow[$y]== "on")
  244.         continue;
  245.     echo  "</tr><tr><td nowrap align='RIGHT'>";
  246.     $curAndOrRow[$w]=$AndOrRow[$y];
  247.     if($AndOrRow[$y] ==  'and')
  248.     {
  249.         $chk[ 'and'] =  "checked";
  250.         $chk[ 'or'] =  "";
  251.     }
  252.     else
  253.     {
  254.         $chk[ 'or'] =  "checked";
  255.         $chk[ 'and'] =  "";
  256.     }
  257.  
  258.     # Row controls
  259.     echo  "
  260.      <table bgcolor='$bgcolor'><tr>
  261.      <td align=right nowrap><small>Ins:</small><input type='checkbox' name='InsRow[$w]'></td>
  262.      <td align=right><b>And:</b></td>
  263.      <td><input type='radio' ".$chk[ 'and'].  " name='AndOrRow[$w]' value='and'></td></tr>
  264.      </tr><td align=right nowrap><small>Del:</small><input type='checkbox' name='DelRow[$w]'></td>
  265.      <td align=right><b>Or:</b></td>
  266.      <td><input type='radio' ".$chk[ 'or']. " name='AndOrRow[$w]' value='or'></td></tr>
  267.      </table></td>\n";
  268.     $z=0;
  269.     for ($x = 0; $x < $col; $x++)
  270.     {
  271.         if(isset($InsCol[$x]) && $InsCol[$x]== "on")
  272.         {
  273.             $or =  "Or".$w;
  274.             echo  "<td bgcolor='$bgcolor'><textarea style='width: $widem;' rows=2 name='".$or. "[$z]'></textarea></td>\n";
  275.             $z++;
  276.         }
  277.         if(isset($DelCol[$x]) && $DelCol[$x]== "on")
  278.             continue;
  279.         $or =  "Or".$y;
  280.         if(!isset(${$or}))
  281.             ${$or} = "";
  282.         echo  "<td bgcolor='$bgcolor'><textarea rows=2 style='width: $widem;' name='Or".$w. "[$z]'>".stripslashes(${$or}[$x]). "</textarea></td>\n";
  283.         ${"cur".$or}[$z] = ${$or}[$x];
  284.         $z++;
  285.     }
  286.     $w++;
  287. }
  288.  
  289. ### Modify columns
  290. echo  "</tr><tr><td align='RIGHT'><b>Modify:</b></td>\n";
  291. $z=0;
  292. for($x = 0; $x < $col; $x++)
  293. {
  294.     if(isset($InsCol[$x]) && $InsCol[$x]== "on")
  295.     {
  296.         $curAndOrCol[$z]=$AndOrCol[$y];
  297.         if($AndOrCol[$z] ==  'or')
  298.         {
  299.             $chk[ 'or'] =  "checked";
  300.             $chk[ 'and'] =  "";
  301.         }
  302.         else
  303.         {
  304.             $chk[ 'and'] =  "checked";
  305.             $chk[ 'or'] =  "";
  306.         }
  307.         echo  "<td align=center>
  308.         <b>Or:</b>
  309.         <input type='radio' ".$chk[ 'or']. " name='AndOrCol[$z]' value='or'>
  310.         <b>And:</b>
  311.         <input type='radio' ".$chk[ 'and']. " name='AndOrCol[$z]' value='and'>
  312.         <br>Ins:
  313.         <input type='checkbox' name='InsCol[$z]'>
  314.           Del:
  315.         <input type='checkbox' name='DelCol[$z]'>
  316.         </td>\n";
  317.         $z++;
  318.     }
  319.     if(isset($DelCol[$x]) && $DelCol[$x]== "on")
  320.         continue;
  321.     $curAndOrCol[$z]=$AndOrCol[$y];
  322.     if(isset($AndOrCol[$z]) && $AndOrCol[$z] ==  'or')
  323.     {
  324.         $chk[ 'or'] =  "checked";
  325.         $chk[ 'and'] =  "";
  326.     }
  327.     else
  328.     {
  329.         $chk[ 'and'] =  "checked";
  330.         $chk[ 'or'] =  "";
  331.     }
  332.     echo  "<td align=center>
  333.     <b>Or:</b>
  334.     <input type='radio' ".$chk[ 'or']. " name='AndOrCol[$z]' value='or'>
  335.     <b>And:</b>
  336.     <input type='radio' ".$chk[ 'and']. " name='AndOrCol[$z]' value='and'>
  337.     <br>Ins:
  338.     <input type='checkbox' name='InsCol[$z]'>
  339.       Del:
  340.     <input type='checkbox' name='DelCol[$z]'>
  341.     </td>\n";
  342.     $z++;
  343. }
  344. echo  "</table>\n";
  345.  
  346. ### Other controls
  347. echo  "
  348. <table border=0><tr>
  349. <td valign='TOP'>
  350. <table border=0 align='LEFT' valign='TOP'><tr>
  351. <td rowspan='3' valign='TOP'>Use Tables:<br>
  352. <select name='TableList[]' size='7' multiple>";
  353.  
  354. while(list( $key, $val ) = each($tbl_names))
  355.     echo  "<option value='$key' $val>$key</option>\n";
  356. echo "</select></td>
  357. <td colspan='2' align='RIGHT' valign='BOTTOM'>\n";
  358. $w--;
  359. echo  "<input type='hidden' value='$db' name='db'>\n";
  360. echo  "<input type='hidden' value='$z' name='Columns'>\n";
  361. echo  "<input type='hidden' value='$w' name='Rows'>\n";
  362.  
  363. echo  "Add/Delete Criteria Row: <SELECT size=1 name='Add_Row'>
  364.   <OPTION value='-3'>-3</OPTION>
  365.   <OPTION value='-2'>-2</OPTION>
  366.   <OPTION value='-1'>-1</OPTION>
  367.   <OPTION selected value='0'>0</OPTION>
  368.   <OPTION value='1'>1</OPTION>
  369.   <OPTION value='2'>2</OPTION>
  370.   <OPTION value='3'>3</OPTION>
  371.   </SELECT>
  372.   </td></tr><tr><td colspan='2' align='RIGHT' valign='BOTTOM'>";
  373.  
  374. echo  "Add/Delete Field Columns: <SELECT size=1 name='Add_Col'>
  375.   <OPTION value='-3'>-3</OPTION>
  376.   <OPTION value='-2'>-2</OPTION>
  377.   <OPTION value='-1'>-1</OPTION>
  378.   <OPTION selected value='0'>0</OPTION>
  379.   <OPTION value='1'>1</OPTION>
  380.   <OPTION value='2'>2</OPTION>
  381.   <OPTION value='3'>3</OPTION>
  382.   </SELECT>
  383.   </td></tr><tr valign=top><td>";
  384. echo  "<input type='Submit' name='modify' value='Update Query'>\n";
  385. echo  "<input type='hidden' name='server' value='$server'>\n";
  386. echo  "</form></td><td>";
  387.  
  388. ### Generate a query
  389.  
  390. echo  "<form method='get' action='sql.php'>\n";
  391. echo  "<input type='hidden' name='server' value='$server'>\n";
  392. echo  "<input type='hidden' name='goto' value='db_details.php'>\n";
  393. echo  "<input type='hidden' name='db' value='$db'>\n";
  394. echo  "<input type='hidden' name='zero_rows' value='Your SQL-query has been executed successfully'>";
  395. echo  "<input type='submit' name='SQL' value='Submit Query'></td></tr></table></td><td>";
  396. echo  " SQL query on database <b>$db</b>:<br>";
  397. echo  "<textarea cols=30 rows=7 name='sql_query'>";
  398.  
  399. #   SELECT
  400. $last_select = 0;
  401. if(!isset($qry_select))
  402.     $qry_select = "";
  403. for($x=0; $x<$col; $x++)
  404. {
  405.     if($last_select && !empty($curField[$x]) && isset($curShow[$x]) && $curShow[$x]== 'on')
  406.         $qry_select .=  ", ";
  407.     if(!empty($curField[$x]) && isset($curShow[$x]) && $curShow[$x]== 'on')
  408.     {
  409.         $qry_select .= $curField[$x];
  410.         $last_select = 1;
  411.     }
  412. }
  413. if(!empty($qry_select))
  414.     echo  "SELECT ".$qry_select. "\n";
  415.  
  416. #   FROM
  417. if(!isset($TableList))
  418.     $TableList = array();
  419.  
  420. if(!isset($qry_from))
  421.     $qry_from = "";
  422. for($x=0; $x<sizeof($TableList); $x++)
  423. {
  424.     if($x)
  425.         $qry_from .=  ", ";
  426.     $qry_from .=  "$TableList[$x]";
  427. }
  428. if(!empty($qry_select))
  429.     echo  "FROM ".$qry_from. "\n";
  430.  
  431. #   WHERE
  432. $qry_where =  "(";
  433. for($x=0; $x<$col; $x++)
  434. {
  435.     if(!empty($curField[$x]) && !empty($curCriteria[$x]) && $x && isset($last_where))
  436.         $qry_where .= strtoupper($curAndOrCol[$last_where]);
  437.     if(!empty($curField[$x]) && !empty($curCriteria[$x]))
  438.     {
  439.         $qry_where .=  "($curField[$x] $curCriteria[$x])";
  440.         $last_where = $x;
  441.     }
  442. }
  443.  
  444. $qry_where .=  ")";
  445. # OR rows ${"cur".$or}[$x]
  446. if(!isset($curAndOrRow))
  447.     $curAndOrRow = array();
  448. for($y=0; $y<=$row; $y++)
  449. {
  450.     $qry_orwhere =  "(";
  451.     $last_orwhere =  "";
  452.     for($x=0; $x<$col; $x++)
  453.     {
  454.         if(!empty($curField[$x]) && !empty(${ "curOr".$y}[$x]) && $x)
  455.             $qry_orwhere .= strtoupper($curAndOrCol[$last_orwhere]);
  456.         if(!empty($curField[$x]) && !empty(${ 'curOr'.$y}[$x]))
  457.         {
  458.             $qry_orwhere .=  "($curField[$x] ".${ 'curOr'.$y}[$x]. ")";
  459.             $last_orwhere = $x;
  460.         }
  461.     }
  462.     $qry_orwhere .=  ")";
  463.     if($qry_orwhere != "()")
  464.         $qry_where .=  "\n".strtoupper(isset($curAndOrRow[$y]) ? $curAndOrRow[$y]: "").$qry_orwhere;
  465. }
  466.  
  467. if($qry_where != "()")
  468.     echo  "WHERE ".stripslashes($qry_where). "\n";
  469.  
  470. #   ORDER BY
  471. $last_orderby=0;
  472. if(!isset($qry_orderby))
  473.     $qry_orderby = "";
  474.  
  475. for ($x=0; $x<$col; $x++)
  476. {
  477.     if($last_orderby && $x && !empty($curField[$x]) && !empty($curSort[$x]))
  478.         $qry_orderby .=  ", ";
  479.     if(!empty($curField[$x]) && !empty($curSort[$x]))
  480.     {
  481.         $qry_orderby .=  "$curField[$x] $curSort[$x]";
  482.         $last_orderby = 1;
  483.     }
  484. }
  485.  
  486. if(!empty($qry_orderby))
  487.     echo  "ORDER BY ".$qry_orderby. "\n";
  488.  
  489. echo  "</textarea></form></td></tr></table>";
  490.  
  491. ?>
  492.  
  493. <?php
  494. require ( "footer.inc.php");
  495. ?>
  496.