Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - campi in conflitto con join
Forum - PHP - campi in conflitto con join

Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 13:43
Domenica, 04/12/2011
Salve, chi mi può spiegare perché con questa query:
Codice sorgente - presumibilmente Php

  1. $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

  1. </tr>
  2.         <?php
  3.         // restituisce un array multi-dimensionale con i record
  4.         if($record = $pag->Show())
  5.         {
  6.                 foreach($record as $row)
  7.                 {
  8.                 ?>
  9.       <tr>
  10. <td style="vertical-align: top; text-align: center;">
  11. <?php echo "".$row["n1"]."";?></td>
  12.  
  13. <td style="vertical-align: top; text-align: center;">
  14. <?php echo "".$row["titolo"]."";?></td>
  15. <td style="vertical-align: top; text-align: center;">
  16. <?php echo "".$row["data"]."";?></td>
  17. <td style="vertical-align: top; text-align: center;">
  18. <?php echo "".$row["active"]."";?></td>
  19. <td style="vertical-align: top; text-align: center;">
  20. <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>
  21. <td style="vertical-align: top; text-align: center;">
  22. <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>
  23.  
  24. </tr>
  25. <?php
  26. }
  27. ?>
  28. </tbody>
  29. </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
PM Quote
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 14:55
Domenica, 04/12/2011
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?


http://www.mte90.net/
Kde, Debian e Programmazione web/Desktop!


Linux Counter.li #482442
PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 15:19
Domenica, 04/12/2011
Testo quotato

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.

PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 15:23
Domenica, 04/12/2011
scordavo anche il campo "ID" mi va in conflitto...
con quello degli utenti invece di scrivere quello della tabella "pagine" o altro.

PM Quote
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 16:58
Lunedì, 05/12/2011
semplice semplice cambiare i nomi ai campi nel database?


http://www.mte90.net/
Kde, Debian e Programmazione web/Desktop!


Linux Counter.li #482442
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:45
Lunedì, 05/12/2011
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

  1. SELECT u.id, p.id AS pagina_id FROM user u JOIN pagina p ....



Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 20:02
Martedì, 06/12/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

  1. $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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:51
Martedì, 06/12/2011
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


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
luigi7 (Normal User)
Pro


Messaggi: 83
Iscritto: 28/06/2011

Segnala al moderatore
Postato alle 18:34
Mercoledì, 07/12/2011
Testo quotato

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

  1. $pag = new Paginazione("SELECT utenti._user as _user, pagine.* FROM pagine
  2.       INNER JOIN utenti
  3.          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

  1. $pag = new Paginazione("SELECT utenti._user as _user, pagine.* FROM utenti
  2.       INNER JOIN pagine
  3.          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
PM Quote