Resultado busca PHP na mesma página só trazer resultados depois de clicar no botão

estou criando uma busca simples em PHP. Méu código é esse:

<title>Cidades</title>
<form method="POST">
    <input type="text" name="NOME" placeholder="Informe a cidade que deseja realizar a busca">
    <input type="submit" value="Buscar">
</form>
<?php
$servidor = "";
$usuario = "";
$senha = "";
$dbname = "";

$pesquisar = $_POST('NOME');
$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);
$result_cursos = "SELECT * FROM CIDADE WHERE NOME LIKE '%$pesquisar%' LIMIT 5";
$resultado_cursos = mysqli_query($conn, $result_cursos);
$dados = mysqli_query($conn, $result_cursos) or die(mysqli_error());
$linha = mysqli_fetch_assoc($dados);
$total = mysqli_num_rows($dados);
if($total > 0) {
    do {
        ?>
        <tr>
            <td><?=$linha('ID')?></td>
            <td><?=$linha('NOME')?></td>
        </tr>
        <?php
    }while($linha = mysqli_fetch_assoc($dados));
}
?>

Quando eu digito um pedaço ou o nome da cidade ele me retorna certinho:

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

O problema está assim que eu rodo, pois antes mesmo de eu digitar algo e clicar na busca, ele me retorna tudo o que eu tenho no banco e o seguinte erro:

inserir a descrição da imagem aqui

Como eu faço pra não ser executado assim que eu rodo, e somente quando eu digitar e clicar no botão para buscar?

Como editar formato de resultados en SQL SERVER

Existe alguna forma de dar formato especifico a un procedimiento almacenado en SQL?
tengo un procedimiento que me devuelve la cantidad total de:empleados, clientes, categorias y proveedores registrados en mi sistema.

Existe alguna forma de que si la cantidad es menor de 10 agregarle un “0” delante? osea, en vez de :

total de cliente: “1”, sea “01”

este es mi procedimiento

ALTER proc (dbo).(DashboardMANTENIMIENTOS)
@NCATEGORIAS INT OUT,
@NCLIENTES INT OUT,
@NPROVEEDORES INT OUT,
@NEMPLEADOS INT OUT
as
begin

SET @NCATEGORIAS= (select count (ID) as CantidadCategorias from Tab_categorias)
SET @NCLIENTES=( select count (ID) as CantidadClientes from Tab_clientes)
SET @NPROVEEDORES= (select count (ID) as CantidadProveedores from Tab_proveedores)
SET @NEMPLEADOS= (select count (ID) as CantidadEmpleados from Tab_empleados)

end

Gracias de antemano,

sum – Sumar resultados de una consulta

he realizado una consulta a las tablas en sql que me arroja el último registro, pero aún me falta realizar la suma total de los precios que me arroja la consulta.
por favor si me pueden ayudar con eso.

la consulta es la siguiente:
SELECT * FROM deporte INNER JOIN precios on deporte.producto = precios.producto where fecha = (select max(fecha) from deporte )
ese es el resultado que me arroja, pero no puedo hacer que sume

python – Como hago para que un ciclo while me de los resultados que ingreso?

Necesito que este codigo me imprima el valor de todas las monedas con sus respectivas cantidades y cotizaciones.

def esmoneda(cripto):
    criptos = ("btc","bcc","ltc","eth","etc")
    if cripto in criptos:
        return True
    else:
        return False

def esnumero(numero):
    return numero.replace('.','',1).isdigit()

i=0
while (i < 5):
    cripto=input("Ingrese el nombre de la moneda: ")
    if esmoneda(cripto):
        i=i+1
        cant = ""
        while not esnumero(cant):
            cant=input("Ingrese la cantidad de "+cripto+": ")
        cotiz = ""
        while not esnumero(cotiz):
            cotiz=input("Ingrese la cotización en USD de "+cripto+": ")
    else:
        print("Moneda invalida")

i=0
while i < 5:
    i=i+1
    print("Moneda: "+cripto+", Cantidad: "+cant+", Valor en USD: "+cotiz)

Esto como resultado me da el el último dato que ingreso x5 de manera repetida.

¿Cómo imprimir/mostrar resultados solo si una columna especifica tiene datos y no esta vacía o null MySQL/PHP?

Un producto en oferta se considera siempre en cuando exista en los registros un precio de hoy y un precio anterior para ello tengo dos columnas en mi tabla tbl_products que son: price_old y price.

