- Home
- Categorie
- Coding e Sistemistica
- Coding
- Richiamo dati da SQL non funzionante
-
Richiamo dati da SQL non funzionante
Salve Ragazzi,
Piccolo problemino, io ho questa funzione originale:
per esigenza, ho dovuto copiarla e adattarla ottenendo questa:
piccolo problema, la prima funziona senza problemi e lo script lavora egregiamente... la mia funzione invece, ogni volta che la richiamo lo script si blocca senza dare nessun errore nel log e senza far vedere nulla nella pagina, si carica l'header del sito ma la parte dei dati non compare più
dove sbaglio??
-
Ciao crospa,
a primo impatto non noto errori, se il metodo viene richiamato correttamente potrebbe trattarsi di un errore nella query eseguita.
Fai stampare la query, e prova a lanciarla direttamente da phpMyAdmin, cosi da verificare intanto che la query sia corretta.
-
@Thedarkita said:
Ciao crospa,
a primo impatto non noto errori, se il metodo viene richiamato correttamente potrebbe trattarsi di un errore nella query eseguita.
Fai stampare la query, e prova a lanciarla direttamente da phpMyAdmin, cosi da verificare intanto che la query sia corretta.Allora ho fatto come mi hai detto, l'output è il seguente: [PHP]SELECT app.id as appid, u.id as uid, app.tipo_apparecchio, app.modello, app.seriale, app.marca_app, CONCAT(u.fname,' ',u.lname) as clientname FROM apparecchi as app LEFT JOIN users as u ON u.id = app.client_id LIMIT 0,10'[/PHP]
se lo eseguo su phpmyadmin fa esattamente come nel php, quindi non appaiono i nomi correlati ma soltanto i puntatori, quindi invece che vedere in tipo_apparecchio,marca ecc il nome della marca o del tipo, io vedo solamente il numero dell'id! invece il campo clients funziona perfettamente!
-
Non ho capito cosa restituisce la query. E nemmeno cosa intendi per puntatori.
-
Allora la struttura delle tabelle è la seguente:
Tabella Apparecchi:
id int(11)
client_id int(11) [si collega all'id di users]
tipo_apparecchio int(11) [si collega al'id di tipo_apparecchio]
modello text
seriale text
marca_app int(11) [si collega all'id di marca]
data_inserimento dateTabella users:
id
username
password
f_name
l_name
(E tanti altri campi che in questo caso non mi servono)Tabella Tipo_Apparecchio
id
title
descriptionTabella Marca
id
title
descriptionsi collegano tutte ad apparecchi con il riferimento che trovi in apparecchi (te l'ho segnato di fianco) in quelli segnati con il riferimento a lato, sono quelli di cui non vedo il "title" ma vedo il dato che è salvato nella tabella apparecchi (tipo il numero e non il testo)
-
Si questo l'avevo capito, ma non ho capito cosa restituisce la query attualmente e cosa intendi tu per puntatore.
-
io voglio che quando quella funzione viene richiamata, quando richiamo il campo "marca" mi appaia che ne so HP, Acer, Asus e non 1, 2, 4, 8 come fa ora... in client se io richiamo "cliente" lui (come vedi) unisce dalla tabella users f_name e l_name in clientname che sarebbe il nome del cliente... quello è quello che voglio che faccia anche per marca e tipo apparecchio! invece che i numeri vorrei apparisse il contenuto del campo title della relativa tabella!
e phpmyadmin mi fa vedere la tabella apparecchi e in tipo_apparecchio e marca i numeri che io chiamo"puntatori" tipo 1,5,8,9 e invece vorrei mettesse il nome! tipo Hp, Acer ecc ecc come avviene per il cliente... in effetti sotto appare Marco Rossi e non 5...
-
Beh devi aggiungere tutti i JOIN per recuperare il nome relativo a quell'id, e inserire il campo col nome anziché l'id nel SELECT.
-
mi puoi fare un esempio pratico? per favore sono giorni che ci macino attorno senza venirci fuori....
-
Dovresti studiare semplicemente come fare i JOIN, u nesempio facilmente comprensibile è questo:
SELECT prodotto.*, categoria.nome FROM prodotto INNER JOIN prodotto ON prodotto.id_categoria = categoria.id_categoria
Nel tuo caso devi fare più JOIN di questo tipo.
-
io la sintassi l'ho impostata così per tipo_apparecchio:
select apparecchi.*, tipo_apparecchio.title from tipo_apparecchio
INNER JOIN tipo_apparecchio on apparecchi.tipo_apparecchio = tipo_apparecchi.idma il phpmyadmin mi da questo errore: #1066 - Not unique table/alias: 'tipo_apparecchio'
dove sbaglio?
-
Hai ripetuto la stessa tabella:
from tipo_apparecchio INNER JOIN tipo_apparecchio
-
non penso... ti spiego, il campo presente in apparecchi che identifica il campo apparecchio si chiama "tipo_apparecchio" quindi di conseguenza diventa apparecchi.tipo_apparecchio e la tabella dove risiedono i tipi apparecchio si chiama appunto "tipo_apparecchio" dici che va in crisi per quello??
-
apparecchi.tipo_apparecchio non è uguale a scrivere tipo_apparecchio.
La prima si riferisce ad un campo, la seconda ad una tabella.
Dovresti studiare un pò di SQL e come si fanno i JOIN, perchè non è una cosa che si può fare andando a tentativi.
-
ti voglio far notare che la parte relativa ai clienti funziona senza problemi! è una join quella... il problema è che non capisco perchè questa non funzioni!