Risultato in tabella...

Salve... eccomi ancora qui con un mio problema... ho creato una pagina "categories.php" nella quale, dopo aver fatto login da admin, è possibile creare una nuova categoria per le news che contiene ID, Nome Categoria e Url immagine. Questi dati vengono salvati in una tabella dentro al database, ovviamente l'ID si autoincrementa.

A questo punto vorrei che nella stessa pagina, in basso, sotto al form per inserire una nuova categoria, comparissero tutte allineate tutte le categorie già inserite complete di id, immagine e nome.

Sono riuscito a fare tutto tranne quest'ultima parte... se necessario metto tutto il codice della pagina  ;D

inviato 11 anni fa
z3ro
z3ro
1
X 0 X

ciò che devi fare è inviare una query (tipo SELECT * FROM categorie) e poi effettuare la fetch dei risutlati. Problemi? Dimmi nel dettaglio cosa non sapresti fare.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

il codice in quella parte è questo:

$db = mysql_connect($db_host, $db_user, $db_pass);

   if ($db == FALSE)

   die ("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore nella connessione. Verificare i parametri del database nel file inc/config.php</span>");

   mysql_select_db($db_name, $db)

   or die ("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore nella selezione del database. Verificare i parametri nel file inc/config.php</span>");

   $query = "SELECT cid,image,name FROM ".$tbl_prefix."categories ORDER BY cid";

   $result = mysql_query($query, $db);

   while ($row = mysql_fetch_array($result)) { echo "<tr><td>$row[cid]<br></td></tr>";

    echo "<tr><td><image src=\"$row[image]\"<br></td></tr>";

    echo "</td></tr>$row[name]</td></tr>";}

Vorrei però che venisse sistemata meglio la visualizzaizione delle categorie con delle tabelle fatte in maniera decente  ;)

Spero di essermi spiegato

risposto 11 anni fa
z3ro
z3ro
1
X 0 X

Allora il problema non è il PHP ma l'HTML generato dallo script. Normalmente io procedo in questo modo: con il Dreamweaver realizzo una pagina HTML che dovrà assomigliare al risutato finale del mio script. In pratica costruisco la tabella, imposto margini, colori, sfondi ecc. ed inserisco dei dati e delle immagini di prova. Quando il risultato grafico mi soddisfa passo alla visualizzazione dell'HTML e vedo come è strutturato. A quel punto mi rimane da capire quali saranno le parti che rimarranno invariate e quali invece dovranno essere create dinamicamente dal PHP. Ad esempio se nell'HTML c'è una tabella allora il suo tag di apertura non dovrà essere modificato dal PHP. Mi basterà quindi mettere nello script una semplice echo del tipo:

echo '<table cellpadding="4" cellspacing="2" border="1" width="100%"';

per le righe della tabella invece so che dovrò inserire dinamicamente i dati estratti dal database. Perciò dall'html creato dal dreamweaver prendo solo le parti che non contengono le informazioni dinamiche, che invece inserirò personalmente attraverso delle variabili. Ad esempio per una riga con 3 colonne, contenenti l'id, l'immagine ed il nome della categoria nel dreamweaver troverò:

<tr class="stile2">
  <td width="15%">132</td>
  <td width="25%"><img src="immagini/test.jpg"</td>
  <td width="60%"><strong>Categoria 123</strong></td>
</tr>

nel PHP (in particolare nel ciclo "while" di estrazione dei dati dopo la query) invece metterò:

echo '
<tr class="stile2">
  <td width="15%">' ,$row['cid'] , '</td>
  <td width="25%"><img src="immagini/' , $row['image'] , '"</td>
  <td width="60%"><strong>' , $row['name'] , '</strong></td>
</tr>
';

Nota come al posto dei dati di prova "123", "test.jpg" e "Categoria 123", che avevo usato nella creazione della pagina di prova, adesso pongo le variabili $row['cid'], $row['image'] e $row['name'] che contengono i dati estratti dal database.

