Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema Database

  1. #1

    Problema Database

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Paginazione</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <link href="style.css" rel="stylesheet" type="text/css">
    <meta name="generator" content="HAPedit 3.1">
    </head>
    <?php 
    /* impostiamo il db*/
    $db_txt 'file.txt';

    /*se il file non esiste fermi tutti!!!*/
    if(!file_exists($db_txt)){
        exit(
    'il database non può essere aperto perchè non esiste');
        }
        
    /*costruiamo un array con i righi del db e contiamo i righi presenti*/
    $array_righi file($db_txt);
    $count_righi count($array_righi);

    /*impostiamo quanti righi per ogni pagina*/
    $per_page 3;
    /*calcoliamo il numero di pagine necessarie per l'impagginazione */
    $numero_pagine ceil($count_righi $per_page);

    /*intercettiamo la pagina corrente tramite GET altrimenti è pagina 1*/
    $page_corrente = ( isset($_GET['pos']) AND intval($_GET['pos']) ) ? min($numero_pagineintval($_GET['pos'])) : 1;

    /*estraiamo il sotto-array che vogliamo visualizzare*/
    $righi_da_visualizzare array_slice($array_righi, ($page_corrente-1)*$per_page$per_page);

    /*... e mostriamo questi righi...*/
    $output_content '';
    foreach(
    $righi_da_visualizzare as $key => $rigo){
        
    /*ogni rigo contiene due parti separati da | 
        e li isoliamo così da potermi stampare separatamente*/
        
    if(strpos($rigo,'|')===FALSE) continue;
        list(
    $parte_a$parte_b) = explode('|'$rigo);
        
    $output_content .= $parte_a ' ' $parte_b '';
        }

    /*semplice pagination due pagine successive e due pagine precedenti*/
    $inizio_pag max(1, ($page_corrente-2));
    $fine_pag min($numero_pagine, ($page_corrente+2));
    $output_pagination '<ul id="pagination">';
    for(
    $i=$inizio_pag$i<=$fine_pag$i++ ){
        if(
    $i!=$page_corrente){
            
    $output_pagination .= '[url="' .$_SERVER['PHP_SELF']. '?pos=' $i '"]' .$i '[/url] ';
            }
        else{
            
    $output_pagination .= $i .' ';
            }
        }
    $output_pagination .= '[/list]';

    /*mandiamo l'output prodotto*/
    echo $output_content;
    echo 
    $output_pagination;
     
    ?> 
    </html>
    Nel database (file.txt) vanno ad inserirsi automaticamente codici Html.
    Il problema è che i codici devono essere separati, come potete vedere, da un "|" e devono disporsi due a due, come ad esempio:

    1|2
    3|4
    5|6
    7|8
    9|10

    Dato che sono i codici html vengono inseriti automaticamente, come posso fare per farli disporre nel database file.txt in questa maniera, cioè in modo automarico?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non ho capito: sono già inseriti così o no?

  3. #3
    Tramite questo codice che si trova in un altra pagina:
    Codice PHP:
    $miofile fopen('../file.txt''r+');
    fwrite($miofile"[img]../cartella/$name[/img]");
    fclose($miofile); 
    Viene a scriversi nel database, come puoi vedere:

    [img]../cartella/$name[/img]

    $name ---> nome del file

    Il problema è che cosi i file vengono scritti uno dopo l'altro cosi:

    [img]../cartella/$name[/img][img]../cartella/$name[/img][img]../cartella/$name[/img]

    E con questa disposizione non viene visualizzato nulla, sicuramente a causa di questo pezzo di codice qui:
    Codice PHP:
    foreach($righi_da_visualizzare as $key => $rigo){
        
    /*ogni rigo contiene due parti separati da | 
        e li isoliamo così da potermi stampare separatamente*/
        
    if(strpos($rigo,'|')===FALSE) continue;
        list(
    $parte_a$parte_b) = explode('|'$rigo);
        
    $output_content .= $parte_a ' ' $parte_b '';
        } 
    Sapresti suggerirmi qualche soluzione?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ah, forse ho capito... potresti anche solo riscrivere così, probabilmente:

    Codice PHP:
    $miofile fopen('../file.txt''r+'); 
    fwrite($miofile"[img]../cartella/$name[/img]".'|'.''."\r\n"); 
    fclose($miofile); 
    ...in pratica il file sarebbe così composto:


    codice:
    [img]../cartella/$name[/img]|
    [img]../cartella/$name[/img]|
    [img]../cartella/$name[/img]|

  5. #5
    Perfetto!!!
    Soltanto che con 'r+' i codici vengono sostituiti, quindi se ne ha sempre uno, invece con 'a' i file vengono messi alla fine, come posso fare per far si che i codici html vengano inseriti al'inizio del database?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se intendi aggiungere dati "in testa" puoi vedere aggiungere dati in testa a un file , ma in realtà puoi anche appenderli normalmente in coda e poi invertire i dati letti... cosa vuoi ottenere?

  7. #7
    Quando un file viene caricato, che venga visualizzata in testa agli altri file.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi seguire il link che ti ho postato prima, oppure lasci l'append in coda e poi aggiungi una riga nell'altro script:

    Codice PHP:
    ...
    $array_righi file($db_txt); 
    $array_righi array_reverse($array_righi); // <--- RIGA AGGIUNTA
    ... 
    che "inverte" l'ordine dei dati

  9. #9
    Ottimo!
    Grazie Mille!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    solved.

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