• User Newbie

    Richiamo dati da SQL non funzionante

    Salve Ragazzi,

    Piccolo problemino, io ho questa funzione originale:

    pastebin.com/Xzj5H6Fe

    per esigenza, ho dovuto copiarla e adattarla ottenendo questa:

    pastebin.com/d8gG0PK7

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


  • ModSenior

    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.


  • User Newbie

    @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!


  • ModSenior

    Non ho capito cosa restituisce la query. E nemmeno cosa intendi per puntatori.


  • User Newbie

    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 date

    Tabella users:

    id
    username
    password
    f_name
    l_name
    (E tanti altri campi che in questo caso non mi servono)

    Tabella Tipo_Apparecchio

    id
    title
    description

    Tabella Marca

    id
    title
    description

    si 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)


  • ModSenior

    Si questo l'avevo capito, ma non ho capito cosa restituisce la query attualmente e cosa intendi tu per puntatore.


  • User Newbie

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


  • ModSenior

    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.


  • User Newbie

    mi puoi fare un esempio pratico? per favore sono giorni che ci macino attorno senza venirci fuori....


  • ModSenior

    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.


  • User Newbie

    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.id

    ma il phpmyadmin mi da questo errore: #1066 - Not unique table/alias: 'tipo_apparecchio'

    dove sbaglio?


  • ModSenior

    Hai ripetuto la stessa tabella:

    from tipo_apparecchio INNER JOIN tipo_apparecchio
    

  • User Newbie

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


  • ModSenior

    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.


  • User Newbie

    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!