Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107

    associare query a bottone

    ciao a tutti!
    sto creando una pagina per la gestione delle news del sito; in particolare creo una tabella che mostri: autore, titolo, anteprima, data, un bottone per elimanare la news e il n°di commenti.
    Ho un problema sul bottone per eliminare la news, in quanto dovrei utilizzare JavaScript per chiedere la conferma dell'eliminazione eppoi, se c'è la conferma, creare la query per l'eliminazione.

    Solo che sono in difficoltà con il form input del bottone e con le variabili da controllare per capire a quale news (identificata con id_post nella tabella) corrisponda il bottone che si è cliccato per eliminarla.
    Vi posto il codice:

    Codice PHP:
    if(isset($_POST['cancella'])) { // è giusto??
            
    $id_post=$_POST['cancella'];
            
    $canc_post_sql=mysql_query("DELETE QUICK FROM post,commenti WHERE id_post=$id_post") or die("Query fallita: " mysql_error());
    }

    //   *** PARTE OK ***
    // query per l'estrazione dei post
    $post_sql=mysql_query("SELECT * FROM post ORDER BY data_post DESC") or die("Query fallita: " mysql_error());
    if (
    mysql_num_rows($post_sql)>0) { 
    <table align="center" width="800" class="tab">
    <caption><div align="center" class="caption">News</div>
    </caption>
    <tr><th width="150">AUTORE</th><th width="150">TITOLO</th><th width="250">TESTO</th><th width="100">DATA</th><th width="100">ELIMINA</th><th width="50">N°COMM.</th></tr>

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Codice PHP:
    <?php
                                  
    //   *** PARTE OK ***
    while($post_array mysql_fetch_array($post_sqlMYSQL_ASSOC)) {
      echo 
    "<tr><td align=\"center\">" .$post_array['autore_post'] ."</td>";    // colonna autore post
      
    echo "<td align=\"center\">" .$post_array['titolo_post'] ."</td>";    // colonna titolo post
      
    $testo_post $news->preview($post_array['testo_post'], 20);
      echo 
    "<td align=\"center\">" .$testo_post ."</td>";    // colonna testo post
      
    $data_post $news->format_data($post_array['data_post']);
      echo 
    "<td align=\"center\">" .$data_post ."</td>";    // colonna data post
      
      // *** PARTE RELATIVA AL BOTTONE -- vedi funzione JavaScript
      
    echo "<td align=\"center\"><input name=\"cancella\" type=\"image\" alt=\"cancella\" src=\"image\\cancella.gif\" align=\"center\" onClick=\"confCanc(this.form)\"></input></td>"// bottone per eliminare news

      //   *** PARTE OK ***            
      // parte relativa al conteggio dei commenti    presenti e all'inserimento di uno nuovo
      
    $Ncommenti $news->conta_commenti("id_commento""commenti""id_post",  $post_array['id_post']);
      echo 
    "<td align=\"center\">" .$Ncommenti ."</td></tr>";
    }
    echo 
    "</table></form>

    </p>"
    ;
    Questa è la funzione JS che ho creato:
    <SCRIPT LANGUAGE="JavaScript">
    function confCanc(form) {
    if(confirm('Eliminare la news?'))
    form.submit();
    else
    return;
    }
    </SCRIPT>


    Quando clicco sul bottone mi chiede la conferma, e se dò l'OK, mi ricarica la pagina ma non mi elimina la news!
    dove sbaglio?
    penso nel passare la variabile $_POST['commenta]'..come faccio a passare l'id del post nel name dell'imput?

    aiutooo..spero di essermi spiegato, scusatemi sennò, mi farò capire meglio..

  2. #2
    Prova a separare le due pagine (form, php) e fai un bel print_r($_POST), così vedi se effettivamente c'è qualche problema nel passaggio del form.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Originariamente inviato da KaNnA
    Prova a separare le due pagine (form, php) e fai un bel print_r($_POST), così vedi se effettivamente c'è qualche problema nel passaggio del form.
    grazie per la risposta intanto!
    ho provato...e mi stampa "Array ( [cancella_x] => 28 [cancella_y] => 22 )"
    ma non ho ben capito cosa significa!

    Cmq, il problema fondamentalmente è su come passare la variabile che contenga l'id del post da cancellare: l'id_post lo ricavo dall'array che creo dopo la query.
    Dopodichè ad ogni riga che creo nella tabella corrisponde questo id_post, e quidni avrò tante righe quanti post, e in ogni riga, alla fine, un bottone per cancellarla.
    Questo è il codice per inserire il bottone in una riga:

    <td align=\"center\"><input name=\"cancella\" type=\"image\" src=\"image\\cancella.gif\" onClick=\"confCanc(this.form)\"></input></td>

    Quando clicco il bottone, la funzione Javascript dovrebbe inviarmi la variabile del form se dò l'ok, giusto?
    Però come faccio ad associare alla variabile $_POST['cancella'] l'id del post da cancellare?

  4. #4
    grazie per la risposta intanto!
    ho provato...e mi stampa "Array ( [cancella_x] => 28 [cancella_y] => 22 )"
    ma non ho ben capito cosa significa!
    Sono le coordinate x,y di dove hai cliccato sul bottone d'invio.

    Ti conviene inserire nel form un altro campo hidden con al suo interno l'id della news che vuoi cancellare


  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Ti conviene inserire nel form un altro campo hidden con al suo interno l'id della news che vuoi cancellare
    ..infatti..ci avevo pensato anche io, però quali non c'è un attributo che posso assegnare all'input per salvare l'id della news. Perchè l'attributo value, ad esempio, imposta il valore di visualizzazione iniziale di un campo (in pratica la scritta del bottone, che nel mio caso è un'immagine).
    Allora ho provato a dare un nome diverso ad ogni bottone, così:
    Codice PHP:
    echo "<td align=\"center\"><input name=\"".$post_array['id_post']."\" type=\"image\"  src=\"image\\cancella.gif\"  onClick=\"return(confirm('Cancellare?'))\"></input></td>"
    il problema è che poi come faccio a sapere quale varibile è stata settata per risalire all'id della news? mi serve quando faccio il controllo all'inizio della pagina:
    Codice PHP:
    if(isset($_POST['???'])) {
      
    $id_post=$_POST['???'];
      
    // query per cancellare la news 


  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107

    associare variabile a bottone

    Pensandoci bene, poi, con un altro form con type="hidden" avrei lo stesso problema, l'unico modo per passare l'id_post è quello di nominare il bottone con name=id_post, che è poi anche il valore che viene passato. Però poi non so come gestire questa cosa!

    Non so più dove sbattere la testa..allora, riassumo e chiarisco il problema:
    - ho un elenco di bottoni (input type=image) a ciascuno di essi è associato un id diverso relativo al post (quindi ogni bottone sarà del tipo <input name="$id_post" type="image" ...>).
    - il form che utilizzo potrebbe essere così: <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> (ma anche get)
    - come faccio a passare o a leggere la variabile GET o POST il cui nome dovrebbe contenere l'id_post? cioè sarà una cosa del genere $_GET['$id_post'] o $_POST['$id_post'] ma io non so a quale id corrisponde.
    - quando clicco sul pulsante vorrei che comparisse un pop-up con la richiesta di conferma cancellazione

    Vi posto anche un'immagine per rendere più chiaro il mio problema..magari ho sbagliato approccio e ce n'è uno molto più semplice...solo che non mi viene in mente.


    In pratica, il problema più grosso è far interagire JavaScript con Php...
    con JavaScript immagino non si possa creare una funzione che effettui direttamente una query sul database per poter eliminare la news, vero??

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Originariamente inviato da KaNnA
    Sono le coordinate x,y di dove hai cliccato sul bottone d'invio.

    Ti conviene inserire nel form un altro campo hidden con al suo interno l'id della news che vuoi cancellare

    Allora, dopo ore ed ora a perderci la testa sono arrivato alla seguente conclusione: il problema che non viene passato il valore dipende dal tipo di bottone, che nel mio caso è type="image".
    In questo, infatti, vengono passate le coordinate del punto in cui si clicca, come giustamente diceva KaNnA.
    Allora, ho provato a inserire un altro tag <input> con campo hidden, così:
    Codice PHP:
    echo "<td align=\"center\"><input name=\"id_canc\" type=\"image\" src=\"image\\cancella.gif\" onClick=\"return(confirm('Cancellare?'))\"></input><input name=\"cancella\" type=\"hidden\" value=\"".$id_post."\"></input></td>"
    il problema è che adesso, nella pagina di destinazione del form, questa:
    Codice PHP:
    $post $_POST['cancella'];
    echo 
    "
    "
    .$post."
    "

    mi riceve sempre lo stesso valore di $id_post, anche se ho verificato che questo è diverso, cioè se lo stampo vicino al bottone, è un altro valore.
    Come mai?

    Il bello è che questo problema dipende tutto dal fatto che il bottone vorrei che fosse un'immagine, perchè se usassi questo:
    <input name="id_canc" value="$id_post" type="submit">
    tutto funzionerebbe!

    ma possibile che non ci sia un modo per assegnare una coppia chiave/valore ad un bottone di tipo immagine???
    aiutooooo!

  8. #8
    Codice PHP:
    echo "<td align=\"center\"><input name=\"id_canc\" type=\"hidden\" value=\"".$id_post."\"></input><input name=\"cancella\" type=\"image\" src=\"image\cancella.gif\" onClick=\"return(confirm('Cancellare?'))\"></input></td>"
    Prova così

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Originariamente inviato da KaNnA
    Codice PHP:
    echo "<td align=\"center\"><input name=\"id_canc\" type=\"hidden\" value=\"".$id_post."\"></input><input name=\"cancella\" type=\"image\" src=\"image\cancella.gif\" onClick=\"return(confirm('Cancellare?'))\"></input></td>"
    Prova così
    Ohhhhh...finalmente!!!!!!!!!!!
    funziona!
    in pratica ho fatto come mi hai scritto tu, però il problema che mi passava sempre lo stesso valore dipendeva dal fatto che avevo creato un unico <form> per tutta la tabella, mentre scrivendo così funziona:

    Codice PHP:
    echo "<td align=\"center\"><form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><input name=\"id_canc\" type=\"image\" alt=\"cancella\" src=\"image\\cancella.gif\" align=\"center\" onClick=\"return(confirm('Cancellare?'))\"></input><input name=\"cancella\" type=\"hidden\" value=\"".$id_post."\"></input></form></td>"
    poi nella stessa pagina (ho messo un auto-indirizzamento) eseguo il controllo:
    Codice PHP:
    if(isset($_POST['cancella']) && is_numeric($_POST['cancella'])) {
      
    $id_post=$_POST['cancella']; 
      
    // query per eliminare la news

    finalmente! stavo impazzendo...non sono ancora del tutto convinto che sia la procedura giustà o più semplice da fare, nel senso che mi sembra strano che non si possa direttamente assegnare un attributo value al bottone di tipo image, ma l'importante è che funzioni!!
    grazie mille!

  10. #10
    Guarda che mettere un form per ogni riga è concettualmente errato: occupi più spazio per niente.
    Basta metterlo in testa.
    Per quanto riguarda l'immagine, basta usare un javascript: [img]immagine.jpg[/img]

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 © 2024 vBulletin Solutions, Inc. All rights reserved.