Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    27

    Aggiornare <SELECT> dopo azione sul DATABASE

    Salve a tutti, inizio a dire che sono un novizio con il php, un po meno con l'html, scusate quindi se troverete errori di efficenza nel mio codice, qualunque consiglio è ben accetto..
    Spiego in due parole il mio problema e spero lo riusciate a risolvere, credo che la soluzione sia uno script in javascript ma non ne sono sicuro...
    Ho una select, selezionando un opzione dalla select e premendo sul tasto di invio richiesta nel form, si avvia la funzine in php per eliminare la riga corrispondente dal db, soltanto che nella select resta l'opzione e si cancella solo aggiornando la pagina, il problema sarebbe proprio che vorrei che senza aggiornare la pagina si vadi ad aggiornare la select e che che capisca che non esiste più quella riga..
    codice:
    <form action="" method="post">
    Elimina Tipologia:
    
    <?php
    echo "<select size=\"1\" name=\"eliminatipologia\">";
    mysql_select_db("nomedb", $con);
    $result = mysql_query("SELECT DISTINCT `Materiale` FROM `Tipologia`");
    while($row = mysql_fetch_array($result))
      {
        echo "<option>".$row['Materiale']."</option>";
    }
    
      echo "</select>
    ";
    
    ?>
    
    <input type="submit" />
    </form>
    da qui popolo la select con i campi del database, il form non fa nessuna azione (questo per non far caricare la pagina), ma viene richiamata questa porzione di codice
    codice:
    <?php
    if (isset($_POST['eliminatipologia'])) {
        echo elimina();
        return;
    }
    function elimina(){
    $con = mysql_connect("xxx.xxx.xxx.xxx","nomedb","pass");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    mysql_select_db("nomedb", $con);
    
    $tmp="'".$_POST[eliminatipologia]."'";
    
    $sql="DELETE FROM `nomedb`.`Tipologia` WHERE
    `Tipologia`.`Materiale`=".$tmp;
    
    if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }
    echo "$_POST[descrizione] eliminato";
    
    mysql_close($con);
    }
    ?>
    questo codice funziona, lo script in php fa la sua parte, ma non aggiorna la pagina.. credo si debba risolvere in javascript ma non so da dove iniziare, mi servirebbe une esempio o un punto da dove iniziare, non mi dispiacerebbe neanche se qualcuno mi postasse una buona guida sul javascript, o cmq come rendere le pagine più dinamiche possibile non aggiornando ogni volta la pagina...

  2. #2

    Re: Aggiornare <SELECT> dopo azione sul DATABASE

    Ti basta semplicemente invertire l'ordine degli script cioè mettere prima la parte PHP che effettua la cancellazione e poi la parte che popola la select.

    Originariamente inviato da Blastor
    ...il problema sarebbe proprio che vorrei che senza aggiornare la pagina si vadi ad aggiornare la select...
    "Vadi Fantocci, vadi."
    "...dice a me?"
    "Si, batti...batti."
    "...ma che mi da del tu?!"
    "No...batti lei!!!"

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    27
    LOL provo!

    ho messo tutto il codice php alla fine perchè prima avevo due select inserite in questo modo
    HTML(select)
    PHP (della prima select)
    HTML(select)
    PHP(seconda select)

    se agivo sulla seconda select mi ricaricava la pagina per intero ma se agivo nella prima select non mi visualizzava più la seconda, potresti farmi capire dov'è l'errore?

  4. #4
    Com'è ora tu prima effettui la query di select e popoli le <option> del tag <select> con i valori recuperati e solo successivamente elimini con la delete l'elemento selezionato. In questo modo esso non sarà più presente nel DB, ma sarà visibile nella select in quanto popolata precedentemente quando il valore era ancora presente.
    Se inverti la logica (prima la delete e poi la select) leggerai i valori dopo aver eliminato l'elemento per cui esso non andrà più a finire nella select.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    27
    grazie mille, ho capito la logica ora..un passo avanti verso la conquista del mondo :P
    VADO a sistemare il codice XD

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    27
    Ho provato a mettere il codice php prima dell'html, ma quando vado a cancellare il record dalla select, mi si ricarica la pagina e mi comprare solo ("nome oggetto" eliminato) che è un echo del codice in php, però non entra nel codice html quindi non mi rispunta il form, come mai?

  7. #7
    Prova a togliere il return da qui:

    Codice PHP:
    if (isset($_POST['eliminatipologia'])) {
        echo 
    elimina();
        return;
    }
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.