• User Attivo

    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 errore

    mysql 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]

  • User Attivo

    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, name

    Tabella gallery
    gallery_id, actor_id_fk, gallery

    Dove actor_id_fk è la chiave esterna collegata a actor_id della tabella actor.


  • User Attivo

    Ciao flaviors200,:)
    grazie della risposta

    come 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?


  • User Attivo

    sto provando, ma senza successo,

    ancora errore :arrabbiato: :rollo:

    image

    image


  • User Attivo

    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


  • User Attivo

    caspita, hai ragione, nemmeno mi ero accorto 😄

    la relazione mi sembra corretta

    image

    qual'e' la query per ricuperare le foto nella pagina attore? :mmm:


  • User Attivo

    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

    image


  • User Attivo

    ho provato a strutturare un'altra query con il metodo di Stefano, risultato: un disastro :arrabbiato:

    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 photo

    FROM 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

    image


  • User Attivo

    aggiornamento:
    questa funziona, ma...

    1. visualizza solo una foto dell'id associato (in realta' ci sono altre)

    2. 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]


  • User Attivo

    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,

    image

    ps: domani vado via per le vacanze, poi non potro' rispondere per un mese circa


  • User Attivo

    risolto