За последние 24 часа нас посетили 20980 программистов и 1107 роботов. Сейчас ищут 457 программистов ...

проблема с запросом

Тема в разделе "JavaScript и AJAX", создана пользователем riaron, 20 сен 2020.

  1. riaron

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

    С нами с:
    1 окт 2014
    Сообщения:
    247
    Симпатии:
    4
    Код (Javascript):
    1. app.get('/smart', function(req, res) {
    2.  
    3.     var order;
    4.     var side;
    5.     var prmin;
    6.     var prmax;
    7.     order=req.cookies.sett;
    8.     if(order=='price'){
    9.         side=req.cookies.sideprice;
    10.     }else if(order='popularity'){
    11.         side=req.cookies.sidepopularity;
    12.     }else if(order='tsale'){
    13.         side='tsale';
    14.     }
    15.     if(!order){order='name';}
    16.     if(!side){side='ASC';}
    17.     var query;
    18.     var smartphopneList=[];
    19.  
    20.     // Connect to MySQL database.
    21.     var connection = getMySQLConnection();
    22.     // Do the query to get data.
    23.  
    24.  
    25.  
    26.     connection.connect();
    27.     quer='SELECT `id`,`prod`,`name`,`description`,`photo`,`price`,`popularity`,`sale`,(`price` -`price` / 100 * `sale`)  AS `tsale` FROM `smartphone` ORDER BY `tsale` ASC';
    28.     connection.query(quer, function(err, rowes, fields) {
    29.  
    30.               // Loop check on each row
    31.               prmin=rowes[0].tsale;
    32.               prmax=rowes[(rowes.length-1)].tsale;
    33.        
    34.           // Render index.pug page using array
    35.        
    36.     });
    37.     if(req.cookies.prmin==true){
    38.         prmin=req.cookies.prmin;
    39.     }
    40.     if(req.cookies.prmax==true){
    41.         prmax=req.cookies.prmax;
    42.     }
    43.         query='SELECT `id`,`prod`,`name`,`description`,`photo`,`price`,`popularity`,`sale`,(`price` -`price` / 100 * `sale`)  AS `tsale` FROM `smartphone` WHERE `price` >= '+prmin+' AND `price` <= '+prmax+' ORDER BY '+order +' '+side;
    44.     connection.query(query, function(err, rows, fields) {
    45.           if (err) {
    46.               res.status(500).json({"status_code": 500,"status_message": "internal server error"});
    47.               console.log(err);
    48.           } else {
    49.               // Loop check on each row
    50.               for (var i = 0; i < rows.length; i++) {
    51.  
    52.                   // Create an object to save current row's data
    53.                   var smartphopne = {
    54.                       'id':rows[i].id,
    55.                       'prod':rows[i].prod,
    56.                       'name':rows[i].name,
    57.                       'photo':rows[i].photo,
    58.                       'description':rows[i].description,
    59.                       'price':rows[i].price,
    60.                       'sale':rows[i].sale,
    61.                       'len':rows.length,
    62.                     'tsale':rows[i].tsale,
    63.                     'prmin':prmin,
    64.                     'prmax':prmax,
    65.  
    66.                      
    67.                   }
    68.                   // Add object into array
    69.                   smartphopneList.push(smartphopne);
    70.               }
    71.           // Render index.pug page using array
    72.           res.render('index', {"smartphopneList": smartphopneList});
    73.           }
    74.     });
    75.  
    76.     // Close the MySQL connection
    77.     connection.end();
    78.    
    79. });
    вот ошибка: бд есть значения но почему то не выводит. поменял значения вручную, запрос выдает значения во вью а в запросе пишет undefined. когда втавляю в typeof тоже пишет number
    Код (Javascript):
    1. Error: ER_BAD_FIELD_ERROR: Unknown column 'undefined' in 'where clause'
    2.   at Query.Sequence._packetToError (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
    3.   at Query.ErrorPacket (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\sequences\Query.js:79:18)
    4.   at Protocol._parsePacket (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    5.   at Parser._parsePacket (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\Parser.js:433:10)
    6.   at Parser.write (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\Parser.js:43:10)
    7.   at Protocol.write (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\Protocol.js:38:16)
    8.   at Socket.<anonymous> (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\Connection.js:88:28)
    9.   at Socket.<anonymous> (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\Connection.js:526:10)
    10.   at Socket.emit (events.js:315:20)
    11.   at addChunk (_stream_readable.js:295:12)
    12.   --------------------
    13.   at Protocol._enqueue (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    14.   at Connection.query (C:\xampp\htdocs\mysite.local\node_modules\mysql\lib\Connection.js:198:25)
    15.   at C:\xampp\htdocs\mysite.local\app.js:161:13
    16.   at Layer.handle [as handle_request] (C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\layer.js:95:5)
    17.   at next (C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\route.js:137:13)
    18.   at Route.dispatch (C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\route.js:112:3)
    19.   at Layer.handle [as handle_request] (C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\layer.js:95:5)
    20.   at C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\index.js:281:22
    21.   at Function.process_params (C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\index.js:335:12)
    22.   at next (C:\xampp\htdocs\mysite.local\node_modules\express\lib\router\index.js:275:10) {
    23.   code: 'ER_BAD_FIELD_ERROR',
    24.   errno: 1054,
    25.   sqlMessage: "Unknown column 'undefined' in 'where clause'",
    26.   sqlState: '42S22',
    27.   index: 0,
    28.   sql: 'SELECT `id`,`prod`,`name`,`description`,`photo`,`price`,`popularity`,`sale`,(`price` -`price` / 100 * `sale`)  AS `tsale` FROM `smartphone` WHERE `price` >= undefined AND `price` <= undefined ORDER BY popularity ASC'
    29. }[code]
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    У вас не определены prmin ,и prmax
    Скорее всего читаете кук, а Кук там ещё нет. На этот случай надо какое то значение по умолчанию
    А ещё лучше формировать часть условия динамически... Если есть мин и Макс то формировать условие иначе нет
     
  3. riaron

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

    С нами с:
    1 окт 2014
    Сообщения:
    247
    Симпатии:
    4
    вот вю
    Код (Javascript):
    1. html
    2.     head
    3.         title= 'Smartphones'
    4.         style
    5.             include style.css
    6.             include bootstrap.css
    7.             include index.js
    8.  
    9.     body(style="background-image:'../background/background.jpg'")
    10.         table(class='index top')
    11.             tr
    12.                 td
    13.                     a(style="color:green;margin-left:200px;border:1px solid black;padding:4px;")="Сортировать по: "
    14.                     a(href='http://localhost:3000/set-cookie/price/smart/' style='color:black;border:1px solid black;padding:4px;border-radius:3px;font-weight:bold;margin-left:5px')=" По Цене"
    15.                     a(href='http://localhost:3000/set-cookie/tsale/smart/' style='color:white;border:1px solid black;background-color:blue;padding:4px;border-radius:3px;font-weight:bold;margin-left:5px')=" По Размеру Скидки"
    16.                     a(href='http://localhost:3000/set-cookie/popularity/smart/' style='color:white;border:1px solid black;white;background-color:red;padding:4px;border-radius:3px;font-weight:bold;margin-left:5px')=" По Популярности "
    17.         table(class='index')
    18.             tr
    19.                 td(style='width:200px;height:50px;')
    20.                 td(style='width:700px;height:50px;')
    21.                 td(style='width:150px;height:50px;')
    22.                 td(class='rightfacet' rowspan=smartphopneList.length+1 style='height:50px;')
    23.                     table(class='menu' style='width:350px')
    24.                         tr
    25.                             td
    26.                                 b="Цена"
    27.                             td
    28.                         tr
    29.                             td="Мин."
    30.                                 input(id='prmin' class='bradius' onblur="" type="text" name="prmin" placeholder="" value=''+smartphopneList[0].prmin onclick='jsprmin()')
    31.                             td="Макс."
    32.                                 input(id="prmax" class='bradius' type="text" name="prmax" placeholder="" value=''+smartphopneList[0].prmax  onclick='jsprmax()')
    вот index.js
    Код (Javascript):
    1. function jsprmin(){
    2.     var a=document.getElementById("prmin").value;
    3.     document.location.href = "http://localhost:3000/set-menu-cookie/prmin/"+a+"/";
    4. }
    5. function jsprmax(){
    6.     var a=document.getElementById("prmax").value;
    7.     document.location.href = "http://localhost:3000/set-menu-cookie/prmax/"+a+"/";
    8. }
    если вставить index.js в конце
    то тупо после инпутов пишется код функций jsprmin() и 'jsprmax()