Visualizzazione risultati 1 fino 14 di 14

Discussione: estrazione dati parziale

  1. #1
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito estrazione dati parziale

    Salve a tutti. Ho questo problema che non riesco a venirne a capo.
    Faccio un'estrazione dati, tramite query. In teoria corretta, in realtà non mi riporta tutti i dati salvati nei vari campi.
    Cioè ottengo solo la prima parola di ogni campo e non quelle sucessive.
    (Es. se ho salvato in un campo il valore "torta della nonna", il risultato che ottengo è solo "torta").
    La query in questione è quella sotto. Da cosa può dipendere ? Come posso intervenire ?
    Codice PHP:
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '$id' ");
    $row = mysql_fetch_assoc($query);
    Grazie per ogni aiuto

  2. #2
    Guest

    Predefinito

    Per prima cosa verifica che i dati siano correttamente stati scritti nel Database, ad esempio "Torta della nonna" potrebbe essere stato troncato perchè nel databse è stato messo quel campo come dato VARCHAR(n).
    Una volta verificato con phpmyadmin che i dati effettivamente ci siano, allora ti consiglio di fare un vardump sul risultato, se riesci a vederlo tutto con il vardump, allora è sbagliato il fetch in qualche modo, sennò... non so da cosa possa dipendere ;)

    Prova a postare anche come prosegue il codice e come fai il fetch dei dati (a parte il mysq_fetch_assoc come li visualizzi a video), che più dati si hanno più è veloce la risoluzione dle problema

  3. #3
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Eseguendo una query che ricerca ID il risultato restituito è la ROW
    quindi se vuoi essere sicuro di estrarre tutti i dati della riga con corrispondenza uguale a ID ti consiglio ti creare un vettore e di eseguire un secondo controllo con un ciclo while (come da esempio riportato).
    Codice PHP:
    $result = mysqli_query($con,$query) or die(mysql_error());

    while(
    $row = mysqli_fetch_array($result)) {
    $controllo = $row['ID'];
    if (
    $controllo==$ID){
    $foto = $row['foto'];
    $data = $row['data'];
    $testo = $row['testo'];
    }
    }

  4. #4
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie infinite dei suggerimenti.
    Faccio fatica a capire tutte le indicazioni non sono molto afferrato, ma ho provato comunque ad adattare l'esempio al mio caso. Però qualcosa non va. Non mi segnala errori, ma non ottengo niente. Metto la parte di codice scritta:
    Codice PHP:
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '$id' ");
    $row = mysql_fetch_assoc($query);

    $result = mysqli_query($con,$query) or die(mysql_error());
    while(
    $row = mysqli_fetch_array($result)) {
    $controllo = $row['id_SalaStudio'];

    if (
    $controllo==$id){
    $cognome = $row['cognome'];
    $nome = $row['nome'];
    $tipoDoc = $row['tipoDoc'];
    $nDoc = $row['nDoc'];
    $rilasciato = $row['rilasciato'];
    $da = $row['da'];
    $luogo = $row['luogo'];
    }
    }
    echo
    '

    <tr>
    <td >'
    . $controllo.'</td>
    <td > <input type="text" name="cognome" value='
    .$cognome.'></td>
    <td > <input type="text" name="nome" value='
    .$nome.'></td>
    <td > <input type="text" name="tipoDoc" value='
    .$tipoDoc .'></td>
    <td > <input type="text" name="nDoc" value='
    .$nDoc. '></td>
    <td > <input type="text" name="rilasciato" value='
    .$rilasciato.'></td>
    <td > <input type="text" name="da" value='
    .$da.'></td>
    <td > <input type="text" name="luogo" value='
    .$luogo.'></td>
    </tr> '
    ;
    Adesso non mi stampa nemmeno più la tabella. Grazie per la collaborazione.

  5. #5
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito

    Giusto per completezza riprendo anche la parte di connessione al db
    Codice PHP:
    $cLink = mysql_connect("localhost", "portier", "")or die("Errore di connessione: " . mysql_error());
    mysql_select_db('my_portier', $cLink );
    E questa è la parte che prende i valori con id_SalaStudio x
    Codice PHP:
    <?php
    $id
    = mysql_real_escape_string($id);
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '".$id."'") or die(mysql_error());
    $rows = mysql_num_rows($query);
    if(
    $rows > 0){
    echo
    '<table>
    <thead>
    <tr>
    <th>Sala</th>
    <th>Cognome</th>
    <th>Nome</th>
    <th>TipoDoc</th>
    <th>nDoc</th>
    <th>Rilasciato</th>
    <th>Da</th>
    <th>Luogo</th>
    </tr>
    </thead>
    <tbody>'
    ;
    while(
    $row = mysql_fetch_assoc($query)){
    echo
    '<tr>
    <td>'
    .$row['id'].'</td>
    <td><input type="text" name="cognome" value='
    .$row['cognome'].'></td>
    <td><input type="text" name="nome" value='
    .$row['nome'].'></td>
    <td><input type="text" name="tipoDoc" value='
    .$row['tipoDoc'] .'></td>
    <td><input type="text" name="nDoc" value='
    .$row['nDoc']. '></td>
    <td><input type="text" name="rilasciato" value='
    .$row['rilasciato'].'></td>
    <td><input type="text" name="da" value='
    .$row['da'].'></td>
    <td><input type="text" name="luogo" value='
    .$row['luogo'].'></td>
    </tr>'
    ;
    }
    echo
    ' </tbody>
    </table>'
    ;
    }else echo
    '<p> Non sono presenti valori con id_SalaStudio '.$id.'</p>';
    ?>
    Questo non serve
    Codice PHP:
    if ($controllo==$id)
    Sarà sempre vero, perché tu come query estrai solo i dati che corrispondono a quel determinato parametro che vuoi controllare in quella condizione if, quindi controllo sarà sempre uguale a id.
    Ultima modifica di LastWings : 26-08-2014 alle ore 05.18.19
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

  6. #6
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie anche a LastWings.
    Però sono tornato al punto di partenza. Adesso mi rivisualizza i dati, ma non in maniera completa. Cioè solo la prima parte, come faceva prima. Questo dimostra che la SELECT funziona ed è impostata bene. Putroppo però mi preleva solo la prima parte/parola, di ogni record.
    Metto la parte di php interessata dall'operazione, in maniera completa. Forse così si scopre dov'è il problema.
    Codice PHP:
    <?php

    {
    echo
    '
    <form method="post" action="aggiorna.php">
    <table style="border="1" align="center" cellpadding="0" cellspacing="10" width="100%">
    <tr>
    <td><b>ID</b></td>
    <td><b>Cognome</b></td>
    <td><b>Nome</b></td>
    <td><b>TipoDoc.</b></td>
    <td><b>Nr. Doc.</b></td>
    <td><b>Rilasciato</b></td>
    <td><b>Ente</b></td>
    <td><b>Luogo</b></td>
    </tr> '
    ;


    {

    $id = $_SESSION['var']; // recupero valore id, corrispondente ad una sola riga del db. Quella che mi serve.
    $id = mysql_real_escape_string($id);
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '$id' ");

    $rows = mysql_num_rows($query);

    while(
    $row = mysql_fetch_assoc($query)){

    echo
    '
    <tr>
    <td >'
    . $row['id_SalaStudio'].'</td>
    <td > <input type="text" name="cognome" value='
    .$row['cognome'].'></td>
    <td > <input type="text" name="nome" value='
    .$row['nome'].'></td>
    <td > <input type="text" name="tipoDoc" value='
    . $row['tipoDoc'] .'></td>
    <td > <input type="text" name="nDoc" value='
    . $row['nDoc'] . '></td>
    <td > <input type="text" name="rilasciato" value='
    .$row['rilasciato'].'></td>
    <td > <input type="text" name="da" value='
    .$row['da'] .'></td>
    <td > <input type="text" name="luogo" value='
    .$row['luogo'].'></td>
    </tr> '
    ;
    }
    }
    echo
    '</table>
    MODIFICA <input type="submit" name="inserisci dati">
    </form>'
    ;
    }

    ?>

  7. #7
    NLSweb non è connesso Altervistiano Junior
    Data registrazione
    17-01-2014
    Messaggi
    658

    Predefinito

    Un dubbio...
    Putroppo però mi preleva solo la prima parte/parola, di ogni record.
    puoi riportare un esempio di un valore inserito nel DB e di quello che ti mostra la Query ..

  8. #8
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Certo.
    Nel db all'ID = 3, c'è il cognome ABD EL MESSIH
    ID Cognome Nome Documento N. Doc Rilasciato il da Luogo
    3 ABD EL MESSIH Mario Guidi Carta Identità 123456 8/08/2014 Comune Roma

    A video invece dopo la query visualizzo:
    ID Cognome Nome Documento N. Doc Rilasciato il da Luogo
    3 ABD Mario Carta 123456 8/08/2014 Comune Roma
    Come si può notare i primi dati (Cognome, nome e tipo documento) sono mostrati in modo parziale, anche se viene caricata la riga giusta dal database, con i giusti valori.

  9. #9
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito

    Puoi dirmi se con questo codice di mostra il testo completo?

    Codice PHP:
    <?php
    $id
    = mysql_real_escape_string($id);
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '".$id."'") or die(mysql_error());

    while(
    $row = mysql_fetch_assoc($query)){
    $results[] = $row;
    }
    echo
    '<xmp>';
    print_r($results);
    echo
    '</xmp>';

    ?>

    questo è sbagliato
    Codice HTML:
    <table style="border="1"
    va cambiato in

    Codice HTML:
    <table style="border: 1px solid #000000">
    Misura bordo, e colore ovviamente a tua discrezione


    Per mostrare i risultati utilizzi delle inputtext, hai per caso impostato un numero massimo di caratteri, o una dimensione tramite css?
    Da css per caso hai qualche stile sulla tabella? Tipo un overflow: hidden?
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

  10. #10
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie LastWings.
    Adesso con le tue impostazioni ho ottenuto come risposta questo:

    Array
    ( [0] => Array
    (
    [id_SalaStudio] => 3
    [cognome] => ABD EL MESSIH
    [nome] => MONICA
    [tipoDoc] => Carta I.
    [nDoc] => AS5437954
    [rilasciato] => 08/08/2011
    [da] => COMUNE
    [luogo] => TORGIANO (PG)
    )
    )

    E' corretto. Ha caricato tutti i dati e non solo la prima parola.
    Ho dovuto aggiungere solo $id = $_SESSION['var']; altrimenti non funzionava.
    (Infatti l'id lo devo recuperare da un altro file. Fa parte di una scelta precedente del dato da estrarre.)
    Però funziona tutto. Perchè allora non riesco ad applicarlo nel mio script ?

    Grazie anche per la correzione sul codice del bordo.

    Per quanto riguarda il css ... utilzzo un template free, responsive.
    Ho provato a cercare per vedere cosa trovavo. Ho trovato solo questo:
    .flex-control-thumbs {margin: 5px 0 0; position: static; overflow: hidden;}
    Ma non penso dipenda dal css, perchè in altre situazioni, le tabelle si completano bene con tutti i dati.

    Per spiegarmi meglio, riassumo le operazioni precedenti.
    Prima faccio la ricerca tra i cognomi nel db. Si intabellano bene. Tutto è OK. Quindi faccio le varie scelte.
    Una di queste scelte può essere la modifica dei dati. E arriviamo a questo punto. Dove sono bloccato.
    Recupero l'id della scelta fatta precedentemente, per intabellare i dati nel form.
    Però stavolta tralascia delle parole.

    Spero di essere stato abbastanza chiaro. Grazie.

  11. #11
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito

    Sorry, avevo dimenticato degli apici nel codice precedente, ossia la cosa che era sfuggita fin dall'inizio.

    l'errore:

    Codice PHP:
    value='.$row['nome'].'
    la correzione
    Codice PHP:
    value=" '.$row['nome'].' "
    codice corretto

    Codice PHP:
    <?php
    $id
    = mysql_real_escape_string($id);
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '".$id."'") or die(mysql_error());
    $rows = mysql_num_rows($query);
    if(
    $rows > 0){
    echo
    '<table>
    <thead>
    <tr>
    <th>Sala</th>
    <th>Cognome</th>
    <th>Nome</th>
    <th>TipoDoc</th>
    <th>nDoc</th>
    <th>Rilasciato</th>
    <th>Da</th>
    <th>Luogo</th>
    </tr>
    </thead>
    <tbody>'
    ;
    while(
    $row = mysql_fetch_assoc($query)){
    echo
    '<tr>
    <td>'
    .$row['id'].'</td>
    <td><input type="text" name="cognome" value="'
    .$row['cognome'].'"></td>
    <td><input type="text" name="nome" value="'
    .$row['nome'].'"></td>
    <td><input type="text" name="tipoDoc" value="'
    .$row['tipoDoc'] .'"></td>
    <td><input type="text" name="nDoc" value="'
    .$row['nDoc']. '"></td>
    <td><input type="text" name="rilasciato" value="'
    .$row['rilasciato'].'"></td>
    <td><input type="text" name="da" value="'
    .$row['da'].'"></td>
    <td><input type="text" name="luogo" value="'
    .$row['luogo'].'"></td>
    </tr>'
    ;
    }
    echo
    ' </tbody>
    </table>'
    ;
    }else echo
    '<p> Non sono presenti valori con id_SalaStudio '.$id.'</p>';
    ?>
    Applicato sul tuo
    Codice PHP:
    <?php
    $id
    = $_SESSION['var']; // recupero valore id, corrispondente ad una sola riga del db. Quella che mi serve.
    $id = mysql_real_escape_string($id);
    $query = mysql_query("SELECT * FROM SalaStudio WHERE id_SalaStudio = '$id' ");

    $rows = mysql_num_rows($query);

    while(
    $row = mysql_fetch_assoc($query)){
    echo
    '
    <tr>
    <td >'
    . $row['id_SalaStudio'].'</td>
    <td > <input type="text" name="cognome" value="'
    .$row['cognome'].'"></td>
    <td > <input type="text" name="nome" value="'
    .$row['nome'].'"></td>
    <td > <input type="text" name="tipoDoc" value="'
    . $row['tipoDoc'] .'"></td>
    <td > <input type="text" name="nDoc" value="'
    . $row['nDoc'] . '"></td>
    <td > <input type="text" name="rilasciato" value="'
    .$row['rilasciato'].'"></td>
    <td > <input type="text" name="da" value="'
    .$row['da'] .'"></td>
    <td > <input type="text" name="luogo" value="'
    .$row['luogo'].'"></td>
    </tr> '
    ;
    }

    ?>
    Ultima modifica di LastWings : 27-08-2014 alle ore 01.24.25
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

  12. #12
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grande LastWings ... stavolta funziona.
    Posso chiederti un'altra cosa.
    Ho aggiunto alla variabile htmlspecialchars
    Codice PHP:
    <input type="text" name="cognome" value=" '.htmlspecialchars ($row['cognome'],ENT_QUOTES).' ">
    Va bene, a parte gli apici che mi visualizza questo
    Codice HTML:
    &#039;
    Es. se scrivo ATTIVITA' mi viene fuori
    Codice HTML:
    ATTIVITA&#039;
    Sapresti come fare anche per questo ? Grazie infinite

  13. #13
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito

    É esattamente il suo funzionamento

    http://php.net/manual/it/function.htmlspecialchars.php
    Codice:
    La conversioni applicate sono:
    
    '&' (e commerciale) diventa '&amp;'
    '"' (doppio apice) diventa '&quot;' con ENT_NOQUOTES is not set.
    ''' (singolo apice) diventa '&#039;' soltanto con l'impostazione di ENT_QUOTES.
    '<' (minore) diventa '&lt;'
    '>' (maggiore) diventa '&gt;'

    ENT_COMPAT - Default. Converte i doppi apici, lasciando inalterati quelli singoli
    ENT_QUOTES - Converte apici doppi e singoli
    ENT_NOQUOTES - Non converte alcun apice
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

  14. #14
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    OK, grazie ancora. Sei forte.
    Ho tolto completamente il comando e mi sembra non esserci più problemi con gli apici e gli accenti.
    Buona giornata

Regole di scrittura

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