luigi7 (Normal User)
Pro
Messaggi: 83
Iscritto: 28/06/2011
|
Salve, chi mi può spiegare perché con questa query:
Codice sorgente - presumibilmente Php |
$pag = new Paginazione("SELECT *, utenti._user as n1 FROM pagine JOIN utenti ON pagine._userid = utenti.id",10, "pagina");
|
che è inclusa con una paginazione ma questo non c'entra nulla...
solamente che quando recupero i dati per esempio:
Codice sorgente - presumibilmente PHP |
</tr> <?php // restituisce un array multi-dimensionale con i record if($record = $pag->Show()) { foreach($record as $row) { ?> <tr> <td style="vertical-align: top; text-align: center;"> <?php echo "".$row["n1"]."";?></td> <td style="vertical-align: top; text-align: center;"> <?php echo "".$row["titolo"]."";?></td> <td style="vertical-align: top; text-align: center;"> <?php echo "".$row["data"]."";?></td> <td style="vertical-align: top; text-align: center;"> <?php echo "".$row["active"]."";?></td> <td style="vertical-align: top; text-align: center;"> <a href="pag_modifica.php?id=<?php echo "".$row["id"]."";?>" onClick="return confirm('Modifica?');"><img src="../ico/edit_32x32.png" border="0" alt="cancella" title="modifica" /></a></td> <td style="vertical-align: top; text-align: center;"> <a href="pag_del.php?id=<?php echo "".$row["id"]."";?>" onClick="return confirm('Cancella?');"><img src="../ico/delete_32x32.png" alt="cancella" border="0" title="cancella" /></a></td> </tr> <?php } ?> </tbody> </table>
|
mi vanno in conflitto tra queste due tabelle... ovvero.
che active invece di essere del campo delle pagine e quello degli utenti..
Non so come spiegarvelo ..
ma in poche parole va in conflitto con le due tabelle.
mi dite come posso risolvere?
scusate l'italiano ma ho problemi e faccio fatica ad spiegare le cose che non so.
grazie mille. Ultima modifica effettuata da luigi7 il 04/12/2011 alle 14:33 |
|
Mte90 (Member)
Guru
Messaggi: 1144
Iscritto: 25/03/2008
|
vediamo se ho capito joinando i risultati ottieni che i valori nella colonna actine siano composti da entrambi i valori delle 2 colonne?
forse perchè in entrambe le tabelle c'è il campo active?
|
|
luigi7 (Normal User)
Pro
Messaggi: 83
Iscritto: 28/06/2011
|
Postato originariamente da Mte90:
vediamo se ho capito joinando i risultati ottieni che i valori nella colonna actine siano composti da entrambi i valori delle 2 colonne?
forse perchè in entrambe le tabelle c'è il campo active? |
si giusto.. uso sempre i nomi uguali a tutte le tabelle che scrivo..
ed quindi con quella join mi vanno in conflitto..perché active c'è sia in utenti, pagine , articoli, foto, etc..
e uso anche altri campi, come : id, titolo, testo etc..tutti uguali...per non impazzire..
come posso risolvere per non andare in conflitto?
Con altri alias è possibile?
grazie mille e buona domenica. |
|
luigi7 (Normal User)
Pro
Messaggi: 83
Iscritto: 28/06/2011
|
scordavo anche il campo "ID" mi va in conflitto...
con quello degli utenti invece di scrivere quello della tabella "pagine" o altro.
|
|
Mte90 (Member)
Guru
Messaggi: 1144
Iscritto: 25/03/2008
|
semplice semplice cambiare i nomi ai campi nel database?
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Quando fai una select, non usare *, specifica i nomi dei campi, dopodiche' puoi utilizzare la parola chiave AS per risolvere i conflitti.
Codice sorgente - presumibilmente PHP |
SELECT u .id , p .id AS pagina_id FROM user u JOIN pagina p ....
|
|
|
luigi7 (Normal User)
Pro
Messaggi: 83
Iscritto: 28/06/2011
|
scusa molto .. ma non capisco la tua sintassi della query..
e sto provando mille modi..
ti posto la mia e poi mi protesti un favore di inserire la tua query intera nel mio codice.. se no non ci capisco.
scusa, ma son cose nuove per me.
Codice sorgente - presumibilmente Php |
$pag = new Paginazione("SELECT utenti._user as n1,pagine.titolo,pagine.id,pagine.data,pagine.active FROM pagine INNER JOIN utenti ON utenti.id = pagine.id",10, "pagina");
|
ora funziona solo che mi mangia i record..
la paginazione è impostata a 10 record per pagine..
e nell'archivio ci sono solo 3 dati...
e lui con questa query che ho fatto me li vede 2.
L'unico se inverto ON utenti.id=pagine.id all'incontrario allora li vede tutti i record..
solo che i dati si duplicano.
come posso fare?
grazie mille.
Ultima modifica effettuata da luigi7 il 06/12/2011 alle 20:15 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Mi pare che tu non conosca le differenze tra i diversi tipi di join... assicurati di leggere questo: it.wikipedia.org/wiki/Join_(SQL)
Ultima modifica effettuata da pierotofy il 06/12/2011 alle 23:51
|
|
luigi7 (Normal User)
Pro
Messaggi: 83
Iscritto: 28/06/2011
|
Postato originariamente da pierotofy:
Mi pare che tu non conosca le differenze tra i diversi tipi di join... assicurati di leggere questo: it.wikipedia.org/wiki/Join_(SQL) |
ok, ho letto ho fatto cosi come c'è nell'esempio "Esempio di inner join in forma esplicita:"
vedi questa:
Codice sorgente - presumibilmente Php |
$pag = new Paginazione("SELECT utenti._user as _user, pagine.* FROM pagine INNER JOIN utenti ON pagine.id = utenti.id",20, "pagina");
|
ma non vengo fuori..
manga i record .. come mai ?... e pure ho fatto come diceva in wikipedia,
e ho aggiunto solo un alias all'user.
forse è la classe della paginazione?
se e quella dopo te la posto cosi vedi se è per colpa della classe che mi gestisce la paginazione..
grazie mille.
buona giornata.
EDIT -- c'è lo fatta. al meno spero...
Codice sorgente - presumibilmente Php |
$pag = new Paginazione("SELECT utenti._user as _user, pagine.* FROM utenti INNER JOIN pagine ON utenti.ID = pagine._userid",20, "pagina");
|
mi dici se è giusto?
era qui l'inghippo : ON utenti.ID = pagine._userid
mettevo id a tutte due invece ci voleva utenti.Id e pagine.userid.
dici che va bene?
grazie mille. Ultima modifica effettuata da luigi7 il 07/12/2011 alle 18:41 |
|