Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    18

    Richiamare script per autocompletamento

    Salve, ho provato a cercare in rete ma senza risultato.
    In un cms realizzato da me i contenuti sono liberamente editabili, solo che vorrei semplificare il richiamo di elementi tratti dal db (schede articoli o immagini). Ad es, volendo richiamare il prodotto n. 220, vorrei semplicemente avere un segnaposto del tipo [libro=220] che mi richiama tutta la query per la costruzione dell'output e che io già utilizzo in altre pagine.
    Come potrei fare?
    Grazie a tutti

  2. #2
    Io non ho capito cosa vuoi fare...il segnaposto punta ad una pagina che deve eseguire un' estrazione dal db?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    18
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Io non ho capito cosa vuoi fare...il segnaposto punta ad una pagina che deve eseguire un' estrazione dal db?
    quando inserisco una notizia in un campo del db, tramite form di inserimento, ad un certo punto, scrivendo [libro=num_id] devo richiamare una query che mi sceglie da una tabella il prodotto con id = num_id e conseguentemente genera l'output di alcuni campi di quell'id.

    Sarebbe un modo per richiamare lo script, considerando che il segnaposto [libro=num_id] sarà scritto in una texarea identica a quella nella quale sto scrivendo ora su questo forum.

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Una cosa del genere?

    codice:
    function book($id)
    {
      $id = $id[1];
      
      // qui recupero il libro partendo dall'id.
      $books = array(
        'La regola dell\'equilibrio',
        'Morte in mare aperto',
        'La ballata di Adam Henry'
      );
    
      if (array_key_exists($id, $books)) {
        return '['.$books[$id].']';
      }
      
      return '[Libro non in archivio]';
    }
    
    $text = "I miei libri preferiti sono:\n[libro=1] e [libro=210]";
    $text = preg_replace_callback("/\[libro=(.+?)\]/", 'book', $text);
    
    echo $text;
    demo: http://3v4l.org/CIcme

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    18
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    Una cosa del genere?

    codice:
    function book($id)
    {
      $id = $id[1];
      
      // qui recupero il libro partendo dall'id.
      $books = array(
        'La regola dell\'equilibrio',
        'Morte in mare aperto',
        'La ballata di Adam Henry'
      );
    
      if (array_key_exists($id, $books)) {
        return '['.$books[$id].']';
      }
      
      return '[Libro non in archivio]';
    }
    
    $text = "I miei libri preferiti sono:\n[libro=1] e [libro=210]";
    $text = preg_replace_callback("/\[libro=(.+?)\]/", 'book', $text);
    
    echo $text;
    demo: http://3v4l.org/CIcme
    credo proprio di sì. Solo che mentre questo script contiene i titoli in un array, io vorrei che l'id passato con [libro=3] determini l'esecuzione di una query su db.
    Se scrivo [libro=12] vorrei recuperare titolo, autore, nome copertina ecc. dal db e mostrarli in div strutturati o in un listato tabellare. Naturalmente l'output so realizzarlo.

  6. #6
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Inserisci una query cosi:

    Codice PHP:
     $query "SELECT * FROM `nome_database`
       WHERE `id` = :u "
    ;
                         array(
                           
    "u" => $id
                         
    ); 

  7. #7
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Solo che mentre questo script contiene i titoli in un array, io vorrei che l'id passato con [libro=3] determini l'esecuzione di una query su db.
    L'avevo capito, ma quelli che ti forniamo qui sono sempre dei codici di esempio: li devi adattare alle tue esigenze. Se vuoi qualcosa di più specifico, questo è il lavoro che dovresti fare:


    codice:
    $text = "I miei libri preferiti sono:\n[libro=1] e [libro=201]";
    
    if (preg_match_all('/\[libro=([0-9]+)\]/', $text, $ids)) {
        $ids = array_unique(array_filter($ids[1], function($id) {
            return intval($id);
        }));
    
        // qui la query, del tipo:
        // $query = 'SELECT nome, autore, copertina FROM books WHERE id IN('.implode(', ', $ids).')';
        // in $result recupero tutti i risultati della query
    
        $text = preg_replace_callback('/\[libro=([0-9]+)\]/', function($book) use ($result) {
            $bookId = $book[1];
    
            if (...) { // controllo se esiste in $result un libro che ha l'id $bookId.
                return "..."; // restituisco l'output modificato, utilizzando $result 
            }
    
            // il libro non esiste, che faccio? lancio una eccezione? o lo gestisco silenziosamente?
        }, $text);
    }
    
    echo $text;

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    18
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    L'avevo capito, ma quelli che ti forniamo qui sono sempre dei codici di esempio: li devi adattare alle tue esigenze. Se vuoi qualcosa di più specifico, questo è il lavoro che dovresti fare:


    codice:
    $text = "I miei libri preferiti sono:\n[libro=1] e [libro=201]";
    
    if (preg_match_all('/\[libro=([0-9]+)\]/', $text, $ids)) {
        $ids = array_unique(array_filter($ids[1], function($id) {
            return intval($id);
        }));
    
        // qui la query, del tipo:
        // $query = 'SELECT nome, autore, copertina FROM books WHERE id IN('.implode(', ', $ids).')';
        // in $result recupero tutti i risultati della query
    
        $text = preg_replace_callback('/\[libro=([0-9]+)\]/', function($book) use ($result) {
            $bookId = $book[1];
    
            if (...) { // controllo se esiste in $result un libro che ha l'id $bookId.
                return "..."; // restituisco l'output modificato, utilizzando $result 
            }
    
            // il libro non esiste, che faccio? lancio una eccezione? o lo gestisco silenziosamente?
        }, $text);
    }
    
    echo $text;
    grazie mille. Lo provo subito, ma credo sia proprio quello che cercavo. La mia difficoltà era nel costruire la query in base all'indice contenuto nel "segnaposto".

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    18
    Quote Originariamente inviata da boberto Visualizza il messaggio
    grazie mille. Lo provo subito, ma credo sia proprio quello che cercavo. La mia difficoltà era nel costruire la query in base all'indice contenuto nel "segnaposto".
    purtroppo mi dà un errore sulla riga.

    Codice PHP:
    if (...) { // controllo se esiste in $result un libro che ha l'id $bookId. 

  10. #10
    Quote Originariamente inviata da boberto Visualizza il messaggio
    purtroppo mi dà un errore sulla riga.

    Codice PHP:
    if (...) { // controllo se esiste in $result un libro che ha l'id $bookId. 

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.