Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [SQL] Come posso riempire in modo corretto questo output?

    Questo è il codice che ho scritto nel ciclo for nella pagina di input dei dati.
    Lo script prende i record il cui campo CODE è 'italiano' e crea un output da 10 righe, ognuna contenente i campi 'data' e 'testo'.

    codice:
    <?php
    	for ($a = 1; $a <= 10; $a++) {
    		 $query = "SELECT * FROM general WHERE code='italiano' AND id=$a ORDER BY id";
    		 $result = mysql_query($query);
    		 $row = mysql_fetch_array($result);
    		 echo "<input type='text' name='d".$a."' size=30 value=".$row[data].">
    		 echo "<textarea name='x".$a."' cols=50 rows=10>".$row[testo]."</textarea>";
    }
    ?>
    Il problema è questo: così come ora l'output di questa pagina dà 10 righe, ma le righe piene di dati vanno ad occupare la loro posizione numerica specifica a seconda dell'id.
    Esempio:
    Nel database solo le righe 1, 3, 7 e 15 sono piene di dati, le altre contengono il CODE 'inglese' per cui non ci interessano. L'output sarà:
    codice:
    RIGA 1: Data1 Testo1
    RIGA 2: vuota
    RIGA 3: Data3 Testo3
    RIGA 4: vuota
    RIGA 5: vuota
    RIGA 6: vuota
    RIGA 7: Data7 Testo7
    RIGA 8: vuota
    RIGA 9: vuota
    RIGA 10: vuota
    Come vedete il record 15 non compare perchè le righe seguono precisamente l'ID.
    A me servirebbe che le righe 1,3,7 e 15 occupassero le prime 4 righe, lasciando le altre 6 vuote. Nell'esempio:
    codice:
    RIGA 1: Data1 Testo1
    RIGA 2: Data3 Testo3
    RIGA 3: Data7 Testo7
    RIGA 4: Data15 Testo15
    RIGA 5: vuota
    RIGA 6: vuota
    RIGA 7: vuota
    RIGA 8: vuota
    RIGA 9: vuota
    RIGA 10: vuota
    Mi aiutate?

  2. #2
    é inutile fare tutte queste query! Basta che ne fai una sola!

    Codice PHP:
    $query "SELECT * FROM general WHERE code='italiano' AND " ;
    for (
    $a 1$a <= 10$a++) {
       
    $id[] = 'id = ' $a ;
    }

    $query .= implode' OR ' $id ) . ' ORDER BY id' ;
    $result mysql_query($query);
    while ( 
    $row mysql_fetch_array$result ) )
         {
           echo 
    "<input type='text' name='d".$row['id']."' size=30 value=".$row['data'].">
           echo "
    <textarea name='x".$row['id']."' cols=50 rows=10>".$row['testo']."</textarea>";

    Ricorda che quando vuoi riferirti ad un array lo devi fare in questo modo

    $row['data'] // Stringa
    $row[5] // Numero

    Non dimenticare gli apici! Potrebbero essere causa di errori!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Ciao mircov, per ora non ho avuto errori di questo tipo ma terrò presente il tuo consiglio sugli apici.

    Il tuo script però mi genera tutte le righe di fila piene nel mio database, non solo quelle con CODE 'italiano', ma tutte.

    Inoltre vorrei che rimanessero 10 righe fisse, sia che se ne riempissero 3 o 9, le eccedenti devono rimanere vuote.

    Poi, tengo presente che questo sarebbe l'output della pagina di input dei dati, per cui non è un discorso chiuso: i nomi dei campi (d1, x1, d2, x2...) mi servono per poi andare a riempire nel database i record, sovrascrivendo quelli già esistenti che vengono modificati, e aggiungendone se riempio le righe vuote. Dopo magari mi date una mano anche per questo controllo, per ora risolviamo i problemi principali di cui ti ho parlato all'inizio del post. :master:

  4. #4
    Prova cosi:

    codice:
    $query = "SELECT * FROM general WHERE code='italiano' AND ( " ; 
    for ($a = 1; $a <= 10; $a++) { 
       $id[] = 'id = ' . $a ; 
    } 
    
    $query .= implode( ' OR ' , $id ) . ' ) ORDER BY id' ; 
    $result = mysql_query($query); 
    while ( $row = mysql_fetch_array( $result ) ) 
         { 
           echo "<input type='text' name='d".$row['id']."' size=30 value=".$row['data']."> 
           echo "<textarea name='x".$row['id']."' cols=50 rows=10>".$row['testo']."</textarea>";
    }
    ______________________________________

    Progresso Web.

  5. #5
    Grazie caruccis, quelle due parentesi ora mi fanno visualizzare solo i CODE 'italiano'.

    Il problema del record 15 credo di risolverlo modificando il limite di 10 nel ciclo for ad un numero più alto (es.50) così scandaglierò tutto il database.

    Passiamo quindi al problema dei 10 campi totali.
    Qualche idea?

  6. #6
    Specifico che sarebbe meglio che i campi vuoti che devono comparire fino ad arrivare a 10 righe si chiamino d* e x*, dove asterisco indica un numero progressivo di record ancora vuoti nel database.
    Questo perchè, nella pagina di inserimento dati alla quale accedo confermando questa pagina di input, potrei controllare più facilmente tutto: le righe piene visualizzate si chiamano già d1,x1,d3,x3,d7,x7 e quindi controllano direttamente i record 1,3 e 7 e mi basta sovrascriverli.
    Per quelle nuove, un nome tipo d14, x14 (supposti 13 record nel database pieni, anche di CODE on 'italiano') mi permetterebbe di creare liberamente nuovi record basandomi su un numero ancora libero.
    Oppure, accetto soluzioni migliori

  7. #7
    Il problema degli id puoi anche risolverlo eliminando il ciclo for ed estraendo direttamente tutti i prodotti!

    Ma cos'è che esattamente vuoi fare? Una paginazione?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #8
    Ok il problema dell'id lo risolvo tranquillamente, stavo puntando più a risolvere il secondo problema.

    Non è una paginazione, perchè tutto l'output sarà su una sola pagina.
    Praticamente è un modulo per inserire 10 news, per questo deve in ogni caso mostrarmi 10 righe (formate da campo data e testo).
    Se trova 3 news e le mette nei primi 3 spazi, deve visualizzarne altri 7 vuoti pronti all'uso, che andranno poi ad aggiungere record al database (e per questo ho richiesto che la parte numerica del nome di questi nuovi campi fosse un numero successivo al totale dei campi già occupati nel database, ad esempio d21 e x21 se 20 record sono pieni).

  9. #9
    Bhe, a questo punto credo sia meglio se spieghi in modo un po' più chiaro quello che vuoi fare! Perchè non ho capito molto bne ma per quello che ho capito questo non mi sembra un buon metodo per procedere!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    Magari non è un buon metodo però, rispetto a quello che ho realizzato prima, ti assicuro che c'è un abisso VVoVe: .
    In quello di prima ripetevo mille query, avevo un database per ogni lingua, e modificare gli script era lungo e dispendioso, per questo vorrei continuare su questa strada (ormai manca poco ).
    Pensandoci si potrebbe anche assegnare 10 record fissi per ogni lingua, e sovrascriverli direttamente, ma comporta altro lavoro.

    Provo a chiarire meglio cosa manca (forse non spiego benissimo, ma venitemi incontro, è una cosa molto semplice).
    Allora, il database delle news contiene vari record, formati dai campi id, data, testo e code.
    La maschera di inserimento news (quella che sto realizzando ora), a seconda della lingua, mi visualizza solo i record con il CODE appropriato (in questo caso 'italiano').
    I valori riempiono i campi di input/textarea così sono pronti alla modifica.
    Se i record pescati dal database non sono 10, ma meno, ne compaiono un certo numero vuoti, così posso inserirne io altri.
    Il numero è dato da '10 - numero di campi pescati'.
    Quindi se ho 3 record con code 'italiano' nel database, nella maschera di inserimento news compariranno i loro valori nei primi 3 posti, e i successivi 7 saranno vuoti pronti ad essere riempiti.

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.