- Home
- Categorie
- Coding e Sistemistica
- PHP
- Integrita' referenziale
-
Integrita' referenziale
Ho bisogno del vostro aiuto,
ho queste tabelle
[h=2]actor[TABLE="class: print"]
[TH="width: 50, bgcolor: #E5E5E5"]Colonna[/TH]
[TH="width: 80, bgcolor:"]Tipo[/TH]
[TH="width: 40, bgcolor:"]Null[/TH]
[TH="width: 70, bgcolor:"]Predefinito[/TH]
[TH="bgcolor:"]Commenti[/TH]
[/TR][TD="class: nowrap, bgcolor: #FFFFFF"]actor_id (Primaria)[/TD]
[TD="class: nowrap, bgcolor:"]smallint(5)[/TD]
[TD="bgcolor:"]No[/TD]
[TD="class: nowrap, bgcolor:"][/TD]
[TD="bgcolor:"][/TD]
[/TR][TD="class: nowrap, bgcolor:, align: start"]nome[/TD]
[TD="class: nowrap, bgcolor:, align: start"]varchar(45)[/TD]
[TD="bgcolor:, align: start"]No[/TD]
[TD="class: nowrap, bgcolor:, align: start"][/TD]
[/TR]
[/TABLE][h=2]gallery[TABLE="class: print"]
[TH="width: 50, bgcolor:"]Colonna[/TH]
[TH="width: 80, bgcolor:"]Tipo[/TH]
[TH="width: 40, bgcolor:"]Null[/TH]
[TH="width: 70, bgcolor:"]Predefinito[/TH]
[TH="bgcolor:"]Commenti[/TH]
[/TR][TD="class: nowrap, bgcolor:"]gallery_id (Primaria)[/TD]
[TD="class: nowrap, bgcolor:"]int(11)[/TD]
[TD="bgcolor:"]No[/TD]
[TD="class: nowrap, bgcolor:"][/TD]
[TD="bgcolor:"][/TD]
[/TR][TD="class: nowrap, bgcolor:, align: start"]gallery[/TD]
[TD="class: nowrap, bgcolor:, align: start"]varchar(225)[/TD]
[TD="bgcolor:, align: start"]No[/TD]
[TD="class: nowrap, bgcolor:, align: start"][/TD]
[/TR]
[/TABLE][h=3]
in Designer (phpMyAdmin) vorrei relazionare actor_id con gallery_id per creare per ogni attore una gallery,
il problema che quando cerco di collegarli mi visualizza questo erroremysql impossibile aggiungere il vincolo di integrita' referenziale (foreign key constraint) ``` :x nel database actor e' relazionato con un'altra tabella [h=2]film_actor[TABLE="class: print"] [TH="width: 50, bgcolor:"]Colonna[/TH] [TH="width: 80, bgcolor:"]Tipo[/TH] [TH="width: 40, bgcolor:"]Null[/TH] [TH="width: 70, bgcolor:"]Predefinito[/TH] [TH="bgcolor:"]Commenti[/TH] [/TR] [TD="class: nowrap, bgcolor:"]actor_id *(Primaria)*[/TD] [TD="class: nowrap, bgcolor:"]smallint(5)[/TD] [TD="bgcolor:"]No[/TD] [TD="class: nowrap, bgcolor:"][/TD] [TD="bgcolor:"][/TD] [/TR] [TD="class: nowrap, bgcolor:, align: start"]film_id *(Primaria)*[/TD] [TD="class: nowrap, bgcolor:, align: start"]smallint(5)[/TD] [TD="bgcolor:, align: start"]No[/TD] [/TR] [/TABLE] [h=3]Indici[TABLE] [TH="bgcolor:"]Chiave[/TH] [TH="bgcolor:"]Tipo[/TH] [TH="bgcolor:"]Unica[/TH] [TH="bgcolor:"]Compresso[/TH] [TH="bgcolor:"]Colonna[/TH] [TH="bgcolor:"]Cardinalità[/TH] [TH="bgcolor:"]Codifica caratteri[/TH] [TH="bgcolor:"]Null[/TH] [TH="bgcolor:"]Commenti[/TH] [/TR] [TR="class: noclick"] [TD="bgcolor:"]PRIMARY[/TD] [TD="bgcolor:"]BTREE[/TD] [TD="bgcolor:"]Sì[/TD] [TD="bgcolor:"]No[/TD] [TD="bgcolor:"]actor_id[/TD] [TD="bgcolor:"]64[/TD] [TD="bgcolor:"]A[/TD] [TD="bgcolor:"]No[/TD] [TD="bgcolor:"][/TD] [/TR] [TR="class: noclick"] [TD="bgcolor:"]film_id[/TD] [TD="bgcolor:"]128[/TD] [TD="bgcolor:"]A[/TD] [TD="bgcolor:"]No[/TD] [/TR] [TR="class: noclick"] [TD="bgcolor:, align: start"]idx_fk_film_id[/TD] [TD="bgcolor:, align: start"]BTREE[/TD] [TD="bgcolor:, align: start"]No[/TD] [TD="bgcolor:, align: start"]No[/TD] [TD="bgcolor:, align: start"]film_id[/TD] [TD="bgcolor:, align: start"]128[/TD] [TD="bgcolor:, align: start"]A[/TD] [TD="bgcolor:, align: start"]No [/TD] [/TR] [/TABLE]
-
Ciao,
se vuoi aggiungere una chiave esterna devi prima creare un campo a cui associarla.
Es. se vuoi creare una o più gallery per ogni attore, hai uno schema del genere
Tabella actor
actor_id, nameTabella gallery
gallery_id, actor_id_fk, galleryDove actor_id_fk è la chiave esterna collegata a actor_id della tabella actor.
-
Ciao flaviors200,:)
grazie della rispostacome faccio a creare actor_id_fk?
con una query o da crea campo, se e' la seconda che tipo, int(11)?
per la relazione da gallery actor_id_fk - actor_id o viceversa?
-
sto provando, ma senza successo,
ancora errore
-
Scusa ma quando crei una chiave esterna, questa deve uguale al campo a cui è legata.
Se definisci il campo actor_id come smallint(5) unsigned, la chiave esterna actor_id_fk deve essere smallint(5) unsigned
-
caspita, hai ragione, nemmeno mi ero accorto
la relazione mi sembra corretta
qual'e' la query per ricuperare le foto nella pagina attore?
-
sono riuscito a creare la query, ma per qualcosa che mi sfugge non riesco a visualizzare la foto nella tab "Gallery", solo l'icona vuota,
ho deciso di inserire le foto in una cartella con il nome dell'attore, per facilitare la ricerca,
l'immagine e' posizionata nella cartella image_upload/actor/uploads/Ginger Rogers/ginger_rogers.jpg
la path mi restituisce pero' http://localhost/Cinema/image_upload/actor/uploads/Ginger Rogers/
se qualcuno gentilmente mi aiuta
[PHP]<?php
require_once("connetti.php");
$actor_id = $_GET["id"];
$sql="select photo from gallery where actor_id_fk=".$_GET['id'];
$result=mysql_query($sql); $riga=mysql_fetch_row($result);
$filename=basename($riga[0]);?>
[/PHP][PHP]<div role="tabpanel" class="tab-pane"id="gallery"><p class="bioheading">Gallery</p><div class="biodata">
<img src="image_upload/actor/uploads/<?php echo $row ['nome'] .$row ['photo'];?>"></div></div>[/PHP]questi sono i campi
-
ho provato a strutturare un'altra query con il metodo di Stefano, risultato: un disastro
mi restituisce errore
mySQL error: Not unique table/alias: 'gallery'
[PHP]<?php
require_once("connetti.php");
$gallery_id = $_GET['id'];
$query = "SELECT
gallery.actor_id_fk as actor_id_fk,
gallery.photo as photoFROM gallery INNER JOIN gallery ON gallery.actor_id_fk = gallery.actory_id_fk WHERE gallery.actor_id = " . $gallery_id;
$result = mysql_query( $query );
if (!$result)
die("mySQL error: ". mysql_error());
while( $row = mysql_fetch_object( $result ) ) : ?><div role="tabpanel" class="tab-pane"id="gallery"><p class="bioheading">Gallery</p><div class="biodata">
<img src="image_upload/actor/uploads/<?php echo $row->photo; ?>" width="285px" height="400px" style="border:6px solid #333333;"></div></div>
<? endwhile; ?>
[/PHP]questa e' lo schema aggiornato
-
aggiornamento:
questa funziona, ma...-
visualizza solo una foto dell'id associato (in realta' ci sono altre)
-
nel campo photo devo inserire la path e il nome della foto, **/Ginger Rogers/ginger_rogers.jpg
**vorrei che prelevasse il nome dall'id, ma non riesco a trovare la soluzione
cosi:
image_upload/actor/uploads/Ginger Rogers/ginger_rogers.jpg
[PHP]<?php
require_once("connetti.php");
$gallery_id = $_GET["id"];
$query = mysql_query ("select photo from gallery where actor_id_fk = {$gallery_id}");while($row=mysql_fetch_array($query)){
?>
<div role="tabpanel" class="tab-pane"id="gallery"><p class="bioheading">Gallery</p><div class="biodata">"<img src="image_upload/actor/uploads/<?php echo $row ['photo'];?>"></div></div>
<?php
}
?>
[/PHP]
-
-
ho risolto parzialmente, con una nuova query
[PHP]<?php
require_once("connetti.php");
$gallery_id = $_GET["id"];
$query = mysql_query ("select photo from gallery where actor_id_fk = {$gallery_id}");while($row=mysql_fetch_array($query)){
?>
[/PHP][PHP]<div role="tabpanel" class="tab-pane"id="gallery"><div class="biodata">
<?php echo '<img src="image_upload/actor/uploads/' . $row['photo'] . '" alt="" height="180" width="150"'?></div></div>
<a href="image_upload/actor/uploads/<?php echo $row['photo']; ?>" onclick=" return iPop(this.href)">Enlarge Photo </a><!-- esempio 2, con popup e javascript iPop -->
<script src="js/ipop.js" type="text/javascript"></script>
<!-- esempio 2, con popup e javascript iPop -->
<?php
}
?> [/PHP]resta il problema delle directory e la posizione delle photo, io li vorrei allineate con il testo sotto, qualcuno esperto mi dice come fare?
ho provato vari tentativi, ma senza risultati, il motivo e che le foto sono visibili nella tab,ps: domani vado via per le vacanze, poi non potro' rispondere per un mese circa
-
risolto