Capirai quindi che ottenere un risultato "decente" dipende dalle tue aspettative e da come queste si traducono in HTML. Non c'è quindi una risposta univoca al tuo problema.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Allora... un pò sono riuscito a risolvere il mio problema... ma un pò no... il risultato che ottengo ora è questo:

con questo codice:

<?php
echo '<table width="125" border="0" class="Stile7">
              <tr>
               <td><div align="center">ID: ' ,$row['cid'] , '</div></td>
              </tr>
              <tr>
               <td><div align="center"><img src="' , $row['image'] , '"></div></td>
              </tr>
              <tr>
               <td><div align="center"><strong>' , $row['name'] , '</strong></div></td>
              </tr>
           </table>';
?>

Però io vorrei che le tabelle fossero affiancate non una sopra all'altra :) mi sono spiegato?

risposto 11 anni fa
z3ro
z3ro
1
X 0 X

Il tuo codice genera 3 righe (<tr>) ognuna con una cella (<td>)

Tu invece hai bisogno di creare una tabella con una riga (quindi un solo <tr>) con tre celle (tre <td>)

Prima del ciclo di estrazione dei dati dal db devi aprire la tabella e la riga:

<?php
echo '<table width="125" border="0" class="Stile7">
        <tr>';
?>

nel ciclo devi costruire le singole celle di questa riga, che quindi verranno mostrate l'una di fianco all'altra:

<?php
echo '<td align="center">ID: ' ,$row['cid'] , '<br>
        <img src="' , $row['image'] , '"><br>
        <strong>' , $row['name'] , '</strong>
      </td>';
?>

Nota i <br> per andare a capo.

Ed infine, dopo il ciclo devi chiudere la riga e la tabella:

<?php
echo '   </tr>
      </table>';
?>

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

perfetto  ;)

Grazie mille come sempre... ora vado a programmare la gestione delle news  ;D

risposto 11 anni fa
z3ro
z3ro
1
X 0 X

Piccolo dubbio aggiuntivo... siccome devo inserire la stessa parte di script anche nella parte di inserimento news (in modo da poter inserire la news nella sua categoria), ho provato a mettere un radio button in questo modo:

<?php
echo '<form name="cat" method="post" action="">
         <table width="125" border="0" cellpadding="5" cellspacing="5" class="Stile7">
         <tr>';
   while ($row = mysql_fetch_array($result)) 
   { 
      echo '<td align="center"><input name="',$row['cid'],'" type="radio" value="radiobutton">ID: ' ,$row['cid'] , '<br>
        <img src="' , $row['image'] , '"><br>
        <strong>' , $row['name'] , '</strong>
      </td>';
   }
   echo '   
      </tr>
      </table>
      </form>';
?>

Però, così, c'è la possibilità di selezionarli tutti cosa che io non vorrei che facesse... dunque come mi conviene mettere i risultati? (magari anzichè utilizzare radiobutton mi conviene un menù a tendina etc?)

risposto 11 anni fa
z3ro
z3ro
1
X 0 X

Guarda qui come si usano i radio (secondo esempio):

http://www.phpnews.it/content/view/252/107/

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Perchè questo codice:

<?php
echo '<table width="125" border="0" cellpadding="5" cellspacing="5" class="Stile7">
         <tr><td><form method=post action="news.php?action=add"><select name="cat">';
         while ($row = mysql_fetch_array($result)) 
         {
            print "<option value=$row['cid']>$row['name']";
         }
         print "</select><input type=Submit value=Invia><br></td>";
   
      
   echo '   
      </tr>
      </table>';
}
?>

Comporta questo errore?

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /membri/z3rolabs/php/cms/admin/categories2.php on line 215

risposto 11 anni fa
z3ro
z3ro
1
X 0 X

perché se vuoi mettere un valore di un array in una stringa con doppi apici allora non devi mettere i singoli apici per specificare la chiave. Es.:

Sbagliato:

echo "ciao $utente['nome']";

Corretto:

echo "ciao $utente[nome]";

RIcorda però che fuori da una stringa il comportamento da seguire è opposto, ovvero sono necessari gli apici. Es.:

Sbagliato:

$utente[nome] = 'Marco';

Corretto:

$utente['nome'] = 'Marco';

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda