Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 37 di 37

Discussione: Query MySQL tramite valore campo input

  1. #31
    Data registrazione
    14-02-2020
    Messaggi
    27

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    parlo dei pulsanti che fanno parte del DOM, non delle informazioni a essi associati.
    Materialmente i <div class="fc-content">...</div> sono creati contestualmente alla pagina, o dinamicamente in un secondo momento, per esempio da qualche libreria?

    Di solito il motivo più probabile per cui un event listener non funziona è che l'elemento a cui dovrebbe essere associato è stato creato dopo il tentativo di associazione.
    Credo vengano caricati in un secondo momento
    perchè viene viene elaborata da un file chiamato fullcalendar.min.js alla riga 257

  2. #32
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ha senso, in questo caso puoi modificare in questo modo:
    Codice:
    $(function () {
    	$('#id').keyup(function () {
    		var value = $(this).val();
    		$.get('service.php', { title: value }, function (data) {
    			var container = $('#results-container');
    			var item = $('<span>').html(data);
    			container.append(item);
    		});
    	});
    
    	$(document).on('dblclick', '.fc-content', function () {
    		var value = $('#id').val();
    		//console.log(value);
    		var container = $('#results-container');
    		container.empty();
    		$.get('service.php', { title: value }, function (data) {
    			var item = $('<span>').html(data);
    			container.append(item);
    		});
    	});
    });
    </script>
    Ultima modifica di mzanella : 21-02-2020 alle ore 10.07.39

    I suggerimenti che do più spesso:


  3. #33
    Data registrazione
    14-02-2020
    Messaggi
    27

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Ha senso, in questo caso puoi modificare in questo modo:
    [code]
    $(function () {
    $('#id').keyup(function () {
    var value = $(this).val();
    $.get('service.php', { title: value }, function (data) {
    var container = $('#results-container');
    var item = $('<span>').html(data);
    container.append(item);
    });
    });

    $(document).on('dblclick', '.fc-content', function () {
    var value = $('#id').val();
    //console.log(value);
    var container = $('#results-container');
    container.empty();
    $.get('service.php', { title: value }, function (data) {
    var item = $('<span>').html(data);
    container.append(item);
    });
    });
    });
    </script>
    benissimo,
    adesso funziona...però con un solo campo del db ovvero la colonna color...
    io ho la necessità di stampare a video tutti i dati di tutte le colonne

    ho ipotizzato di modificare così il file service:
    Codice HTML:
    <?php
    
    
    $database = mysql_connect('localhost', 'contabilitavergotti', '') 
    or die('Could not connect: ' . mysql_error()); 
    mysql_select_db('my_contabilitavergotti') or die('Impossibile selezionare il database database'); 
    
    
    
    
    $title = $_REQUEST['title'];
    //$title = "15";
    
    									
    $query = "SELECT * FROM `events` WHERE id = '".$title."'"; 
    $result = mysql_query($query); 
    
    
    
    
    $id = mysql_result($result,0,'id');
    $title = mysql_result($result,0,'title');
    $Descrizione = mysql_result($result,0,'Descrizione');
    $color = mysql_result($result,0,'color');
    $start = mysql_result($result,0,'start');
    $end = mysql_result($result,0,'sendtart');
     // i risultati vengono inseriti nel vettore $data
    
    header('Content-Type: application/json');
    echo json_encode($id);
    echo json_encode($title);
    echo json_encode($Descrizione);
    echo json_encode($color);
    echo json_encode($start);
    echo json_encode($end);
    
    ?>
    ma il file index?
    Ultima modifica di contabilitavergotti : 21-02-2020 alle ore 01.36.27

  4. #34
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Bisogna fare un po' di passi indietro, questo sarebbe stato più comodo gestirlo prima.

    Innanzitutto nel file PHP devi restituire un unico JSON, non vari pezzi separati. E non utilizzare le funzioni mysql_*: non esistono più nelle versioni più recenti del linguaggio.
    Codice PHP:
    <?php
    $database
    = mysqli_connect('localhost', '', '', 'my_contabilitavergotti')
    or die(
    'Could not connect: ' . mysqli_connect_error());

    // Reads title
    if (!isset($_REQUEST['title'])) {
    die(
    "Missing parameter \"title\".");
    }
    $title = $_REQUEST['title'];

    // Reads form database
    $query = "SELECT id, title, Descrizione, color, start, end FROM `events` WHERE id = '" . $title . "'";
    $result = mysqli_query($database, $query);
    if (
    $result === false || mysqli_num_rows($result) === 0) {
    die(
    "No match for \"$title\".");
    }
    $data = mysqli_fetch_assoc($result);

    // Displays results
    header('Content-Type: application/json');
    echo
    json_encode($data);

    // Deallocates resources
    mysqli_close($database);
    Poi va modificato il codice JavaScript di conseguenza, magari facendo un po' di refactoring...
    Codice:
    $(function () {
        function show_data(data) {
            var container = $('#results-container');
            container.empty();
    
            var item = $('<span>').html(data.id);
            container.append(item);
    
            var item = $('<span>').html(data.title);
            container.append(item);
    
            var item = $('<span>').html(data.Descrizione);
            container.append(item);
    
            var item = $('<span>').html(data.color);
            container.append(item);
    
            var item = $('<span>').html(data.start);
            container.append(item);
    
            var item = $('<span>').html(data.end);
            container.append(item);
        }
    
    
        $('#id').keyup(function () {
            var value = $(this).val();
            $.get('service.php', { title: value }, show_data);
        });
    
        $(document).on('dblclick', '.fc-content', function () {
            var value = $('#id').val();
            $.get('service.php', { title: value }, show_data);
        });
    });

    I suggerimenti che do più spesso:


  5. #35
    Data registrazione
    14-02-2020
    Messaggi
    27

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Bisogna fare un po' di passi indietro, questo sarebbe stato più comodo gestirlo prima.

    Innanzitutto nel file PHP devi restituire un unico JSON, non vari pezzi separati. E non utilizzare le funzioni mysql_*: non esistono più nelle versioni più recenti del linguaggio.
    Codice PHP:
    <?php
    $database
    = mysqli_connect('localhost', '', '', 'my_contabilitavergotti')
    or die(
    'Could not connect: ' . mysqli_connect_error());

    // Reads title
    if (!isset($_REQUEST['title'])) {
    die(
    "Missing parameter \"title\".");
    }
    $title = $_REQUEST['title'];

    // Reads form database
    $query = "SELECT id, title, Descrizione, color, start, end FROM `events` WHERE id = '" . $title . "'";
    $result = mysqli_query($database, $query);
    if (
    $result === false || mysqli_num_rows($result) === 0) {
    die(
    "No match for \"$title\".");
    }
    $data = mysqli_fetch_assoc($result);

    // Displays results
    header('Content-Type: application/json');
    echo
    json_encode($data);

    // Deallocates resources
    mysqli_close($database);
    Poi va modificato il codice JavaScript di conseguenza, magari facendo un po' di refactoring...
    Codice:
    $(function () {
        function show_data(data) {
            var container = $('#results-container');
            container.empty();
    
            var item = $('<span>').html(data.id);
            container.append(item);
    
            var item = $('<span>').html(data.title);
            container.append(item);
    
            var item = $('<span>').html(data.Descrizione);
            container.append(item);
    
            var item = $('<span>').html(data.color);
            container.append(item);
    
            var item = $('<span>').html(data.start);
            container.append(item);
    
            var item = $('<span>').html(data.end);
            container.append(item);
        }
    
    
        $('#id').keyup(function () {
            var value = $(this).val();
            $.get('service.php', { title: value }, show_data);
        });
    
        $(document).on('dblclick', '.fc-content', function () {
            var value = $('#id').val();
            $.get('service.php', { title: value }, show_data);
        });
    });
    ho provato con il codice da te indicato ma non mi stampa a video nulla ho modificato la query nel file service in:
    Codice PHP:
    $query = "SELECT * FROM `events` WHERE id = '" . $title . "'";
    e così funziona
    stampando a video i valori uno dopo l'altro correttamente


    un'ultime due cose

    • Ho notato che nel js andiamo ad aprire uno <span> che non viene mai chiuso....come mai?
    • nella index, qualora volessi mettere in testo prima di stampare la variabile, ho modificato il codice così: var item = $('<hr>TITOLO: <br><span>').html(data.title); e funziona bene, però se foglio applicare un qualsiasi stile al testo aggiunto, per esempio var item = $('<hr><strong>TITOLO:</strong> <br><span>').html(data.title); anzichè stampare il testo TITOLO: mi stampa il valore della variabile TITOLO...come posso risolvere
    Ultima modifica di contabilitavergotti : 21-02-2020 alle ore 11.31.20

  6. #36
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho notato che nel js andiamo ad aprire uno <span> che non viene mai chiuso....come mai?
    No, viene piuttosto creato un elemento del DOM ti tipo span. È jQuery ad occuparsi di apertura e chiusura del tag.

    nella index, qualora volessi mettere in testo prima di stampare la variabile, ho modificato il codice così: var item = $('<hr>TITOLO: <br><span>').html(data.title); e funziona bene, però se foglio applicare un qualsiasi stile al testo aggiunto, per esempio var item = $('<hr><strong>TITOLO:</strong> <br><span>').html(data.title); anzichè stampare il testo TITOLO: mi stampa il valore della variabile TITOLO...come posso risolvere
    Puoi creare gli opportuni elementi del DOM:
    Codice:
    var separator = $('<hr>');
    var label = $('<strong>').html('TITOLO:');
    var line_break = $('<br>');
    var title = $('<span>').html(data.title);
    container.append(separator).append(label).append(line_break).append(title);

    I suggerimenti che do più spesso:


  7. #37
    Data registrazione
    14-02-2020
    Messaggi
    27

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    No, viene piuttosto creato un elemento del DOM ti tipo span. È jQuery ad occuparsi di apertura e chiusura del tag.


    Puoi creare gli opportuni elementi del DOM:
    Codice:
    var separator = $('<hr>');
    var label = $('<strong>').html('TITOLO:');
    var line_break = $('<br>');
    var title = $('<span>').html(data.title);
    container.append(separator).append(label).append(line_break).append(title);
    funziona tutto
    vi ringrazio infinitamente

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

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