mostrare contenuto caricato dinamicamente da database

  • Creatore Discussione Creatore Discussione dla86
  • Data di inizio Data di inizio

dla86

Utente Attivo
27 Mag 2009
36
0
0
Ciao a tutti,
dovrei realizzare una sezione del mio sito dove mostrare una griglia con una serie di contenuti caricati dinamicamente dal database. Premetto che non sono esperto in php però ho realizzato questo codice che intanto mostra il contenuto.

PHP:
<?php
                            require("dati.php");
                            $tot = 10;
                              $query = "SELECT * FROM mia_tabella
                                      WHERE id = 'xxx'
                                      LIMIT 0,$tot";
                            $result = mysql_query($query)
                            or die("Caricamento fallito: ".mysql_error());
                            while ($row = mysql_fetch_array($result))
                            {            
                            echo "<font><b>", $row['title'], "</b></font>";
                            echo "<br>";
                            echo "<font>", $row['introtext'], "</font><br><br>";
                            //echo "<img src='", $row['images'], "'/><br><br>";
                            }
                       
                            mysql_close($connection);
                                            
                        ?>

PHP:
<?php
$connection = mysql_connect("host", "user", "password")
                or die("Impossibile connettersi al server");
$db = mysql_select_db("nome db", $connection)
                or die ("Impossibile connettersi al Database");
?>

Ora vorrei che cliccando su tutto il contenuto mi si aprisse un pop-up che mostrasse il fulltext del contenuto, da caricare sempre dinamicamente dal database. come posso fare?...qui mi sono bloccato...
 
Ciao, dovresti realizzare una nuova pagina che prenda in ingresso l'id di riferimento ed esegua una query per prelevare il campo chiamato fulltext.

Fatto questo dovresti collegare a questa pagina tramite un tag anchor e il metodo javascript window.open che ti permettono di aprirla in un popup.

Un ulteriore consiglio che posso darti è di usare le librerie mysqli, in quanto l'estensione che stai usando per connetterti al database è deprecata.
 