Entonces desde una consulta deseo imprimir solo los productos que están en oferta para ello dicha columna debe tener valores registrados y si dicha columna esta vacía o nulo price_old entonces no mostrar productos, mostrar un mensaje personalizado donde diga “No existen ofertas por el momento”.

Tengo lo siguiente ya planteado, donde puedo mostrar productos cuando esta consulta exista un valor especifico pero en este caso no entiendo como se debería plantear, me podrían explicar como desarrollarlo.

$active = 1;

$stmt = $con->prepare("SELECT
                            id_product,
                                product,
                                price_old,
                                price
                            FROM tbl_products WHERE active=? ORDER BY id_product DESC LIMIT 5");


$stmt->bind_param("i",$active);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows>0) {
    $stmt->bind_result(
                    $id_product,
                    $product,
                    $price_old,
                    $price
                );
    while ($stmt->fetch()) {
        //ejecución
    }
} else {
    echo 'En estos momentos no existen productos en oferta';
}

Agrupar resultados mySQL

Boa noite, preciso fazer uma consulta na tabela abaixo:

tabela

Mas que me traga o resultado de quantos type = E , type = S agrupado por mês, esse resultado eu vou jogar em um gráfico que vai exibir por mês quantas entrada e saída;

Segue codigo pra criar a tabela :

