Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560

    funzione per visualizzare lettere maiuscole/minuscole

    Nel database i nomi sono elencati con la prima lettera in Maiuscolo.
    Così com'è il codice php mi elenca dalla tabella "persone" i nomi dopo la digitalizzazione della seconda lettera e solo 10 risultati.
    Dovrei (digitando o in minuscolo o in MAIUSCOLO) far visualizzare i nomi contenuti nel campo.
    Esiste una fonzione?

    Codice PHP:
    <?php

    $link 
    mysql_connect('localhost''db''passw');
    mysql_query("SET NAMES 'utf8';");
    if (!
    $link) {
       die(
    'Could not connect: ' mysql_error());
    }
    if (!
    mysql_select_db("db")) {
       echo 
    "Unable to select mydbname: " mysql_error();
       exit;
    }

    $result mysql_query("SELECT nome FROM  persone WHERE nome LIKE '$part%' LIMIT 10");
    while (
    $row mysql_fetch_assoc($result)) {
               
    $colors[]=$row['nome'];
    }
    mysql_free_result($result);
    mysql_close($link);

    $part $_GET['part'];
    $length strlen($part);
    // check the parameter
    if(isset($_GET['part']) and $_GET['part'] != ” and $length 1)
    {
        
    // initialize the results array
        
    $results = array();

        
    // search colors
        
    foreach($colors as $color)
        {
            
    // if it starts with 'part' add to results
            
    if( strpos($color$_GET['part']) === ){
                
    $results[] = $color;
            }
        }

        
    // return the array as json with PHP 5.2
        
    echo json_encode($results);
    }
    ?>
    grazie mille

  2. #2
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560
    ho provato inserendo la funzione strtoupper ma non funziona cosa sbaglio?

    Codice PHP:
    <?php
    $part 
    $_GET['part'];
    $part=strtoupper($part);

    $link mysql_connect('localhost''db''passw');
    mysql_query("SET NAMES 'utf8';");
    if (!
    $link) {
       die(
    'Could not connect: ' mysql_error());
    }
    if (!
    mysql_select_db("db")) {
       echo 
    "Unable to select mydbname: " mysql_error();
       exit; 
    }

    $result mysql_query("SELECT nome FROM  persone WHERE nome LIKE '$part%' LIMIT 10");
    while (
    $row mysql_fetch_assoc($result)) {
               
    $colors[]=$row['nome'];
    }
    mysql_free_result($result);
    mysql_close($link);


    $length strlen($part);
    // check the parameter
    if(isset($_GET['part']) and $_GET['part'] != ” and $length 1)
    {
        
    // initialize the results array
        
    $results = array();

        
    // search colors
        
    foreach($colors as $color)
        {
            
    // if it starts with 'part' add to results
            
    if( strpos($color$_GET['part']) === ){
                
    $results[] = $color;
            }
        }

        
    // return the array as json with PHP 5.2
        
    echo json_encode($results);
    }
    ?>
    la pagina dove c'è il campo text input è

    codice:
    <script src="jquery.js" type="text/javascript"></script>
    <script src="dimensions.js" type="text/javascript"></script>
    <script src="autocomplete.js" type="text/javascript"></script>
    
    <script type="text/javascript">
    	$(function(){
    	    setAutoComplete("searchField", "results", "autocomplete.php?part=");
    	});
    </script>
    </head>
    
    <body>
    	<h1>Ajax autocomplete using PHP &amp; MySQL</h1>
    	<p id="auto">
    		<label>Colors: </label>
    		<input id="searchField" name="searchField" type="text" />
    	</p>	
    	
    </body>

  3. #3
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560
    up

  4. #4
    Ciao,
    scusa non capisco bene il problema.
    E' la query che non ti riporta i corretti risultati? o il php che non li stampa a causa di quell'if?

    nel primo caso usa la parola "binary" prima del campo, es:

    codice:
    $result = mysql_query("SELECT nome FROM  persone WHERE binary  nome LIKE '$part%' LIMIT 10");
    se invece il problema è nel php, la funzione stripos compara due stringhe in modo case-insensitive.

    Scusa ma non riesco a capire senza studiare riga per riga tutto il codice (cosa che ora non posso fare =))

  5. #5
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560
    Ciao, grazie della risposta.

    Lo script così com'è ora funziona bene, solo che digitando nel campo text le iniziali della parola in minuscolo non me li visualizza,
    mentre se digito la parola con la prima lettera in Maiuscolo e le altre lettere in minuscolo me le visualizza.

    mi sono spiegato bene?

    ho aggiunto "binary" ma non funziona

  6. #6
    Hai provato ad usare stripos invece di strpos?

    Poi perché fai un doppio controllo?

    Da quel che ho capito fai una query prendendo tutte le persone che cominciano per $part. Ammettiamo che comincino per "Ma". La query ti risponde una lista di nomi:
    Mario, Maria, Marica, Mauro.

    Poi nel php controlli ancora che questi nomi comincino per Ma. E' un controllo superfluo, o no?

    In ogni caso se usi stripos dovrebbe fare un controllo case insensitive.

  7. #7
    Utente di HTML.it L'avatar di Lino80
    Registrato dal
    Oct 2005
    Messaggi
    1,560
    Cavolo effettivamente si doveva usare stripos, ora funziona perfettamente digitando sia in MAIUSCOLO che minuscolo... grazie mille

    ps. un controllo è anche per la visualizzazione dei nomi digitando almeno 2 lettere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.