How can you fill a Select box from a database using MySQL and NodeJS?

Viewed 35

I am fairly new to ReactJS and Backend programming in general. I am making a project where I need to show options to the user from a database I created, but nothing seems to be working. I made a static version where "clase 1, clase 2, clase 3" are supposed to be gotten from a database

I've tried everything, if I make it a PHP page it just keeps downloading itself instead of showing on screen.

this is my login.js code

var mysql = require('mysql');
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var path = require('path');

const crypto = require('crypto')
let salt = ''
let alumn = "@uni.pe";
let profe = "@uni.edu.pe";
var connection = mysql.createPool({
  connectionLimit : 10,
  host     : '',
  user     : '',
  password : '',
  database : ''
});
var app = express();
app.use(session({
  secret: '',
  resave: true,
  saveUninitialized: true
}));
app.use(bodyParser.urlencoded({extended : true}));
app.use(bodyParser.json());

app.get('/', function(request, response) {
  response.sendFile(path.join(__dirname + '/login.html'));
});
app.get('/home', function(request, response) {
  if (request.session.loggedin) {
    response.sendFile(path.join(__dirname + '/Cursos.html'));
  } else {
    response.send('Please login to view this page!');
  }
});
app.get('/notas', function(request, response) {
  if (request.session.loggedin) {
    response.sendFile(path.join(__dirname + '/notas.html'));
  } else {
    response.send('Please login to view this page!');
  }
});
app.post('/reg', function(request, response) {
  let hash = ;
  let verAl = request.body.correoreg.indexOf(alumn);
  let verPr = request.body.correoreg.indexOf(profe);
  let tipo = "";
  if(verAl!=-1) tipo="Alumno";
  else if(verPr!=-1) tipo="Profesor";
  if (tipo!=""){
    var users={
          "Nombre":request.body.nombrereg,
          "Contrasenia":hash,
          "CorreoUNI":request.body.correoreg,
          "TipoUsuario":tipo
        }
        connection.query('INSERT INTO usuario SET ?',users, function (error, results, fields) {
          if (error) {
            response.send('El correo ya ha sido registrado u ocurrió un error interno.')
          } else {
            response.redirect('/');
            }
        });
    }
  else{
      response.redirect('/');
  }
});
app.get('/logout', function(request, response, next) {
  if (request.session) {
    // delete session object
    request.session.destroy(function (err) {
      if (err) {
        return next(err);
      } else {
        return response.redirect('/');
      }
    });
  }
});
app.post('/upload', function(request, response) {
  let idprovisional=5;
  var nuevaclase={
          "IdCurso":idprovisional,
          "NroSemana":request.body.nroSemana,
          "Contenido":request.body.linkclass,
          "Descripcion":request.body.classdescription,
          "nombre_clase":request.body.classname
        }
        connection.query('INSERT INTO clases SET ?',nuevaclase, function (error, results, fields) {
          if (error) {
            response.send({
              "code":400,
              "failed":"error ocurred"
            })
          } else {
            response.redirect('/home');
            }
        });
});
app.post('/auth', function(request, response) {
  var correo = request.body.correo;
  var password = ;
  if (correo && password) {
    connection.query('SELECT * FROM usuario WHERE CorreoUNI = ? AND Contrasenia = ?', [correo, password], function(error, results, fields) {
      if (results.length > 0) {
        request.session.loggedin = true;
        request.session.correo = correo;
        response.redirect('/home');
      } else {
        response.send('Incorrect Username and/or Password!');
      }     
    });
  } else {
    response.send('Please enter Username and Password!');
  }
});


app.listen(3000);

And this is part of the html I use for the "home" page (which is the screenshot I posted):

  <select id="clases" name="select" onchange="funcionclase()">
    <option value="Clase1">Clase 1</option>
    <option value="Clase2" selected>Clase 2</option>
    <option value="Clase3">Clase 3</option>
  </select>

  <a data-target="#myModal" data-toggle="modal" href="#myModal" id="myBtn" style="display:inline-block; text-decoration:none; color:#5F3A32; margin-right:20px;"><h6>Subir Material</h6></a>
<p id="materialclase"></p>
<?php include 'conexiones.php';?> //this line is not doing anything!

I'll also include the php file I was trying to import when I gave up converting the original html into php (I'm deleting the credentials for security purposes):

<?php
$servername = "";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT IdClase, nombre_clase, Descripcion FROM clases";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<br> id: ". $row["IdClase"]. " - Name: ". $row["nombre_clase"]. " " . $row["Descripcion"] . "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>
0 Answers
Related