CREATE TABLE `movements` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_product` int(11) NOT NULL,
  `id_user` int(11) NOT NULL,
  `type` enum('S','E') NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `movements_product_idx` (`id_product`),
  KEY `movements_user_idx` (`id_user`),
  CONSTRAINT `movements_product` FOREIGN KEY (`id_product`) REFERENCES `product` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `movements_user` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8;

Tentei esse código, está agrupando por mês mas não sei quantas type=’S’ ou ‘E’ tive nesse mês;

select count(id)Total, DATE_FORMAT (`date`,'%b') AS `mes` from movements group by month(date);

Se alguém souber como faz agradeço…

No se imprimen los resultados

soy nueva programando y necesito ayuda en este programa de interpolación de Lagrange, luego de realizar las operaciones necesarias cuando llega el momento de imprimir la respuesta la misma no muestra el valor de la variable correspondiente al resultado

    #include <iostream>
    #include <string>
        using namespace std;
    int main()
    {
    int cant,n;
    float x(101),y(101), xint,yint=0,r, num, den;
    cout<<"Cantidad de Puntos:" ;
    cin>>cant;
    cout<<"Ingrese los valores (x):"    <<"n";
    
    for(int i=1;i<=cant;i++){
        cin>>x(i);  }
    cout<<"Ingrese los valores (y):"<<"n"  ;
    for(int i=1;i<=cant;i++){
        cin>>y(i);  }
    cout<<"n Valor a Interpolar: ";    
    cin>>xint;
    //Fórmula lagrange
    for(int i=1;i>=n;i++){
        num=1;
        den=1;
        for(int j=1;j<=n;j++){
            if(i!=j){
                num=num*(xint-x(j));
                den=den*(x(i)-x(j));}}
                r=yint+(num/den)*yint;}
        cout<<"Y interpolada es:",r;
    
    system("pause");
return 0;   
}

python – Resultados diferentes en ndiffs de pmdarima (Series temporales)

estoy trabajando con series temporales. Tengo una serie temporal que claramente tiene un componente estacional y de tendencia. Cuando hago un test de raíz unitaria obtengo un p-valor de 0.98, indicando que no es estacionaria.

Pero cuando tomo las diferencas en pmdarima, los test de Philippe Perron yDickey Fuller devuelven 0, cuando claramente tiene tendencia. KPSS devuelve 1, lo que parece más razonable.

Por qué obtengo resultados diferentes? Significa que no tiene tendencia?

from pmdarima.arima.utils import ndiffs

difs_adf = ndiffs(train_, test = "adf")
difs_kpss = ndiffs(train_, test = "kpss")
difs_pp = ndiffs(train_, test = "pp")
print(difs_adf , difs_kpss , difs_pp)

Por otra parte, qué significa el parámetro “regression” en el test adf de stattools? Se usa “ct” cuando tiene tendencia? qué significa constante? Es sinónimo de heterocedasticidad?

from statsmodels.tsa.stattools import adfuller, kpss

adf = adfuller(train_, regression='ct', autolag='AIC')
print(f'ADF Statistic: {adf(0)}')
print(f'p-value: {adf(1)}')

introducir la descripción de la imagen aquí

sql – Como juntar os dois resultados usando COUNT de tabelas diferentes no postgreSQL

Eu tenho a coluna id_maquina em uma tabela tab_log_alertamaquina e na outra eu tenho id_maq_acao na tabela tab_user_acao_promo, ambas tem um valor em comum, me trazem o ID da máquina, estou usando o COUNT para extrair o total de cada coluna.

Não selecionar abaixo, me trás o total de retiradas que a máquina teve:

SELECT       id_maq_acao,
             COUNT(id_maq_acao) AS value_occurrence
    FROM     public.tab_user_acao_promo
    GROUP BY id_maq_acao
    ORDER BY value_occurrence DESC
    LIMIT  4  ;

Nesse select me retroceder o total de erros que a máquina teve:

SELECT       id_maquina,
             COUNT(id_maquina) AS value_occurrence
    FROM     public.tab_log_alertamaquina
    GROUP BY id_maquina
    ORDER BY value_occurrence DESC
    LIMIT    4;

Eu preciso unir esses resultado, Quantidade de erros X Quantidades de retiradas

Tentei usar o INNER JOIN, mas o mesmo está somando os resultados de erros com retiradas no COUNT

Select id_maquina,id_maq_acao,count(*) FROM public.tab_log_alertamaquina
INNER JOIN public.tab_user_acao_promo ON 
tab_user_acao_promo.id_maq_acao = tab_user_acao_promo.id_maq_acao
where "id_maquina" = "id_maq_acao" 
group by 
tab_user_acao_promo.id_maq_acao,
tab_log_alertamaquina.id_maquina
having count(*)>4
ORDER by count DESC

vue.js – Vuejs, al cambiar de pagina de los resultados obtenidos no se actualizan ciertas variables

tengo dos componentes, uno llamado : buscador y otro fichero-miniatura,
el buscador se encarga de de filtrar ficheros de forma asincrona segun lo que escriba en el buscador y cargarlos en su componente hijo fichero-miniatura.

Este buscador carga los resultados de forma dividida divididos por una paginación, es decir, si la busqueda da como resultado 10 ficheros, carga una paginación que muestra 3 de esos ficheros por pagina.
Cada fichero-miniatura tiene dos botones también, uno de borrado y otro de edición de nombre, el boton de cambiar nombre lo que hace es esconder el label y poner un input con dicho nombre para que el usuario ponga el nuevo nombre que desee, y abajo del input nuevo apareceran dos botones: ok (sy quieres confirmar el nuevo nombre) y Cancelar. Al guardar se queda el nuevo nombre sin problemas. Hasta aqui bien.

Recuerdan que dije que los resultados se dividian por paginación ? pues el problema comienza cuando pulso el boton de ir a otra pagina (ya sea boton de siguiente pagina o boton de ir a una pagina en concreto) . Al hacer eso,cuando quiera renombrar los ficheros que estaban en las otras paginas cargados con la misma busqueda me sale en la casilla de edición los nombre de los 3 ficheros de la primera pagina.

Por tanto si busco : ‘persona’ y obtengp 6 resultados (3 por página):

  persona-1 persona-2 persona-3               persona-4 persona-5 persona-6
 
  (pag-1)                                     (pag-2)

Entonces si edito la persona-4 me saldra en el input la persona-1, al editar la persona-5 me saldrá la persona-2,etc…

Pero cuando le doy a borrar y me sale la confirmacion de OK (borrar) o Cancelar, y entonces, ahora si, le doy a editar si sale bien el nombre. ¿Será por algo que hace el boton eliminar? Mi sugerencia para arreglar esto la pondre abajo del todo para pediros apoyo para hacerlo

Componente Vue buscador:

<template>
    <div>
        <div class="container" >
            <div class="row">
                <div class="col-lg-12 col-md-12">
                    <div class="form-group" style="position:relative;">
                        <gif-loading style="position:absolute; right:0;bottom:3px;right:3px; " :show="labelButtonAdvancedSearching === 'Buscando ..' ? true : false"></gif-loading>
                        <input class="form-control" type="text" @keyup="buscar" placeholder="Nombre del archivo que deseas bucar.." v-model="fileNameToFind">
                    </div>
                    <div class="text-right my-2">
                        <!-- <button class="btn btn-primary">Hola</button> -->
                        <button class="btn" :class="(labelButtonAdvancedSearching === 'Buscando ..' ? 'btn-warning' : 'btn-secondary')" @click="busqAv = !busqAv">{{labelButtonAdvancedSearching}}</button>
                    </div>
                    <div class=" rounded bg-primary p-3 sombra"  v-if="busqAv"  style="position:absolute;z-index:3;width:100%;">
                        <div class="form-group border bg-secondary text-light p-3" id="orden">
                            <h5>Orden.</h5>
                            <hr>
                            <div class="custom-control custom-radio">
                                <input type="radio" class="custom-control-input" id="orden_created_at_desc" name="order_created_at" checked>
                                <label class="custom-control-label" for="orden_created_at_desc">Por creación (de mas nuevo a mas antiguo)</label>
                            </div>
                            <div class="custom-control custom-radio">
                                <input type="radio" class="custom-control-input" id="order_create_at_asc" name="order_created_at">
                                <label class="custom-control-label" for="order_create_at_asc">Por creacion (de mas antiguo a mas nuevo)</label>
                            </div>
                            <div class="custom-control custom-radio">
                                <input type="radio" class="custom-control-input" id="order_word_desc" name="order_word" checked>
                                <label class="custom-control-label" for="order_word_desc">Alfabeticamente (A-Z)</label>
                            </div>
                            <div class="custom-control custom-radio">
                                <input type="radio" class="custom-control-input" id="order_word_asc" name="order_word">
                                <label class="custom-control-label" for="order_word_asc">Alfabeticamente (Z-A)</label>
                            </div>
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" id="defaultUnchecked">
                                <label class="custom-control-label" for="defaultUnchecked">Extension</label>
                            </div>
                        </div>
                        <div class="form-group border bg-secondary text-light p-3" id="tipo_archivo">
                            <h5>Tipo de archivo.</h5>
                            <hr>
                                <div class="custom-control custom-radio">
                                    <input type="radio" class="custom-control-input" id="all_tipo" name="filtro_tipo" checked>
                                    <label class="custom-control-label" for="all_tipo">Todos.</label>
                                </div>
                                <div class="custom-control custom-radio">
                                    <input type="radio" class="custom-control-input" id="documento" name="filtro_tipo">
                                    <label class="custom-control-label" for="documento">Documentos</label>
                                </div>

                                <div class="custom-control custom-radio">
                                    <input type="radio" class="custom-control-input" id="imagen" name="filtro_tipo">
                                        <label class="custom-control-label" for="imagen">Imagenes</label>
                                </div>

                        </div>
                        <div class="form-group border bg-secondary text-light p-3" id="tipo_extension">
                            <h5>Tipo de extensión.</h5>
                            <hr>
                                <div class="custom-control custom-checkbox">
                                    <input type="checkbox" class="custom-control-input" id="all" name="filtro_extension">
                                    <label class="custom-control-label" for="all">Todas.</label>
                                </div>
                                <div class="custom-control custom-checkbox">
                                    <input type="checkbox" class="custom-control-input" id="png" name="filtro_extension">
                                    <label class="custom-control-label" for="png">png</label>
                                </div>
                                <div class="custom-control custom-checkbox">
                                    <input type="checkbox" class="custom-control-input" id="jpg" name="filtro_extension">
                                    <label class="custom-control-label" for="jpg">jpg</label>
                                </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="container" id="advanced_searching_result">
            <div class="row">
                <div class="col-lg-4 col-md-12 col-sm-12  my-2" v-for="(file,index) in foundFiles('data')" :key="file+index">
                    <fichero-miniatura  :fichero_param="file" :root_dir="root_dir" ></fichero-miniatura>
                </div>
            </div>
        </div>
        <!-- Pagination -->
        <div class="container">
            <div class="row">
                <div class="col-12">
                     <nav>
                        <ul class="pagination">
                            <li class="page-item" v-show="foundFiles('prev_page_url')">
                                <a href="#" class="page-link" @click.prevent="getPreviousPage">
                                    <span>
                                        <span aria-hidden="true">«</span>
                                    </span>
                                </a>
                            </li>
                            <li class="page-item text-white" :class="{ 'active': (foundFiles('current_page')=== n) }" :key="n" v-for="n in foundFiles('last_page')">
                                <a href="#" class="page-link" @click.prevent="getPage(n)">
                                    <span >
                                        {{ n }}
                                    </span>
                                </a>
                            </li>
                            <li class="page-item" v-show="foundFiles('next_page_url')">
                                <a href="#" class="page-link" @click.prevent="getNextPage">
                                    <span>
                                    <span aria-hidden="true">»</span>
                                    </span>
                                </a>
                            </li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        props:('root_dir'),
        data(){
            return{
                fileNameToFind:'',
                busqAv:false,
                foundFiles:(),
                labelButtonAdvancedSearching:'Busqueda Avanzada',
                currentPage:1
            }
        },
        methods:{
            buscar(){
                console.log('Page : '+this.currentPage);
                this.labelButtonAdvancedSearching = 'Buscando ..';
                let that = this;
                let data = new FormData();
                data.append('file_name_to_find',this.fileNameToFind);

                 axios.post('/file/advanced_searching?page='+this.currentPage,data).then(
                    (response) => {
                        let data = response.data;
                        that.foundFiles = data.result;
                        that.labelButtonAdvancedSearching = 'Busqueda Avanzada';
                        console.log(that.foundFiles);
                    },
                    error=>{
                        console.log('Error al actualizar el nombre de la imagen');
                        that.labelButtonAdvancedSearching = 'Busqueda Avanzada';
                    }
                )
            },
            getPage(page){
                this.currentPage = page;
                this.buscar();

            },
            getPreviousPage(){
                this.currentPage--;
                this.buscar();
            },
            getNextPage(){
                this.currentPage++;
                this.buscar();
            },
        },

    }
</script>

Componente Vue fichero-miniatura:

<template>
    <div class="card" style="width: 18rem;"  title="">
        <a id="imagen" :href="'/fichero/'+fichero_param.id" target="_blank">
            <iconizador  :fichero_param="fichero_param" :root_dir="root_dir" ></iconizador>
        </a>
        <div class="card-body">
            <h6  v-if="!editableName" class="card-title" style="overflow-x: scroll; height:50px;">{{fichero_param.nombre_real}}</h6>
            <input  v-if="editableName" class="form-control-sm" v-model="newName" >

            <!-- Renombrar - Borrar -->
            <div id="botonera" v-if="!editableName && !deletableFile">
                <button @click="editableName = true" class="btn btn-sm btn-warning">Renombrar</button>
                <button @click="deletableFile = true" class="btn btn-sm  btn-danger">Borrar</button>
            </div>

            <!-- OK - Cancelar -->
            <div v-else class="mt-3">
                <button @click="newName=fichero_param.nombre_real;renameOrDelete" class="btn btn-sm btn-success">OK</button>
                <button @click="editableName = false; deletableFile = false; newName=fichero_param.nombre_real" class="btn btn-sm btn-danger">Cancelar</button>
            </div>
        </div>
    </div>
</template>

<style scoped>
    #imagen :hover{
        box-shadow:'30px 1px 5px blue';
        width:'80%';
        transition:0.5s;
        border-bottom-right-radius:30%;
        border: red  10px;

    }
</style>

<script>
    export default {
        props:
        {
            'fichero_param':{
                type:Object,
                default:{
                    nombre_real:'error'
                }
            },
            'root_dir':{
                type:String,
                default:''
            }
        },
        data(){
            return{
                fichero:{},
                editableName:false,
                deletableFile:false,
                newName:''
            }
        },
        methods:{
            renameOrDelete(){
                if (this.editableName) {
                    this.rename();
                } else {
                    this.delete();
                }
            },
            rename(){
                // console.log(this.fichero);
                let data = new FormData();
                data.append('file',this.fichero);
                data.append('new_name',this.newName);
                data.append('_method','patch');

                console.log('new name = '+this.newName);
                let that = this;
                axios.post('/fichero/'+this.fichero.id, data).then(
                    response => {
                        console.log('response.data');
                        console.log(response.data);
                        let data = response.data;

                        if (data.result === true) {
                            // that.fichero = data.file
                            console.log('that.newName = '+that.newName);
                            that.fichero.nombre_real = that.newName;
                            that.editableName = false;
                        }
                    },
                    error=>{
                        console.log('Error al actualizar el nombre de la imagen');
                    }
                )
            },
            delete(){
                console.log('delete !');
                axios.delete('/fichero/'+this.fichero.id).then(
                    response => {
                        console.log('response.data');
                        console.log(response.data);
                        let data = response.data;

                    },
                    error=>{
                        console.log('Error al actualizar el nombre de la imagen');
                    }
                )
            }
        },
         beforeMount() {
                this.fichero = this.$props.fichero_param;
                this.newName = this.fichero.nombre_real;
            }
    }
</script>

Como decia al principio el **boton eliminar hace algo que lo arregla**:

        <button @click="editableName = false; deletableFile = false; newName=fichero_param.nombre_real" class="btn btn-sm btn-danger">Cancelar</button>

En concreto es esto: newName=fichero_param.nombre_real entonces creo que puede ser que al cambiar de pagina se quede desactualizada esa var, ¿Podria hacer como un evento de padre a hijo para que recargara eso? Se que para pasar info de padre a hijo es por props pero no hay algun evento que se desencadeene al clickar en una pagina y actualizar eso ??

Un saludo.