Pagina 1 di 3

Ricerca dati in MySql e condizioni if in php

Inviato: 28/02/2016, 16:16
da stefanodelta
Innanzitutto ciao a tutti!!!
Anticipo che sono un neofita di php e mysql, e mi trovo a dover fare i conti con la mia incompetenza....

Vorrei creare una casella di testo che, all'inserimento, mi vada a completare la digitura (autocompletamento ) pescando i dati all'interno di una tabella che si chiama Comuni, composta da ID (chiave primaria), comune, cap, servizio.

Selezionando poi il tasto submit, dovrei controllare, all'interno del comune scelto, il valore del campo 'servizio' ed in base al risultato che ha questo campo (può essere null, avere valore '1', oppure valore'2') aprire con una serie di if tre diversi link html.

(in pratica qualcosa di molto simile a quello che si trova in ***.tariffa.it/copertura-rete-fissa/?ASID=LASTAMPA )

Ho effettuato la connessione al database, ed ho utilizzato un codice trovato online, ma mi trovo a dover risolvere dei problemi che questo mi genera:
innanzitutto la ricerca viene effettuata in modo "strano ", ovvero mi ricerca il contenuto all'interno di tutta la parola anzichè partendo dall'inizio (in pratica se io digito MI vorrei che mi uscissero solo i comuni che partono per MI, il codice ini questione invece mi mostra tutti i comuni che contengono le parole MI).
Non riesco poi a fare in modo che cliccando il pulsante Submit venga controllato il contenuto del campo 'servizio' della tabella comuni e di conseguenza aperta la pagina corrispondente.

Posto di seguito il codice che sto utilizzando e che sto tentando di modificare (composto da due file):

File Cerca.php

Codice: Seleziona tutto

 <?php
$server = "nomemioserver";
$user = "nomemioutentedb";
$password = "passworddb";
$database = "nomedatabase";
$mysqli = new MySQLi($server,$user,$password,$database);
if($mysqli->connect_error) {
  echo 'Database connection failed...' . 'Error: ' . $mysqli->connect_errno . ' ' . $mysqli->connect_error;
  exit;
} else {
  $mysqli->set_charset('utf8');
}
$term = trim(strip_tags($_GET['term'])); 
$a_json = array();
$a_json_row = array();
if ($data = $mysqli->query("SELECT * FROM comuni WHERE comune LIKE '%$term%'")) {
    while($row = mysqli_fetch_array($data)) {
        $name = htmlentities(stripslashes($row['comune']));
        $a_json_row["value"] = $name;
        $a_json_row["label"] = $name;
        array_push($a_json, $a_json_row);
    }
}
echo json_encode($a_json);
flush();
$mysqli->close();
?> 


File trova.html

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" />
<script>
$(document).ready(function($){
    $('#comuni').autocomplete({
    source:'cerca.php', 
    minLength:2
    });
});
</script>
</head>
<body>
<form method="post">
    <input type="text" id="comuni" name="comune" class="ui-autocomplete-input" />
    <input type="submit">
</form>
</body>
</html>
Edit by Sir Xiradorn: Codice racchiuso nel bbcode apposito per il coding con l'accezione del php cisto che ti tale tipologia è il codice suddetto

ringrazio tutti quelli che mi possono aiutare ;) ;)

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 28/02/2016, 16:44
da Sir Xiradorn
Iniziamo dalla prima cosa. Se fai

Codice: Seleziona tutto

$data = $mysqli->query("SELECT * FROM comuni WHERE comune LIKE '%$term%'") 
è ovvio che ti cerca tutte le parole che contengono il term da te identificato. Se vuoi invece che la ricerca parta dal principio hai due strade:
- potenzi la ricerca dicendo che quando fai il parse puoi dire di cercare se ci sono caratteri come ad esempio % o _ oppure * identificandoli come speciali
- soluzione veloce

Codice: Seleziona tutto

$data = $mysqli->query("SELECT * FROM comuni WHERE comune LIKE '$term%'") 
Sempicemnete la riceca avrà come inizio la parola da te cercata e dopo qualsiasi carattere trovato da 0 volte in poi (% da zero in poi || _ quasiasi carattere da 0 a 1 volta e per un solo e unico carattere)

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 28/02/2016, 17:06
da stefanodelta
Come potrei modificare il codice? Dovrei cambiare il LiKe term o aggiungere altre condizioni oltre quella?

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 28/02/2016, 18:57
da Sir Xiradorn
In che senso? Se osservi bene ho fatto una modifica piccola ma ci sta ovvero ho tolto un % all'inizio primo del $term

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 28/02/2016, 19:06
da stefanodelta
Ah ok scusami ma non avevo notato la modifica... ora provo

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 28/02/2016, 19:17
da stefanodelta
Con la tua modifica funziona perfettamente :D :D :D .
Qualche idea per il secondo punto? mi è stato consigliato una serie di if del tipo:

Codice: Seleziona tutto

if ($risposta == 0){
  header("location: tuapagina0.html");
}else if ($risposta == 1){
  header("location: tuapagina1.html");
}else if ($risposta == 2){
  header("location: tuapagina2.html")
}else{
  echo "Errore";
}
ma non so come associare al campo della selezione effettuata in autocompletamento una variabile da dare in pasto al php per lavorarla su pressione del pulsante submit in seguito. :?: :?:

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 29/02/2016, 12:03
da Sir Xiradorn
Questa risposta da dove la prenderebbe?

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 29/02/2016, 12:22
da stefanodelta
Dovrei associare una variabile risposta al campo servizio della tabella comuni filtrata per autocompletamento (in pratica, scegliendo il comune, la variabile risposta dovrebbe prendermi il valore contenuto nella cella servizio di quel comune selezionato, per lavorare poi con la serie di if) , ma proprio non saprei come fare.

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 29/02/2016, 12:56
da Sir Xiradorn
Mmm mi viene da pensare che faresti bene a lavorare con ajax. E fare questo in sostanza il valore presto da ajax viene passato tramite xhr o usare la più pulita e semplice $.ajax data da jquery.

Oppure devi non avere autocompletamento e semplifichi con un menu a tendina ad esempio. Ma le soluzioni sono diverse. Quanto sei pratico di queste cose? Così vediamo a che livello agire

Re: Ricerca dati in MySql e condizioni if in php

Inviato: 29/02/2016, 15:10
da stefanodelta
L'autocompletamento per me e' essenziale, non posso sotituirlo con una casella combinata. calcola però che di programmazione php sono a livello: autodidatta sottoterra :oops: ....
mi vergogno a dirlo ma è dal turbo pascal in poi che non programmo piu praticamente nulla :?