PDA

View Full Version : [php - rookie!] Piccolo problema :D


Narancia1
14-03-2008, 23:29
Ciao ragazzi, sto iniziando a lavorare con php/mysql e spero possiate farmi luce su un piccolo problema in php. Sono proprio agli inizi quindi non linciatemi se dico qualche fesseria

sto creando un piccolo archivo film e sono inciampato in un piccolo problema quando cerco di gestire gli attori. Premetto che in mysql gestisco tutto in una singola tabella e il campo attori è un varchar dove inserisco in un unico record tutti gli attori che hanno partecipato al film separati da una virgola. Ora la cosa che non riesco a fare è una chiamata al campo attori, farne una lista(fin qui ok), e un link singolo a ogni attore che porta a una pagina X con una variabile che lo identifica (per esempio il nome). Del tipo vado sulla scheda di un film, mi genero tutta la lista degli attori e ognuno porta a una nuova pagina con la variabile del nome in modo che poi possa cercare altre informazioni.E possibile farlo?

ho provato con explode, trasformato in un array e poi scritto una cosa del genere per provare

foreach ($attori as $value) {
echo "<a href="scheda.php?id=$value>" . $value . "</a>" . "<br>";
}

ma con il cavolo funziona

Ora ho sbagliato tutto? qualcosa? esiste altri metodi?

illuminatemi

MEMon
15-03-2008, 13:59
Ciao, ma come esegui la query?

Ad esempio se hai la tabella attori fatta così:

id
name


Con questo codice prendi fuori tutti i record della tabella e stampi il link come lo desideri:

$query="SELECT * FROM Attori";
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result)){
echo "<a href=\"scheda.php?id=".$row['id'].">".$row['name']."</a></br>";
}

$row ogni volta è un array riferito al record che si sta leggendo che contiene i due campi 'id' e 'name'.

vizzz
15-03-2008, 14:43
Premetto che in mysql gestisco tutto in una singola tabella e il campo attori è un varchar dove inserisco in un unico record tutti gli attori che hanno partecipato al film separati da una virgola.

io mi muoverei per avere un design migliore di questo, una tabella per gli attori, una per i film....

MEMon
15-03-2008, 14:47
io mi muoverei per avere un design migliore di questo, una tabella per gli attori, una per i film....

Ops non avevo fatto caso a questo particolare!
Segui il consiglio di vizzz e cerca di "progettare" meglio il tuo database creando varie tabelle come ti ha suggerito

Rubberick
15-03-2008, 16:41
ad ogni modo dato che esiste una comoda funzione serialize e unserialize xche' non usare quella? :D

poi se il varchar nn basta meglio passare a uno smalltext

Narancia1
16-03-2008, 01:39
grazie delle risposte ora vedo di spiegarmi un po meglio :D

la mia tabella è costruita così prendendo in esempio un film

id | 1
titolo | Terminator
regia | James Cameron
cast | Arnold Schwarzenegger, Michael Biehn, Linda Hamilton, Paul Winfield, Lance Henriksen, Rick Rossovich, Bess Motta

io ora vorrei generare una lista verticale del cast dove ogni attore ha è un link a una pagina (esempio scheda.php) che trasporta una variabile con il proprio nome. Visto che il campo cast tiene conto di tutto il cast attori come una unica stringa testo mi sembra impossibile lavorarci! Ho provato a usare la funzione explode per separare ogni singolo attore in un array ma poi non riesco a lavorarci comunque :(

Come altra soluzione ho creato una ulteriore tabella che gestisce le persone (attori, regia, sceneggiatori e così via) in modo da risolvere facilmente le chiamate visto che ogni record gestice solo un attore e non tutto il cast del film come nella tabella mostrata su. Comunque mi interessava capire se esiste un metodo anche per risolvere la situazione precedente

Spero di essermi fatto capire e tardi e sabato sera :D

grande comunità sempre gentili!:cool:

MEMon
16-03-2008, 09:42
Beh se proprio vuoi mantenere la stringa di attori, con l'explode non dovresti avere problemi...

$attori=explode(",",$stringa_attori);
foreach($attori as $attore){
echo "<a href=\"scheda.php?id=".$attore.">". $attore."</a></br>";
}