Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: array da mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128

    array da mysql

    Ciao! ho trovato in rete un esempio per l'autosuggerimento, in cui i campi erano inseriti manualmente nel file stesso.

    Ho provato a cambiarlo facendo l'array da mysql, ma non funzia (non sono ferratissimo di php)..o meglio: funziona, ma mi fa vedere solo il primo valore nel db, e per giunta due volte .

    si accettano aiuti..questo il codice originale, funzionante con l'array manuale

    codice:
    <?php
    $input=$_POST['nome-regione'];
    
    $regioni = array("Abruzzo", "Basilicata","Calabria","Campania","Emilia-Romagna","Friuli-Venezia Giulia","Lazio","Liguria","Lombardia","Marche","Molise","Piemonte","Puglia","Sardegna","Sicilia","Toscana","Trentino-Alto Adige","Umbria","Valle d'Aosta","Veneto");
    echo "<ul class=\"autosuggest\">";
    
    if($input !== ''){
       foreach($regioni as $chiave => $valore)
        {
            if(ereg($input,$valore))
            {
                echo "[*]<div>$valore</div>";
            }
        }
    	}
    	echo "[/list]";
    	
    	?>
    io ho inserito la connessione al db

    codice:
    <?php
    $input=$_POST['nome-regione'];
    
    mysql_connect("xxxxx", "xxxx", "") or die(mysql_error());
    mysql_select_db("materiale") or die(mysql_error());
    $query="SELECT articolo FROM articoli";
    $result = mysql_query($query);
    $row = mysql_fetch_array($result);
    
    
    echo "<ul class=\"autosuggest\">";
    if($input !== ''){
       foreach($row as $chiave => $valore)
        {
            if(ereg($input,$valore))
            {
                echo "[*]<div>$valore</div>";
            }
        }
    	}
    	echo "[/list]";
    	
    	?>
    grazie a tutti!

  2. #2
    Beh, direi che ci sono svariati errori. Il mio consiglio e di prenderti il manuale di php e studiarti come si estraggono i dati da mysql

    www.php.net/mysql_query
    www.php.net/mysql_fetch_assoc
    www.php.net/mysql_fetch_row
    www.php.net/mysql_free_result

    e via dicendo

    e di studiarti anche un pò di sql (in giro per il web troverai parecchia roba), questo perché fare una query, estrarre tutti i dati e poi verificare quali vanno stampati o meno è una cosa inpensabile! Esiste la keyword WHERE e la keyword LIKE che fanno esattamente questo lavoro direttamente tramite SQL facendoti dimezzare il codice, riducendo i possibili bug e aumentando la velocità

    Per finire, le funzioni ereg vanno evitate perché oltre a essere lente sono deprecate e spariranno a breve. Vanno usate le preg al posto delle ereg! Guarda qui www.php.net/preg

    Qui c'è il codice, più o meno corretto, non l'ho provato però cosi ad occhio dovrebbe andare
    Codice PHP:
    <?php

    mysql_connect
    ("xxxxx""xxxx""") or die(mysql_error());
    mysql_select_db("materiale") or die(mysql_error());
    $query="SELECT articolo FROM articoli WHERE articolo LIKE '%" stripslashes($_POST['nome-regione']) . "%'";
    $result mysql_query($query) or die('Errore ' mysql_error() . ' nella query ' $query);

    ?>
    <ul class="autosuggest">
    <?php

    while(list($valore) = mysql_fetch_row($result))
    {
    ?>[*]<div><?php echo $valore?></div>
    <?php
    }

    ?>[/list]
    <?php
    ?>
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Oltre al consiglio che ti ha dato daniele di studiare Mysql, dai una occhiata anche a questi link, per l'autocompletamento tramite Ajax

    http://www.codicefacile.it/tutorials...form/category/

    http://free-script.it/post/Script_aj...aculous-67.htm


  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    Ti ringrazio moltissimo per la risposta completa, i consigli ed i link

    Ora provo il codice, avendo i link aperti per capirci anche qualcosa

    ti faccio sapere!

    edit: grazie anche a mosquito

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Per apprendere l'SQL ti consiglio questo manuale (e' un link che fa riferimento ad un file pdf) che ho appena trovato.

    http://www-db.deis.unibo.it/courses/...La-basi-2p.pdf

    Sicuramente ce ne saranno molti altri, ma questo mi sembra essere molto semplice e chiaro.
    Natualmente, alcune istruzioni le devi adattare a quelle del database Mysql, ma i concetti generali sono gli stessi per tutti i db

    Mi raccomando...inizia dall'"inizio" e non saltare subito alle istruzioni di where e join

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    Lo farò sicuramente perchè mi hanno chiesto di preparare molti strumenti che necessitano la conoscenza di questi linguaggi.

    Nel frattempo, il codice postato è perfetto!

    Grazie davvero ad entrambi per l'aiuto


    edit:

    se a monte ho una select per scegliere una categoria, a b c d, che posso anche mettere manualmente perchè si tratta di 5 6 categorie. e se nel db associo ad ogni articolo la relativa categoria.

    posso poi richiamare nel campo autocomplete solo gli elementi in base alla scelta della categoria?

    se ho capito bene il funzionamento del where, mi basterebbe fare una cosa tipo:

    codice:
    $query="SELECT categoria,articolo FROM articoli WHERE categoria LIKE '%" . stripslashes($_POST['categoria']) . "%'" & articolo LIKE '%" . stripslashes($_POST['nome-regione']) . "%'";
    Potrebbe funzionare?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    1) Se devi "unire" due condizioni di where devi usare "AND" e non "&"

    2) Invece di procedere in tutti questi modi "strani" (file+db), visto che ci sei, creati una tabella Categoria (con due campi - id e descrizione), crei la relazione (Foreign Key) con lo stesso campo id che hai sulla tabella Articoli e usi una join per estrarre i dati.

    Tra l'altro fai anche prima, rispetto a quello che stai "inventando"

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    ok ci provo!

    domanda stupida: ho visto che il metodo sempre usato è quello che suggerisci tu, ma da profano non capisco...perchè crearmi una tabella diversa per la categoria e non inserire nella stessa tabella un campo categoria?

  9. #9
    Perchè al posto di inserire tutte le volte il nome della categoria puoi inserire un id_categoria.
    Il giorno che vuoi cambiare il nome alla categoria non devi farlo uno per uno ma ti basta cambiare quel nome nella seconda tabella e in automatico è fatto su tutti.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    ok mi ci metto su.

    sto leggendo qualcosina vediamo se ho capito.

    mi creo una tabella categoria che ha campo id primary key e campo nome

    nella tabella articoli aggiungo il campo id categoria che sarà foreign key e punterà all'id dell'altra tabella.

    torno nel form, e la select della categoria la faccio fare dal db categoria.

    e poi come condiziono la scelta degli articoli presenti in elenco in base alla categoria?

    cioè ora ho:

    codice:
    $query="SELECT articolo FROM articoli WHERE articolo LIKE '%" . stripslashes($_POST['nome-regione']) . "%'";
    una select di un campo di una tabella....dovrei fare una query precedente o si fa tutto nella stessa istruzione? e poi il codice seguente rimane invariato?

    codice:
    $result = mysql_query($query) or die('Errore ' . mysql_error() . ' nella query ' . $query);
    
    ?>
    <ul class="autosuggest">
    <?php
    
    while(list($valore) = mysql_fetch_row($result))
    {
    ?>[*]<div><?php echo $valore; ?></div>
    <?php
    }
    
    ?>[/list]
    <?php
    ?>

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.