Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Mysql_field_len

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    39

    Mysql_field_len

    ciao!

    ho creato un form dinamico di inserimento dati andando ad estrarre dal db il nome del campo e la sua lunghezza per validare gli input da trasmettere.

    se questo form lo provo sul mia locale di test la lunghezza dei campi risulta correttamente formattata, tresferito sul server web mi ritorna sempre una lunghezza campo = 1.

    a cosa posso addebitare questa discrepanza??
    il mio vano motore è troppo vano e poco motore (elio e le storie tese)
    Infinite cose da fare e così poco tempo (Joker a Batman)

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    39
    ciao!

    nessuno mi può aiutare ha capire il xkè??

    con la stesso procedimento riesco ad estrarre il nome dei campi
    Codice PHP:
    mysql_filed_name($q$i 
    mentre
    Codice PHP:
    mysql_filed_len($q,$i 
    mi ritorna size =1

    ciao a tutti e grazie
    il mio vano motore è troppo vano e poco motore (elio e le storie tese)
    Infinite cose da fare e così poco tempo (Joker a Batman)

  3. #3
    metti tutto il codice della query e anche le due versioni di mysql usate.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    39
    ciao e grazie per l'interessamento

    in locale = Win Xp Pro SP2, Apache 2.0.55, PHP 4.3.2 Mysql 4.0.26
    via web = Linus, Apache 1.3.37, PHP 4.4.4, Mysql 4.0.20

    e questa è la porzione di codice
    Codice PHP:
    $dati="SELECT * FROM titoli";
    $q mysql_query($dati);
    $nc mysql_num_fields($q);
        echo 
    '<div class="area">
                <table>
                 <tr><th colspan="2">Inserimento spettacoli</th></tr>
                   <FORM METHOD=POST ACTION=main.php?bottom=AreaR/ins2.php>'
    ;
        for (
    $i 1$i $nc$i++) {
        echo 
    "<tr><td bgcolor=\"#eeeeee\"><font color=\"green\">".mysql_field_name($q$i )."</font></td><td>\n";
         if (
    mysql_field_name($q$i) == 'tipo') {
             echo 
    '<SELECT NAME="tipo">';
                    
    $sql="SELECT DISTINCT tipo FROM titoli ORDER BY 'tipo' ";
                    
    $ris=mysql_query($sql);
                    
    $nrighe=mysql_num_rows($ris);
                     while (
    $riga mysql_fetch_array($ris)) {
                          
    $tipo=$riga[tipo];
                        echo 
    "<OPTION>".$tipo."\n"; }
                echo 
    "</select>\n";
           } else {
         if (
    mysql_field_len($q$i) <= 80)    {

    echo 
    "<INPUT TYPE=\"TEXT\" NAME=".mysql_field_name($q$i )." VALUE=\"\" SIZE=".mysql_field_len($q$i).">\n";
    //         echo "<INPUT TYPE=\"TEXT\" NAME=".mysql_field_name($q, $i )." VALUE=\"\" SIZE=".mysql_fieldlen($q, $i).">\n";
          
    } else {
              
    $row mysql_field_len($q$i)/65;
            
    $cols mysql_field_len($q$i)/$row;
            if (
    mysql_field_len($q$i) <= 300)     {
            echo    
    "<TEXTAREA NAME=".mysql_field_name($q$i )." ROWS=".$row." COLS=".$cols." SIZE=".mysql_field_len($q$i)." MAXLENGHT=".mysql_field_len($q$i)."></TEXTAREA>\n";
            } else {
            echo    
    "<TEXTAREA NAME=".mysql_field_name($q$i )." ROWS=\"3\" COLS=\"65\"></TEXTAREA>\n";
            }    
          }     
        echo 
    "</td></tr>\n";
          }
        }
        echo    
    '
          <tr>
            <td align=center colspan="2" ><INPUT TYPE=SUBMIT VALUE=Invia></td>
          </tr>
        </form>
      </table>
    </div>'

    non ho minimamente idea della causa del problema...

    ciao e grazie
    il mio vano motore è troppo vano e poco motore (elio e le storie tese)
    Infinite cose da fare e così poco tempo (Joker a Batman)

  5. #5
    l'unica cosa veramente diversa e' la versione di apache. Nel tuo script hai qualche errore di forma che pero' non comporta l'errore che dici sulla lunghezza del campo, a meno che non ci sia un bug nel php 4.4.4

    ho provato adattandolo su una mia tabella in 5.0.24a di mysql e 5.1.6 di php e funziona...

    prova a mettere un punto di debug subito dopo il for per vedere se e' proprio dal db che ti arriva quel valore 1.... dai anche un'occhiata al character set usato dalle due versioni di mysql.

    Codice PHP:

        
    for ($i 1$i $nc$i++) {
         echo  
    mysql_field_name($q$i ) ." lenght " .mysql_field_len($q$i). "
    "

    gli errori che ho visto con un mio debug...

    nell'order by il 'tipo' tra virgolette ti rende la stringa tipo e non il valore del campo tipo.
    mancano le chiusure delle <option> </option>
    mancano parecchie virgolette sui valori delle stringhe del FORM.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    39
    nel copia incolla ho cancellato inavertitamente la chiusura dell'option

    per le virgolette mancanti intendi porzioni di codice come questa??
    Codice PHP:
    echo '<div class="area">
                <table>
                 <tr><th colspan="2">Inserimento spettacoli</th></tr>
                   <FORM METHOD=POST ACTION=main.php?bottom=AreaR/ins2.php>'

    ho letto da qlke parte che puoi raggruppare in ECHO porzioni di codice come sopra..

    la risposta fondamentale è che dal web effettivamente mi ritorna lenght =1 sia per INT che VARCHAR mentre per il longtext mi ritorna 17

    sulla mia è it-iso-8859-1 devo controllare il character set sulla macchina web non vorrei che fosse utf8-general
    il mio vano motore è troppo vano e poco motore (elio e le storie tese)
    Infinite cose da fare e così poco tempo (Joker a Batman)

  7. #7
    Originariamente inviato da Jos
    nel copia incolla ho cancellato inavertitamente la chiusura dell'option

    per le virgolette mancanti intendi porzioni di codice come questa??
    Codice PHP:
    echo '<div class="area">
                <table>
                 <tr><th colspan="2">Inserimento spettacoli</th></tr>
                   <FORM METHOD=POST ACTION=main.php?bottom=AreaR/ins2.php>'

    ho letto da qlke parte che puoi raggruppare in ECHO porzioni di codice come sopra..
    si certo ... ma se vuoi validare il form ti dara' errore. I valori dei parametri vanno sempre tra apici.
    la risposta fondamentale è che dal web effettivamente mi ritorna lenght =1 sia per INT che VARCHAR mentre per il longtext mi ritorna 17

    sulla mia è it-iso-8859-1 devo controllare il character set sulla macchina web non vorrei che fosse utf8-general
    ci sono problemi con i valori numerici, e per il longtext "forse" si tratta del valore usato per definire la lunghezza della stringa su cui effettuare la ricerca. la parte indicizzata insomma. Anche perche' il campo ha lunghezza fissa.

    verifica il charset.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.