Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Problema Su Query

  1. #1

    Problema Su Query

    Salve a tutti, ho ruzzolato in giro ma non ho trovano nulla di così
    soddisfacente.

    Ho a disposizione due tabelle in un database: la prima "elenco" contiene
    i nominativi e gli indirizzi di una serie mista di strutture ricettive.
    Classificate per ID non INT ma VARCHAR.
    La seconda contiene esclusivamente i dati per una determinata categoria
    di strutture, si chiama "schede_case" con una 20ina di colonne.
    Quando voglio collegare i due database all'altezza della ID per creare
    un elenco completo di una sola categoria di strutture (in questo caso
    "case"), con i dati della seconda tabella tutto ok, mi riesce al quanto
    bene.

    I problemi sorgono nel momento in cui voglio permettere all'utente di
    cliccare sul nome della struttura ed accedere ad un'altra pagina
    "scheda_casa.php" in cui inserisco nel dettaglio le informazioni della
    singola struttura.

    Ho provato con questa query:

    $query = "SELECT
    denominazione,categoria,indirizzo,tipo,presentazio ne,presentazione AS
    schede_casa,
    tipo_casa,n_telefono,persone,lavatrice,lavastovigl ie,congelatore,televisore,telefono,garage,giardino ,
    animali,cucina,forno,microonde,frigorifero,doccia, vasca,ascensore,cantina,stiro,
    fon,riscaldamento,stufa,camino,videoregistratore,s atellite,dvd FROM
    elenco LEFT JOIN schede_case ON elenco.id = schede_case.id WHERE id='$id';
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);

    ma mi dà errore. Dice in pratica che mysql_fetch array non trova quello
    che ho specificato in query. Mi interessa sapere dove ho sbagliato. E se
    possibile, un intervento da parte vostra dal momento che una query del genere
    mi occorrerà, di conseguenza, anche per tutti gli altri tipi di
    strutture indicizzate nella tabella "elenco".

    Ringrazio tutti sin da ora...elenco elenco

  2. #2
    Mah... se non ci dici la struttura esatta delle tabelle e il tipo di informazione che vuoi estrarre è molto difficile aiutarti...

    In ogni caso, mi viene il dubbio che l'errore sia nella variabile $id che probabilmente è $_POST['id'] (o GET... insomma probabilmente il suo valore viene da un'altra pagina)...

    Controlla e facci sapere!

  3. #3
    per le notizie del sito ho utilizzato lo stesso tipo di query, però in quel caso la tabella è una sola. E comunque tutto funziona a meraviglia.

    Per quel che riguarda il caso in esame: la tabella elenco si compone di pochi campi; di, denominazione,indirizzo,categoria,tipo,presentazio ne.

    La tabella schede_case invece contiene una serie di campi molto più corposa: tipo_casa,persone,n_telefono,dist_mare,dist_centro ,lavatrice,lavastoviglie,telefono,doccia,cucina,te levisore,videoregistratore,dvd,garage,giardino,ani mali,forno,stufa,riscaldamento,camino...una 20 ina come dicevo prima.

    Quello che voglio fare è collegare le tabelle per id, e attraverso quella query di cui parlavo prima estrarre tutti i dati delle due tabelle in una singola pagina che però è riferita ad una singola struttura, quindi esclusivamente le informazioni relative ad un singolo id.

    Spero di essere stato più chiaro adesso...

  4. #4
    Io farei così:

    $query = "SELECT * FROM elenco LEFT JOIN schede_case ON elenco.id = schede_case.id WHERE id='$id'";

    Cmq non ci hai spiegato da dove viene fuori la variabile $id...




  5. #5
    scusami,
    mi sono dimenticato...
    In pratica dovrebbe venire fuori cliccando su questo link:

    <h1 class=\"denominazione\"><a href=\"schede_casepalinuro.php?id=$row[id]\">$row[denominazione]</a>
    $row[indirizzo]</h1>

    infatti quando mi hai parlato di $_post etc, mi sono chiesto: ma questo non viene fuori con i form? Comunque per non inerpicarci troppo sul discorso...cosa ho sbagliato?

  6. #6
    Dunque:

    $query = "SELECT
    denominazione,categoria,indirizzo,tipo,presentazio ne,presentazione

    già qui non avevi selezionato il campo id... e poi se sono tutti i campi meglio usare *


    AS

    Perché as? Generalmente usi as se vuoi avere una colonna temporanea sulla tabella in cui fare delle operazioni. Ad esempio se ho una data in formato timestamp e la voglio estrarre ordinata per giorno, mese, anno scriverò

    SELECT *, DATE_FORMAT(data,'%d-%m-%Y') AS new_data FROM ...

    schede_casa,
    tipo_casa,n_telefono,persone,lavatrice,lavastovigl ie,congelatore,televisore,telefono,garage,giardino ,
    animali,cucina,forno,microonde,frigorifero,doccia, vasca,ascensore,cantina,stiro,
    fon,riscaldamento,stufa,camino,videoregistratore,s atellite,dvd

    l'elenco non ti serve perché se fai left join unisci in un colpo tutta la tabella schede_case

    FROM
    elenco LEFT JOIN schede_case ON elenco.id = schede_case.id WHERE id='$id';

    Infine se ti passi il valore dell'id attraverso un link in un'altra pagina, è possibile (a seconda della configurazione del php.ini) che sia necessario chiamarla $_GET['id'] perché viene ricevuta via GET sull'URL...


  7. #7
    ho seguito la query che mi hai consigliato, ma ancora niente...mi dà questo messaggio di errore...

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\WEB\Palinuroottimizzato\strutture-ricettive\include\case\script\schede_case.inc.php on line 15

    la query che mi hai suggerito è:

    $query = "SELECT * FROM elenco LEFT JOIN schede_case ON elenco.id = schede_case.id WHERE id='$id'";

    la line 15 è :
    14 - $result = mysql_query($query, $db);
    15 - $row = mysql_fetch_array($result);

    quindi credo sia da ricercare nella query no?

  8. #8
    Fai un echo $query e vedi cosa passa...

    e a che ci 6 leva gli spazi dopo gli =

    $query = "SELECT * FROM elenco LEFT JOIN schede_case ON elenco.id=schede_case.id WHERE id='$id'";

  9. #9
    stampando la query me lo trova l'id giusto, però mi da sempre errore:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\WEB\Palinuroottimizzato\strutture-ricettive\include\case\script\schede_case.inc.php on line 15
    SELECT * FROM elenco LEFT JOIN schede_case ON elenco.id=schede_case.id WHERE id='CV001'

    come vedi l'id me lo stampa...che vuol dire allora?

  10. #10
    Usi easyphp? dal pannello di amministrazione vai nella linguetta sql e copia la query lì (ovviamente sostituendo $id con una id valido) e vedi che messaggio di errore ti da...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.