Visualizzazione risultati 1 fino 4 di 4

Discussione: Errore in query con Post Undefined index: search

  1. #1
    Guest

    Predefinito Errore in query con Post Undefined index: search

    Buongiorno a tutti stò provando a fare un campo di ricerca ma il file php mi da il seguente errore:

    Notice: Undefined index: search in C:\xampp\htdocs\fetch.php on line 7


    però effettivamente search è definito, vi faccio vedere:

    Questo è il file fetch.php, e nella query c'è il $_POST["search"]


    Codice PHP:
    <?php

    $connect
    = mysqli_connect('localhost', 'root','', 'testing');

    $output = '';

    $sql = "SELECT * FROM tbl_customer WHERE CustomerName LIKE '%".$_POST["search"]."%'";


    $result = mysqli_query($connect, $sql);

    if(
    mysqli_num_rows($result) > 0){
    $output .= '<h4 align="center">Risultati della ricerca</h4>';
    $output .= '<div class="table-responsive">
    <table class="table table bordered">
    <tr>
    <th>Customer Name</th>
    <th>Addres</th>
    <th>City</th>
    <th>Postal Code</th>
    <th>Country</th>
    </tr>'
    ;
    while (
    $row = mysqli_fetch_array($result)){
    $output .= '
    <tr>
    <td>'
    .$row["CustomerName"].'</td>
    <td>'
    .$row["Addres"].'</td>
    <td>'
    .$row["City"].'</td>
    <td>'
    .$row["PostalCode"].'</td>
    <td>'
    .$row["Country"].'</td>
    </tr>'
    ;
    }
    echo
    $output;

    }
    else{
    echo
    'nessun risultato per la ricerca selezionata';
    }
    ?>
    questo invece è il file html al cui interno è definita la chiamata ajax di jquery e se guardate nello script in basso troverete la funzione $.ajax() con all'interno il valore data:{search:txt} che appunto indica search che viene mandato al file php (credo)
    Codice HTML:
    <!DOCTYPE html>
    <html lang="it">
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <title> test ajax </title>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src='js/bootstrap.js'></script>
      <link href='css/bootstrap.css' rel='stylesheet'/>
    </head>
    <body>
    <div class='container'>
      <br />
      <h2 align='center'>Chiamata Ajax</h2>
       <div class="form-group">
         <div class='input-group'>
           <span class='input-group-addon'>Search</span>
           <input  type="text" name='search_text' id='search_text' placeholder="inserisci le lettere per avviare la ricerca" class="form-control" />
         </div>
       </div>
       <br />
       <div id='result'></div>
    </div>
    <script>
    $(document).ready(function(){
      $('#search_text').keyup(function){
        var txt= $(this).val();
        if (txt != ''){
          $.ajax({
            url:'fetch.php',
            method:'post',
            data:{search:txt},
            dataType:'text',
            seccess:function(data){
              $('#result').html(data);
            }
          });
        }else{
          $('#result').html('');
        }
      });
    });
    </script>
    </body>
    </html>

    Vi ringrazio in anticipo per l'attenzione e dato che non sò effettivamente se sia un errore del file php se credete che io stia sbagliando l'interpretazione dell'errore perche è in jquery ditemelo, grazie.


    Buona giornata a tutti.

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    È normale poiché non verifichi l'esistenza di quella variabile che può o non può essere presente dato che arriva da fonti esterne..
    https://www.targetweb.it/errore-php-...me-risolverlo/
    Ultima modifica di darbula : 24-01-2018 alle ore 15.51.11

  3. #3
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Controlla le parentesi qui:
    Codice:
    $('#search_text').keyup(function){
    Dovrebbe essere
    Codice:
    ...(function()
    Comunque, sostituendo il codice ajax come da documentazione:
    Codice:
    $.ajax({
    	method: "POST",
    	url: "fetch.php",
    	data: { name: txt }
    	})
    	.done(function( data ) {
    });
    dovrebbe funzionare.
    Quando utilizzi ajax, è molto utile utilizzare gli strumenti per sviluppatori presenti nel browser per monitorare le richieste.

    In ogni caso, qualsiasi dato $_POST dovresti controllarlo ed effettuare l'escape del contenuto per evitare attacchi sql injection.

    Ciao!
    Ultima modifica di alemoppo : 24-01-2018 alle ore 16.27.31

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Si manca una parentesi ... Ma comunque le variabili vanno sempre e comunque controllate
    Ultima modifica di darbula : 24-01-2018 alle ore 16.51.27

Regole di scrittura

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