ho capito il 20% di quello che hai detto :(
ti ringrazio comunque. intanto potrei chiederti di indicarmi il codice per connettermi al database visto che l'estensione è deprecata?
 
Provo a mostrarti con un esempio pratico (i nomi che assegno ai files sono di puro riferimento, se li cambi assicurati di cambiarli anche nel codice, dove compaiono):

connessione.php
PHP:
<?php // Qui si effettua la connessione al database

$mySqliLink = mysqli_connect('host', 'user', 'password', 'db');

if (!$mySqliLink) {
    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}


// non è necessario il tag di chiusura di php

lista.php
PHP:
<?php
    require 'connessione.php'; 
    $tot = 10;

    // Le parentesi graffe non aggiungono veramente nulla rispetto a prima
    // torna molto utile però usarle per contrassegnare visivamente le variabili da valutare in una stringa
    $query = "SELECT * FROM mia_tabella WHERE id = 'xxx' LIMIT 0,{$tot}"; 

    // Tentiamo di eseguire la query e verificare se ci sono errori
    if (($result = mysqli_query($mySqliLink, $query)) !== false) {

        // Sono stati trovati record ?
        if (mysqli_num_rows($result) > 0) {

            // Ok, li scorriamo..
            while($row = mysqli_fetch_assoc($result)) {

                echo "<font><b>", $row['title'], "</b></font>"; 
                echo "<br>"; 
                echo '<font>';
                // Definiamo il link che aprirà la finestra popup.
                // Gli apici singoli vanno messi sotto escape con un backlash che li precede, in questo modo
                // non si confondono con i delimitatori di stringa dell'echo di php
                echo '<a href="javascript:void(0);" onclick="window.open(\'descrizione.php?id=\'', $row['id'], ',\'_blank\',\'toolbar=no, scrollbars=yes, resizable=yes\');">';
                    echo $row['introtext']; 
                echo '</a>';
                echo '</font><br><br>'; 

            }
            
            // liberiamo le risorse impiegate dalla query
            mysqli_free_result($result);

        } else {
            echo 'No record found.';
        }

    } else {
        echo 'MySqli Error: ', mysqli_error($mySqliLink);
    }
                        
    mysqli_close($mySqliLink);                                          
?>

descrizione.php
PHP:
<?php
    require 'connessione.php'; 

    // Se è stato passato id come parametro lo prelevo, altrimenti assegnamo valore nullo alla variabile
    $id = isset($_GET['id'])? $_GET['id'] : null;

    // Realizziamo la query facendo un minimo essenziale escape di sicurezza sul parametro $id
    $query = sprintf(
        "SELECT * FROM mia_tabella WHERE id = '%s' LIMIT 1",
        addcslashes(mysqli_real_escape_string($mySqliLink, $escaped), '%_')
    ); 

    // Tentiamo di eseguire la query e verificare se ci sono errori
    if (($result = mysqli_query($mySqliLink, $query)) !== false) {

        // Sono stati trovati record ?
        if (mysqli_num_rows($result) > 0) {

            // Ok, lo preleviamo
            $row = mysqli_fetch_assoc($result);

                echo "<font><b>", $row['title'], "</b></font>"; 
                echo "<br>"; 
                echo '<font>', $row['fulltext'], '</font><br><br>';
            
            // liberiamo le risorse impiegate dalla query
            mysqli_free_result($result);

        } else {
            echo 'No record found.';
        }

    } else {
        echo 'MySqli Error: ', mysqli_error($mySqliLink);
    }
                        
    mysqli_close($mySqliLink);                                          
?>


Sono righe di codice che ho scritto molto alla veloce, potrebbero esserci degli errori.
Fammi sapere comunque se bene o male hai compreso il funzionamento e soprattutto se ora ti è più chiaro cosa intendevo nel mio precedente post.

Per il resto, su php.net trovi la documentazione ufficiale di tutte le funzioni di cui hai bisogno ;)
 
al click non apre nulla.. devo inserire qualche script nella pagina forse?
 
Si, qui sembra esserci un errore mio, sostituisci la riga del link in questo modo:
PHP:
echo '<a href="javascript:void(0);" onclick="window.open(\'descrizione.php?id=', $row['id'], '\',\'_blank\',\'toolbar=no, scrollbars=yes, resizable=yes\');">';

Secondariamente, assicurati anche che non entri in azione il blocco popup del browser se non dovesse ancora apparire.
 
ora apre la nuova finestra ma non dentro un pop-up. è voluta questa cosa?
poi sussiste un altro problema..dentro la nuova finestra leggo "no record found" ovvero non carica quello che dovrebbe caricare.
 
Prova a fare un print della query nel secondo file e controlla se viene generata correttamente.

Quanto alla popup probabilmente vorrà anche sapere le dimensioni della finestra, quindi sempre sul link prova a modificare ancora così:
PHP:
echo '<a href="javascript:void(0);" onclick="window.open(\'descrizione.php?id=', $row['id'], '\',\'_blank\',\'toolbar=no,scrollbars=yes,resizable=yes,width=400,height=400\');">';
 
Ho visto che hai sostituito id con asset_id nella url.


Nel file descrizione.php, hai modificato questo punto?
PHP:
$id = isset($_GET['id'])? $_GET['id'] : null;


Se si, fai un print della query, in questo modo:
PHP:
// La query già presente
    $query = sprintf(
        "SELECT * FROM mia_tabella WHERE id = '%s' LIMIT 1",
        addcslashes(mysqli_real_escape_string($mySqliLink, $escaped), '%_')
    );

    // Questo è il print:
    echo $query;
 
si ho sostituito tutti id con asset_id
fatto il print della query:

SELECT * FROM finesse_content WHERE asset_id = '' LIMIT 1

la vedi anche cliccando per aprire il pop-up
 

Discussioni simili