Visualizzazione risultati 1 fino 4 di 4

Discussione: live search e db mysql non mi visualizza tutti i dati della tabella ma solo alcuni

  1. #1
    love4music non è connesso Utente AlterBlog
    Data registrazione
    23-12-2018
    Messaggi
    20

    Predefinito live search e db mysql non mi visualizza tutti i dati della tabella ma solo alcuni

    Salve ho integrato nel mio sito un live search preso da interne e fatte le modifiche di nome database e tabelle dati connessione database ecc. Noto che quando faccio la ricerca mi trova alcuni risultati ed altri no. Pur sapendo che nel database ci sono, non capisco da cosa dipenda. Qualcuno mi può aiutare.
    Questo è la pagina di ricerca https://love4music.altervista.org/ricerca3/ questo è il codice che ho integrato https://www.webslesson.info/2018/10/...-with-php.html
    Se provate a cercare esempio Lucio Battisti non lo trova ma se cercate Leda Battisti la trova, oppure se cercate Laura Pausini non la trova mentre quando cercate Leda Battisti vede che Laura Pausini c'è perhcè qualche lettera di Leda si trova nel titolo. Fate delle prove per capire.
    La tabella contiene più di 34000 righe con tutti i più famosi artisti italiani e stranieri. Grazie
    Ps Ho generato la tabella nel db mysql con il plug in MySql for Excel e dopo averla generata e importata su phpmyadmini in locale lo importata qui nel sito.
    Poi se qualcuno mi può suggerire se c'è un modo per sincronizzare il file excel con la tabella on line del DB grazie ancora.
    Ultima modifica di love4music : 14-03-2019 alle ore 19.27.03

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,771

    Predefinito

    Fondamentalmente stai dicendo che la live search che hai scelto di utilizzare non soddisfa i tuoi requisiti, oppure che hai sbagliato qualcosa nell'implementazione. Nel primo caso puoi cercare di modificare il codice o cercarne uno diverso. Nel secondo bisogna vedere il codice.

    Poi se qualcuno mi può suggerire se c'è un modo per sincronizzare il file excel con la tabella on line del DB grazie ancora.
    Puoi importare il file Excel in PHPMyAdmin, se ricordo bene anche in quello installato su AlterVista è possibile. Altrimenti puoi esportarlo in CSV o simili da Excel ed importare quello, non serve passare per una base di dati locale.
    Modi per eseguire una vera sincronizzazione non ce ne sono, Excel non nasce per questo, quello che ci puoi fare è quindi piuttosto limitato. Potresti pensare ad uno script con cui caricare il foglio Excel, leggerlo in PHP, decodificarlo, e sincronizzare le informazioni con la base di dati, costruendoti le query a mano.
    Fattibile, ma è molto più efficace fare il contrario: gestire tutto da MySQL e prevedere un pulsante "esporta in Excel" da usare al bisogno, magari appoggiandoti a qualche libreria.

    I suggerimenti che do più spesso:


  3. #3
    love4music non è connesso Utente AlterBlog
    Data registrazione
    23-12-2018
    Messaggi
    20

    Predefinito

    Grazie per la risposta, diciamo che mi soddisfa se funzionasse bene, non capisco il perchè alcune cose le trova ed altre no, se il codice non funzionasse non dovrebbe trovare nulla. Metto sotto il codice del file Index.php e del file fetch.php
    Questo il file Index2.php
    <?php /* Template Name: Ricerca3 */ ?>

    <?php materialis_get_header();?>

    <div <?php echo materialis_page_content_atts("page-content"); ?>>
    <div class="<?php materialis_page_content_wrapper_class(); ?>">
    <?php
    while ( have_posts() ) : the_post();
    get_template_part( 'template-parts/content', 'page' );
    endwhile;
    ?>
    </div>
    </div>
    <?php

    //index2.php

    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Archivio Singoli ricerca per Artista o Titolo brano</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
    <style>
    .form_style
    {
    width: 600px;
    margin: 0 auto;
    }
    </style>
    </head>
    <body>

    <div class="container" ng-app="live_search_app" ng-controller="live_search_controller" ng-init="fetchData()">
    <br />
    <h3 align="center">Archivio Singoli ricerca per Artista o Titolo brano</h3>
    <br />
    <div class="form-group">
    <div class="input-group">
    <span class="input-group-addon">Cerca</span>
    <input type="text" name="search_query" ng-model="search_query" ng-keyup="fetchData()" placeholder=" Scrivi il nome dell'artista o il titolo del brano" class="form-control" />
    </div>
    </div>
    <br />
    <table class="table table-striped table-bordered">
    <thead>
    <tr>
    <th>Autore</th>
    <th>Titolo e note</th>
    <th>Tipo</th>
    <th>Sincro</th>
    <th>Data</th>
    </tr>
    </thead>
    <tbody>
    <tr ng-repeat="data in searchData">
    <td>{{ data.Autore }}</td>
    <td>{{ data.Titolo_e_note }}</td>
    <td>{{ data.Tipo }}</td>
    <td>{{ data.Sincro }}</td>
    <td>{{ data.Data }}</td>
    </tr>
    </tbody>
    </table>
    </div>

    </body>
    </html>

    <script>
    var app = angular.module('live_search_app', []);
    app.controller('live_search_controller', function($scope, $http){
    $scope.fetchData = function(){
    $http({
    method:"POST",
    url:"https://love4music.altervista.org/wp-content/themes/materialis-child/fetch.php",
    data:{search_query:$scope.search_query}
    }).success(function(data){
    $scope.searchData = data;
    });
    };
    });
    </script>

    <?php get_footer();
    Questo il file fetch.php
    <?php

    //fetch.php


    $connect = new PDO("mysql:host=localhost;dbname=my_love4music", "love4music", "miapassword");

    $form_data = json_decode(file_get_contents("php://input"));

    $query = '';
    $data = array();

    if(isset($form_data->search_query))
    {
    $search_query = $form_data->search_query;
    $query = "
    SELECT * FROM archivio_singoli
    WHERE (Autore LIKE '%$search_query%'
    OR Titolo_e_note LIKE '%$search_query%'
    OR Tipo LIKE '%$search_query%'
    OR Sincro LIKE '%$search_query%'
    OR Data LIKE '%$search_query%')

    ";
    }
    else
    {
    $query = "SELECT * FROM archivio_singoli ORDER BY Autore ASC";
    }

    $statement = $connect->prepare($query);

    if($statement->execute())
    {
    while($row = $statement->fetch(PDO::FETCH_ASSOC))
    {
    $data[] = $row;
    }
    echo json_encode($data);
    }

    ?>
    Allego uno screenshot del mio phpmyadmym e delle tabella interessata e di una ricerca fatta come Battisti
    Se mi potresti perfatore indicare se c'è qualche errore o altro ti sarei grato.

    https://1drv.ms/u/s!AizDCHlPaiQxgcUO-OtPk3QLpsIiYA
    Ultima modifica di love4music : 14-03-2019 alle ore 19.18.13

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,771

    Predefinito

    se il codice non funzionasse non dovrebbe trovare nulla
    Dipende da cosa intendi per "funzionare" . Se ti accontenti di "eseguirlo non fa esplodere il computer" allora non ci sono problemi. Se vuoi che ti dia anche i risultati corretti bisogna alzare gli standard!

    Se provate a cercare esempio Lucio Battisti non lo trova ma se cercate Leda Battisti la trova, oppure se cercate Laura Pausini non la trova mentre quando cercate Leda Battisti vede che Laura Pausini c'è perhcè qualche lettera di Leda si trova nel titolo
    La parte del codice che esegue la ricerca è questa:
    Codice PHP:
    $query "
    SELECT * FROM archivio_singoli
    WHERE (Autore LIKE '%
    $search_query%'
    OR Titolo_e_note LIKE '%
    $search_query%'
    OR Tipo LIKE '%
    $search_query%'
    OR Sincro LIKE '%
    $search_query%'
    OR Data LIKE '%
    $search_query%')
    "
    ;
    ...
    $statement $connect->prepare($query);
    if (
    $statement->execute())
    {
    ...

    Anche se a prima vista sembra ragionevole, ci sono due cose poco chiare:
    • i valori di ritorno dei metodi prepare ed execute non sono controllati in maniera opportuna, se le interrogazioni falliscono per un problema nella query questo non verrà mai segnalato e diventa difficile capire cosa succede
    • o stai usando LIKE su un campo di tipo DATETIME, che non va bene, o hai resto il campo Data di tipo CHAR che, sebbene accettabile, non è del tutto corretto


    La priorità dovrebbe essere tenere traccia di eventuali errori nei metodi prepare ed execute. Puoi restituirli nel JSON indicando che si tratta di un errore, oppure scriverli in un file di log.

    Se non ci sono errori dovresti lanciare manualmente la query da PHPMyAdmin per capire bene cosa succede.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •