utilizzare INN JOIN

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Sono di nuovo ritornaro a rompere.... Allora il mio nuovo quesito è ils eguente. Ho due tabelle di cui una si chiama tabella utenti e l'altra si chiama tabella immagine. le tabelle sono strutturate in questa maniera qua:

Tabella utenti:

PHP:
create table utenti (

id 		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome 		VARCHAR(30) NOT NULL,
cognome 	VARCHAR(30) NOT NULL,
username 	VARCHAR(30) NOT NULL,
email           VARCHAR(40) NOT NULL,
password        VARCHAR(255) NOT NULL,
attivo          ENUM('1', '0') DEFAULT '0',
PRIMARY KEY (id)
);

Tabella immagine:

PHP:
id 		      INT UNSIGNED NOT NULL AUTO_INCREMENT,
album              VARCHAR(30) NOT NULL,
immagine         VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

Ora il punto è il seguente. Debbo unire le due tabelle in modo tale che se si logga l'utente A ha la sua propria immagine e se si logga l'utente B ha la sua propria immagine. Se si loggano più persone, ognuna di esse che è registrato in un db appunto utenti, può aggiungere e successivamernte isualizzare la propria immagine personale.
Ho eseguto la seguente query:

PHP:
$query =mysql_query("SELECT utenti.nome, immagine.immagine FROM utenti INNER JOIN  immagine ON utenti.id = immagine.1");

Ma non mi da il risultato voluto. Anzi mi fa vedere tutte le immasgini presenti nel db immagine. Come risolvere la questione ??? Rifar il db utenti aggiungendo avatar ??? Ma poi ho paura che si appesantisca troppo, anche se sono link ??? Oppure c'è rimedio ??? Spero in una vostra soluzione. Grazie.
 
devi aggiungere alla tabella immagini un campo con l'id utente
ogni immagine sara associata ad un id utente
la join diventerà cosi
PHP:
ON utenti.id = immagine.idUtente
mi spieghi cosa pensavi di fare con questo
PHP:
ON utenti.id = immagine.1
non puoi sparare codice a caso e sperare che funzioni
 
Ciao

devi aggiungere alla tabella immagini un campo con l'id utente
ogni immagine sara associata ad un id utente
la join diventerà cosi
PHP:
ON utenti.id = immagine.idUtente
mi spieghi cosa pensavi di fare con questo
PHP:
ON utenti.id = immagine.1
non puoi sparare codice a caso e sperare che funzioni

Ciao Ale,

Hai ragione, suggerimento sbagliato o ho capito male io: Mi avevano detto di mettere un 1 ma forse non andava posto in quella maniera.
 
Ciao

Ciao a tutti,

Allora ho fatto le dovute correzioni. Sperando che vadano bene. La query ora è diventata così, mi hanno consiglitado di mettere session alla fine, in quanto l'id lo prende già dalla sessione aperta in precdenza. Posto la query:

PHP:
$query =mysql_query("SELECT utenti.id FROM utenti WHERE nome INNER JOIN immagine ON utenti.id =".$_SESSION['id']);

Rimproveratemi se ho scritto kazzate.... Grazie.
 
Ciao

Scusate,

Mi dite cosa c'è che non va ??? Non ci sto a capì più niente a sto punto.

PHP:
$query =mysql_query("SELECT utenti.id FROM utenti WHERE immagine INNER JOIN  ON immagine.id_nome =  ".$_SESSION['id']);  //questa è la query ma non gli piace

Da il seguente errore:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /volume1/web/utenti/MegaLaboratorio/paginaris.php on line 71

E sotto posto anche il pezzo di codice che dovrebbe mostrare l'immagine:

PHP:
while($foto=mysql_fetch_array($query))
    
{
//echo '<img src ="immages/'.$foto['immagine']. '">';
 ?>
    <br> <br>        
    <img src="immages/<?php echo$foto["immagine"]?>" class="immages">
    
    
    
<?php

}
?>

Posto anche le tabelle come sono strutturate.

Tabella utenti:

PHP:
create table utenti (

id		INT UNSIGNED NOT NULL AUTO_INCREMENT,
nome		VARCHAR(30) NOT NULL,
cognome 		VARCHAR(30) NOT NULL,
username 		VARCHAR(30) NOT NULL,
email                          VARCHAR(40) NOT NULL,
password    	VARCHAR(255) NOT NULL,
id_immagine	INT(255) NOT NULL,
attivo          	ENUM('1', '0') DEFAULT '0',
PRIMARY KEY (id)
);


Tabella immagine:

PHP:
create table immagine (

id 		INT UNSIGNED NOT NULL AUTO_INCREMENT,
album		VARCHAR(30) NOT NULL,
immagine 		VARCHAR(255) NOT NULL,
id_nome		INT(255) NOT NULL,
PRIMARY KEY (id)
);

Ah una cosa strana, se metto questa query che ho fatto la più semplice e banale:

PHP:
//$query =mysql_query("SELECT immagine FROM immagine WHERE id = $id");

Prende sia l'immagine singola se mi connetto come utente A e sia se mi connetto cme utente B. Strano no ???? Spero in un vostro ulteriore aiuto, grazie a tuti.
 
Mi sembra di capire che ti mancano i fondamentali.
La tabella 'immagini' deve avere una chiave esterna che corrisponde all'id dell'utente a cui appartiene l'immagine allora bisogna unire le due tabelle tramite una inner join su quel campo e sul campo id nella tabella utenti e quindi effettuare una WHERE per selezionare solo le foto appartenenti all'id desiderato.
 

Discussioni simili