Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Estrarre dei contenuti da tabelle sql con file_get_contents

    Salve ragazzi,
    vi spiego velocemente in problema. Ho realizzato un piccolo CMS per gestire la pubblicazione di articoli nella home page del mio sito. Per far ciò ho realizzato due tabelle, in una ci sono appunto gli articoli e l'altra l'ho chiamata "priorita". Ecco la prima tabella:

    Codice PHP:
    CREATE TABLE `articoli
    (
      `
    art_idint(5unsigned NOT NULL auto_increment,
    `
    titolovarchar(255NOT NULL,
    `
    sottotitolovarchar(255) default NULL,
    `
    testotext NOT NULL,
    `
    autorevarchar(50) default NULL,
    `
    datatimestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    `
    nomevarchar(50NOT NULL default '',
    `
    sizevarchar(25NOT NULL default '',
    `
    typevarchar(25NOT NULL default '',
    `
    immaginelongblob NOT NULL,
    PRIMARY KEY  (`art_id`)

    Ecco la seconda, quella della priorita:
    Codice PHP:
    CREATE TABLE `priorita
    (`
    art_idint(5unsigned NOT NULL,
    `
    flagsenum('1','2','3','4','5'NOT NULL default '1',
    PRIMARY KEY  (`flags`),
    UNIQUE KEY (`art_id`)

    Vi sono due script php che mi permettono di associare determinati articoli ad una specifica priorità. In pratica, ogni priorità corrisponde ad una determinata tabella della Home page, in modo che possa scegliere in quale parte della home page mettere un determinato articolo. Ad esempio, la priorità P1 inserisce il primo articolo in alto nella home page, una sorta di prima notizia. E così via. Vi posto il codice degli script per capirci. Il primo è questo:

    Codice PHP:
    <? 
    include("config.php");
    mysql_connect($db_host$db_user$db_password$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    // inizializza l'array in cui memorizzare gli articoli che sono prioritari 
    $priority = array(); 

    // preleva dal db gli articoli prioritari... 
    $query "SELECT * FROM priorita ORDER BY flags"
    $result mysql_query($query
          or die(
    mysql_error()); 

    // ...e li inserisce nell'array 
    while($row mysql_fetch_array($result)) 

        
    $flag $row['flags']; 
        
    $priority[$flag] = $row['art_id']; 


    // seleziona gli ultimi 10 articoli e li memorizza in un array 
    $l_news = array(); 
    $query "SELECT * 
        FROM articoli Order by art_id
        DESC LIMIT 0,20"

    $result mysql_query($query
          or die(
    mysql_error()); 

    while(
    $row mysql_fetch_array($result)) 

        
    $l_news[] = $row['art_id']; 


    // di seguito comincia a mandare in output codice html 

    ?> 
    <table cellpadding='2' cellspacing='0' border='1'> 
        <tr> 
        <? 
        
    // 12 sono gli articoli prioritari, i primi 4 sono obbligatori 
        // cominciamo a scrivere la riga delle intestazioni 
        
    for($i =1$i <= 5$i ++) 
        { 
            
    // oltre il quinto articolo diamo la possibilita' di cancellare la priorita' 
            
    if($i 4
            { 
                echo 
    "\t\t<th>[url='p_delete.php?id=$i']P $i[/url]</th>\n"
            } 
            else 
            { 
                echo 
    "\t\t<th>P $i</th>\n"
            } 
        } 
        
    ?> 
        </tr> 
        <? 
        
    // cicliamo l'array degli articoli e mandiamo in output cio' che server 
        
    foreach($l_news as $key2 => $key3
        { 
            echo 
    "\t<tr>\n"
            
    $data explode('-'$key3[1]); 
            for(
    $flag 1$flag <= 5$flag ++) 
            { 
                
    // se l'articolo risulta tra i prioritari gli mettiamo il grassetto e togliamo il link 
                
    if(isset($priority[$flag])) 
                { 
                    if(
    $key3[1] == $priority[$flag]) 
                    { 
                        echo 
    "\t\t<td>[b]$key3[1][/b]</td>\n"
                    } 
                    else 
                    { 
                        echo 
    "\t\t<td>[url='p_insert.php?art_id={$data[0]}&amp;flags=$flag']$key3[1][/url]</td>\n"
                    } 
                } 
                else 
                { 
                    echo 
    "\t\t<td>[url='p_insert.php?art_id={$data[0]}&amp;flags=$flag']$key3[1][/url]</td>\n"
                } 
            } 
            echo 
    "\t</tr>\n"
        } 
        
    ?> 
    </table>
    E' commentato, quindi si capisce che fa. Il secondo è questo:

    Codice PHP:
    <? 
    // include i files coi parametri di configurazione per il db 

    include("config.php");
    mysql_connect($db_host$db_user$db_password$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    // la prima parte controlla che i dati passati allo script siano corretti 
         
    $flags = array(1,2,3,4,5); 

    $request_data = array( 
        
    'art_id'
        
    'flags'
        ); 
         
    if(isset(
    $_GET)) 

        foreach(
    $_GET as $key => $value
        { 
            if(!
    in_array($key$request_data)) 
            {    
                
    header("Location: [url]http://www.iso-consulenze.it[/url]"); 
            } 
         
        
    $id = (int) $_GET['art_id']; 
        
    $flag = (int) $_GET['flags']; 
         
        
    $db_table 'priorita'

        if(!
    is_numeric($id) || $id || !in_array($flag$flags)) 
        { 
            
    header("Location: [url]http://www.iso-consulenze.info[/url]"); 
        } 
         } 
         
        
    // la seconda parte inserisce o aggiorna l'articolo 

        
    $query "SELECT * FROM $db_table WHERE flags = '$flag'"
        
    $result mysql_query($query
            or die(
    mysql_error()); 
            
        if(
    mysql_num_rows($result) > 0
        { 
            
    $query "UPDATE $db_table SET art_id = '$id' WHERE flags = '$flag'"
            
    $result mysql_query($query
                or die(
    mysql_error()); 
        } 
        else 
        { 
            
    $query "INSERT INTO $db_table (art_id, flags) VALUES ('$id', '$flag')"
            
    $result mysql_query($query
                or die(
    mysql_error()); 
          } 


    header("Location: [url]http://www.iso-consulenze.info/prova[/url] massimo/indexmassi.php?view_mod=priorita"); 
    ?>
    Anche questo commentato, in pratica serve per inserire gli articoli nella tabella priorità ed assegnargli una determinata priorità da 1 a 5 (contraddistinta dai diversi valori del campo "flags").

    Ora, tutto funziona, la tabella "priorità" viene compilata. Il mio problema è questo. Che non riesco a fare in modo di aggiornare la home page con i vari articoli. Le query dovrebbero essere queste:

    Codice PHP:
    $query = "SELECT * FROM priorita WHERE flags = '1'"; 
    $result = mysql_query($query) 
        or die(mysql_error()); 

    $row = mysql_fetch_array($result); 
    $id = $row['art_id']; 
    $flag = $row['flags']; 

    $query = "SELECT * FROM articoli WHERE art_id = '$id'"; 
    $result = mysql_query($query) 

    ?>

    <?php echo "[b]<a href=\"page.php?id=".$result['art_id']."\">".$row['titolo']."</a>[/b]"?>
    <?php 
    echo $result['sottotitolo'];?>
    Ora, come posso fare in modo di aggiornare la home page e stampare i dati estratti con le query? (in questo caso ad esempio Titolo e Sottotitolo). Se lancio infatti il file che contiene queste query, appunto il file index.php o Home page, non viene visualizzato nulla.
    Come mai? Come potrei utilizzare la funzione File_get_contents?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Ti manca un mysql_fetch_array.

    $query = "SELECT * FROM articoli WHERE art_id = '$id'";
    $result = mysql_query($query);
    $row = mysql_fetch_array($result);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ho aggiunto la riga che mi hai detto ma appare questo errore

    Parse error: syntax error, unexpected T_VARIABLE in /home/mhd-01/......../index.php on line 60

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ora ho aggiunto

    $result = mysql_query($query)
    or die(mysql_error());

    $row = mysql_fetch_array($result);

    cioè la riga "or die(mysql_error));

    Non appare più errore, mi apre la home page ma non c'è nulla. E' vuota, non mi estrae i dati delle query.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Com'è il sorgente adesso ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Eccolo

    $query = "SELECT * FROM priorita WHERE flags = '1'";
    $result = mysql_query($query)
    or die(mysql_error());

    $row = mysql_fetch_array($result);
    $id = $row['art_id'];
    $flag = $row['flags'];

    $query = "SELECT * FROM articoli WHERE art_id = '$id'";
    $result = mysql_query($query)
    or die(mysql_error());

    $row = mysql_fetch_array($result);


    Però forse per capirne il motivo bisognerebbe vedere tutto quello che ho scritto prima. Ossia la relazione che ho creato fra le due tabelle.

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Originariamente inviato da marckhh
    Eccolo

    $query = "SELECT * FROM priorita WHERE flags = '1'";
    $result = mysql_query($query)
    or die(mysql_error());

    $row = mysql_fetch_array($result);
    $id = $row['art_id'];
    $flag = $row['flags'];

    $query = "SELECT * FROM articoli WHERE art_id = '$id'";
    $result = mysql_query($query)
    or die(mysql_error());

    $row = mysql_fetch_array($result);


    Però forse per capirne il motivo bisognerebbe vedere tutto quello che ho scritto prima. Ossia la relazione che ho creato fra le due tabelle.
    E hai :
    codice:
    <?php echo "<a href=\"page.php?id=".$row ['art_id']."\">".$row['titolo']."</a>"; ?> 
    <?php echo $row ['sottotitolo'];?>
    Puoi anche provare ...
    codice:
    $query = "SELECT * FROM articoli WHERE art_id = '$id'"; 
    $result = mysql_query($query) 
        or die(mysql_error()); 
    
    $row = mysql_fetch_array($result);
    print my_sql_num_rows();
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    se $id è un intero non ha bisogno di apici
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Originariamente inviato da dottwatson
    se $id è un intero non ha bisogno di apici
    Se ci sono funziona lo stesso.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da badaze
    Se ci sono funziona lo stesso.
    verissimo... la mia era una pignoleria
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.