Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    residenza
    Torino
    Messaggi
    18

    [PHP + MYSQL ] Query tra due tabelle e checkbox con "checked" selezionato

    Ciao a tutti,
    ho un problema.
    Ho due tabelle su mysql, una su cui gestisco un elenco di proprietà e una in cui gestisco le relazioni tra le proprietà e un utente.

    tbl_sport
    id_sport
    sport

    tbl_relazione_utente_sport
    id_relazione
    id_rel_sport
    id_cliente

    Per popolare la tabella non ci sono problemi.
    Ora però io vorrei mostrare l'elenco, tramite checkbox, degli sport e mostrare come "checked" gli sport effettivamente selezionati per il relativo utente.

    Ho provato a fare una LEFT JOIN, impostata così:

    Codice PHP:

    SELECT    tbl_sport
    .id_sport,  tbl_sport.sport,  tbl_relazione_utente_sport.id_relazione,  tbl_relazione_utente_sport.untete,  tbl_relazione_utente_sport.id_rel_sportFROM  tbl_sport  LEFT JOIN tbl_relazione_utente_sport ON (tbl_relazione_utente_sport.id_rel_sport sport.id_sport)WHERE  tbl_sport 'codiceutente' 
    Ma chiaramente lei mi estrae SOLO i valori che hanno la corrispondenza col codice dell'utente.

    Le sto provando un po' tutte, ma non riesco a trovarmi nella situazione (ipotetica):

    Utente xxx:
    [x] Sport1
    [ ] Sport2
    [ ] Sport3
    [x] Sport4

    voi avete idea di come posso fare?

    Grazie a chi mi darà una mano :-)

    Buona serata!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    non ho capito bene come lo stai facendo ma forse ho capito cosa vuoi fare...

    fai prima una query per ottenere y dati dell'utente con rispettivi sport...

    fai una seconda query con solo i dati degli sports...

    poi, quando fai correre l'array(object) degli sport se l'id corrisponde a Utente.SportId... fai in modo che sia selezionato il check...


    puoi provare qualcosa del genere:

    Codice PHP:
    <?php foreach($sports as $sport){ ?>
        <option value="<?php echo $sport->Id ?><?php if($sport->Id == $utente->SportId) echo " checked "?>><?php echo $sport->Nome?></option>
    <?php }?>

    Comunque la tua query ti dovrebbe restituire null (id_cliente) nel caso non ci sia una corrispondenza nella tabella tbl_relazione_utente_sport:

    codice:
    SELECT id_sport,  sport, id_cliente
    FROM  tbl_sport
    LEFT JOIN tbl_relazione_utente_sport ON id_rel_sport = id_sport
    WHERE id_cliente = '$id_cliente'
    Ultima modifica di minos88; 05-03-2014 a 22:15
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    residenza
    Torino
    Messaggi
    18
    Ciao, innanzitutto grazie per la risposta.

    Cerco di spiegarmi meglio:
    Io ho degli utenti che scelgono degli sport attraverso dei checkbox.
    Questo dato lo salvo su db come detto nel primo messaggio: ho una tabella di relazione tra gli sport e l'id dell'utente.
    Ora però voglio dare all'utente la possibilità di aggiornare questi dati. E quindi vorrei mostrargli gli stessi checkbox selezionandogli quelli che lui ha precedentemente scelto.

    Quindi io, a naso, farei una query per estrapolare tutti gli sport disponibili e poi all'interno di questa query una seconda query che mi verifichi quali sport il determinato utente ha selezionato.


    Quindi query:
    Codice PHP:
    <?php
    $query 
    "SELECT * FROM tbl_sport";
    $result mysql_query($query );
    while (
    $row mysql_fetch_assoc($result)){
    ?>
    <input name="sport_specializzati[]" type="checkbox" id="sport_specializzati" value="<?php echo $row['id_sport']; ?>"               > <?php echo $row['sport']; ?>
    }
    In questo modo tiro fuori tutti gli sport.
    Ora, dentro al campo input io farei una query tra le due tabelle per trovare il match. E poi ficcare una condizione if. Quindi:
    (prima della chiusura del <input>
    Codice PHP:
    $sql"SELECT     tbl_sport.*,  tbl_relazione_utente_sport.*    FROM     tbl_sport, tbl_relazione_utente_sport  WHERE   tbl_relazione_utente_sport.id_cliente = $id AND tbl_sport.id_sport = rtbl_relazione_utente_sport.id_rel_sport ";
    $resultb mysql_query($sql);
    while (
    $rowb mysql_fetch_assoc($resultb )){

    if(
    $row['id_sport'] == $rowb['id_rel_sport']){ echo 'checked=\"checked\" ';} 
    php }?> 
    Solo che non funziona (ovviamente).

    Cosa sbaglio?
    Non ho capito il tuo suggerimento... (son fuso)

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    fin qui tutto ok (query 1)
    Quindi io, a naso, farei una query per estrapolare tutti gli sport disponibili e poi all'interno di questa query una seconda query che mi verifichi quali sport il determinato utente ha selezionato.
    Codice PHP:
    <?php
    $query 
    "SELECT * FROM tbl_sport";
    $result mysql_query($query );
    adesso devi dare la query 2, che non fa altro che ottenere gli sport selezionati dall'utente (salvati nel DB)...
    Codice PHP:
    $query2 "SELECT id_rel_sport FROM tbl_relazione_utente_sport WHERE id_cliente = '{$id_cliente}'";
    $result2 mysql_query($query2 ); 
    adesso puoi fare qualcosa del genere...

    Codice PHP:
    <?php while ($r mysql_fetch_assoc($result2)){
        
    $sportSelezionato[] =  $r['id_rel_sport'];
    }

    while (
    $row mysql_fetch_assoc($result)){?>
        <input name="sport_specializzati[]" type="checkbox" id="sport_specializzati" value="<?php echo $row['id_sport']; ?>"<?php if(in_array($row['id_sport'],$sportSelezionato) echo ' checked '?>><?php echo $row['sport'];?>
    <?php 
    }?>
    Ultima modifica di minos88; 05-03-2014 a 23:19
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

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.