Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30

    Stranezza su una select + php

    Buon giorno a tutti!
    Io ho un problema su una select... che è questo:

    devo aggiungere una galleria fotografica ad una categoria di gallerie e per non avere una lenzuolata di nomi ho creato una select che mi riporta i nomi delle categorie presenti sul database e come valore ho messo la variabile che mi scompone il risultato della query (mysql_fetch_assoc) per prendere il campo id della categoria scelta,e l'ho messo tra il do e il while per farlo ripetere ovviamente c'è anche il nome; e fino a qui tutto ok perchè nel codice HTML il value è l'id della categoria.
    come action è tutto svolto in una pagina esterna dove c'è solo lo script per fare inserire il campo id della catagoria nella tabella delle gallerie nel campo idcategoria per tenerle separate.

    Detto questo posso dire che la cosa funziona... però se io seleziono qualsiasi categoria mi inserisce sempre l'id della prima categoria...

    Qualcuno sa dirmi cosa c'è che non va???

    Essendo nuovo del forum non so di preciso se potete capire o no il mio problema (anche perchè non sono un gran fequentatore di forum...) cmq se avete bisogno di chiarimenti o di parti di codice... basta chiedere...

    GRAZIE in anticipo!
    RAZZI

  2. #2
    Posta il codice della form, innanzi tutto!
    Poi fai un controllo: nel HTML generato dal tuo script, controlla che il menù a tendina sia compilato a dovere e che magari non sia stampato l'ID sbagliato nella label delle varie categorie.



    p.s. il DO/WHILE non dico che sia deprecato, ma neanche tanto usato, in quanto stampa almeno un risultato anche nel caso non ci siano righe da stampare.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    ecco la form che ho creato io con il php

    Codice PHP:
    <form id="form2" name="form2" method="post" action="addgall.php">
        <span style="color:#FFFFFF; font-size:10px;">Aggiungi Una Galleria</span>
            <input name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" /> <span style="color:#FFFFFF; font-size:10px;">in</span>
              <select name="idcategoria" size="1" id="idcategoria">
                <option selected="selected" > - Scegli una Categoria - </option>
    <? do { ?> <option value="<?= $catgall_scom['id'?>"><?= $catgall_scom['nomecategoria'?></option><? } while ($catgall_scom=mysql_fetch_assoc($catgall)); ?>
           </select>


             <input type="submit" name="submit2" id="submit2" value="Invia" />
        </form>
    e qui c'è il codice html che viene creato:

    <form id="form2" name="form2" method="post" action="addgall.php">
    <span style="color:#FFFFFF; font-size:10px;">Aggiungi Una Galleria</span>
    <input name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" /> <span style="color:#FFFFFF; font-size:10px;">in</span>
    <select name="idcategoria" size="1" id="idcategoria">
    <option selected="selected" > - Scegli una Categoria - </option>
    <option value="4">F12010</option> <option value="7">F12009</option> </select>


    <input type="submit" name="submit2" id="submit2" value="Invia" />
    </form>

    Infatti gli id delle gallerie sono esatti... sono 4 e 7 ma la select non funziona perchè se io seleziono F12009 mi mette sempre il 4...

    non lo sapevo del do/while... a dire il vero è da nemmeno un mese che ho imparato ad usare il php...
    se hai qualche consiglio... cercherò di metterlo in opera

  4. #4
    Beh.... andiamo per tentativi ed errori.
    Come prima cosa, togli il selected come ti avevo detto nell'altra risposta.
    Refresha la pagina e vedi se funziona in quel modo.

    Suppongo poi che l'array catgall_scom fuoriesca da una query al DB.
    Quindi fai come segue:
    Codice PHP:
    <form id="form2" name="form2" method="post" action="addgall.php"> 
        <span style="color:#FFFFFF; font-size:10px;">Aggiungi Una Galleria</span> 
            <input name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" /> <span style="color:#FFFFFF; font-size:10px;">in</span> 
              <select name="idcategoria" size="1" id="idcategoria"> 
                <option selected="selected" > - Scegli una Categoria - </option> 
    <?php
    while ($catgall_scom mysql_fetch_array($query)) {
    echo 
    "
    <option value=\""
    .$catgall_scom['id']."\">".$catgall_scom['nomecategoria']."</option>\n
    "
    ;
    }
    ?>
           </select> 

     
             <input type="submit" name="submit2" id="submit2" value="Invia" /> 
        </form>
    Ricordati di usare SEMPRE il tag di apertura di PHP esteso (<?php ?>), anche se nel tuo PC di sviluppo hai le register_global su OFF e quindi ti funziona lo stesso con lo short open tag: nei server di hosting, questa direttiva è sempre su ON per motivi di sicurezza.

    Un consiglio in più che mi sento di darti è quello di utilizzare il CSS per formattare la form e usare le label per le etichette di testo.... ma questo con il PHP a poco a che fare.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    ho provato la soluzione che mi hai consigliato....
    e purtroppo non è cambiato niente...
    ora mi mette una sola categoria e mi inserisce nel database l'id dell'altra cartegoria...
    ti metto il codice html...

    <form id="form2" name="form2" method="post" action="addgall.php">
    <span style="color:#FFFFFF; font-size:10px;">Aggiungi Una Galleria</span>
    <input name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" /> <span style="color:#FFFFFF; font-size:10px;">in</span>
    <select name="idcategoria" size="1" id="idcategoria">
    <option selected="selected" > - Scegli una Categoria - </option>

    <option value="7">F12009</option>




    <input type="submit" name="submit2" id="submit2" value="Invia" />
    </form>

    in questo form il value cioè l'id categoria è il 7... sul database mi inserisce il 4....

    ma come mai mi porta l'id sbagliato?

  6. #6
    Allora.... innanzi tutto togli il selected="selected", tanto come lo usi te non serve a nulla.
    Posta quindi anche il codice di addgall.php a questo punto.

    Una cortesia, infine: usa sempre i marcatori CODE o PHP per inserire codice, altrimenti risulta illegibile.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    Codice PHP:
    <? 
    session_start
    ();
    require(
    "conn.php");

    $query_catgall="SELECT * FROM tabcategoriegall WHERE attiva='1' ORDER BY nomecategoria DESC";
    $catgall=mysql_query($query_catgall,$conn) or die(mysql_error());
    $catgall_rows=mysql_num_rows($catgall);
    $catgall_scom=mysql_fetch_assoc($catgall);

    $query_newgall="SELECT * FROM tabgallerie WHERE idcategoria='".$catgall_scom['id']."'";
    $newgall=mysql_query($query_newgall,$conn) or die(mysql_error());
    $newgall_rows=mysql_num_rows($newgall);
    $newgall_scom=mysql_fetch_assoc($newgall);


    if (empty(
    $_POST['nomegalleria'])) {
    header("Location: modulo_inserimento_dati.php?errore=1");

    } else {

    $query_innewgall="INSERT INTO tabgallerie (nomegalleria,idcategoria) VALUES ('".$_POST['nomegalleria']."','".$catgall_scom['id']."')";
    $innewgall=mysql_query($query_innewgall,$conn) or die(mysql_error());

    header("Location: admin.php");
    }
    ?>
    ecco questo è lo script di addgall.php...
    per funzionare funziona... mi inserice l'id nell campo idcategoria... però inserisce sempre il primo... e mai il secondo e così via...

  8. #8
    Beh.... questo codice me lo devi proprio spiegare!
    La prima cosa che mi viene in mente di dirti è: cosa ci fai con il session_start, se non usi le sessioni??

    Poi.... cosa ci fai con due query di select???
    Peraltro, le colonne che usi come riferimento nelle due clausole di WHERE delle due query (attiva, idcategoria), sono definite come INT?
    Se sì, hai anche l'errore di passare dati in formato stringa.
    Sono proprio necessarie le due query???
    Come sono strutturate le due tabelle???
    Secondo me, c'è proprio un errore di fondo nella struttura del DB: penso che o potresti risolvere con una sola tabella, oppure con una query di JOIN.
    Fatto sta, che dubito che un codice come quello che hai postato te, possa funzionare senza problemi!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    si fa parte di una session... è un modulo per aggiungere categorie, gallerie e poi anche foto e dove posso gestire tutte le mie foto del sito e per accedere a queste pagine devo fare un'accesso con user e password

    Ho dovuto dividere in varie tabelle perchè come minimo avrò 15 categorie e dentro ad ogni categoria avrò circa 20 gallerie con a sua volta dentro in media 50 immagini ogni galleria (sono un fotografo professionista) quindi non escludo di fare una terza tabella per le immagini... faccio così perchè avere un'unica tabella con tutti quei record mi sembra molto dispersivo e incasinato e poi perchè al corso che ho frequentato mi hanno insegnato così

    si in effetti basterebbe anche solo 1 query di select la seconda l'ho messa per prova...

    idcategoria è int, attiva è un set

    le tabelle sul db sono strutturate così:
    tabella delle categorie:
    id
    nomecategoria
    attiva (per attivare o disattivare la categoria)

    tabella delle gallerie
    id
    idcategoria
    nome galleria
    attiva

    la query di Join non l'ho mai usata... sono ancora un novellino io su queste cose ho finito il corso il 20 di aprile...

    La cosa che non riesco a fare è portare l'id della categoria giusto nel campo idcategoria della tab della galleria....
    lo script di per se funziona, perchè mi inserisce l'id, solo che mi inserisce sempre il primo e mai il secondo anche se guardando il codice html lo stampa giusto....

  10. #10
    Ti consiglio di usare BOOL come datatype per la colonna attiva: sostanzialmente se attiva segni TRUE altrimenti FALSE.
    Se idcategoria è INT allora non usare gli apici per inserire il numero, altrimenti rischi che si generi un errore di MySQL.

    Per collegare le due tabelle ti basta aggiungere una clausola di WHERE con la relazione ID.CATEGORIA e GALLERIA.IDCATEGORIA.
    Codice PHP:
    $sql "
    SELECT 
        categorie.nomecategoria AS nome_cat,
        gallerie.nomegalleria AS nome_gal
    FROM
        categorie, gallerie
    WHERE 
        categorie.attiva = TRUE AND
        gallerie.attiva = TRUE AND
        categorie.id = gallerie.idcategoria AND
        gallerie.idcategoria = "
    .$catgall_scom['id']; 
    In questo modo ottieni un array di dati di due colonne, in cui la prima colonna si chiama nome_cat e la seconda nome_gal.

    Il tuo problema però è un altro: quello che non ti arrivano alla pagina PHP i giusti valori passati dalla form.
    Ergo, bisogna fare un po' di debug.

    Riduci all'osso la form, come prima cosa:
    codice:
    <form id="form2" name="form2" enctype="multipart/form-data" name="form2" method="post" action="addgall.php"> 
    <input id="nomegalleria" name="nomegalleria" type="text" id="nomegalleria" size="15" maxlength="15" />
    <select id="idcategoria" name="idcategoria" size="1" id="idcategoria"> 
       <option> - Scegli una Categoria - </option> 
       <option value = 1>Prova 1</option> 
       <option value = 2>Prova 2</option> 
       <option value = 3>Prova 3</option> 
       <option value = 4>Prova 4</option> 
    </select>
    
     
    <input type="submit" name="submit2" id="submit2" value="Invia" /> 
    </form>
    Non so se hai notato, ma ho aggiunto l'entype alla form, perché sono convinto che i dati non arrivino per quel motivo!

    Ad ogni modo.... nel file addgall.php, invece, scrivi quanto segue:
    Codice PHP:
    <?php
    $nomegalleria 
    $_POST['nomegalleria'];
    $id_cat $_POST['idcategoria'];

    echo 
    "
    Nome Galleria: 
    $nomegalleria

    ID Galleria: idcategoria
    "
    ;
    exit;
     
    session_start(); 
    require(
    "conn.php"); 

    $query_catgall="SELECT * FROM tabcategoriegall WHERE attiva='1' ORDER BY nomecategoria DESC"
    $catgall=mysql_query($query_catgall,$conn) or die(mysql_error()); 
    $catgall_rows=mysql_num_rows($catgall); 
    $catgall_scom=mysql_fetch_assoc($catgall); 

    $query_newgall="SELECT * FROM tabgallerie WHERE idcategoria='".$catgall_scom['id']."'"
    $newgall=mysql_query($query_newgall,$conn) or die(mysql_error()); 
    $newgall_rows=mysql_num_rows($newgall); 
    $newgall_scom=mysql_fetch_assoc($newgall); 


    if (empty(
    $_POST['nomegalleria'])) { 
    header("Location: modulo_inserimento_dati.php?errore=1"); 

    } else { 

    $query_innewgall="INSERT INTO tabgallerie (nomegalleria,idcategoria) VALUES ('".$_POST['nomegalleria']."','".$catgall_scom['id']."')"
    $innewgall=mysql_query($query_innewgall,$conn) or die(mysql_error()); 

    header("Location: admin.php"); 

    ?>
    In questo modo cerchiamo di capire se le variabili arrivano tutte allo script che le processa.
    Fai le prove con valori diversi, sia nel campo di testo, sia nella select.

    Fammi risapere!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.