Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Visibilità delle variabili con il metodo post.

    Salve ho il seguente listato ma non riesco a capire perche' alcune variabili perdono di visibilità qualcuno mi aiuta?

    la variabile $idform perde di visibilità qualcuno riesce a capire perche'?


    echo "<table border='1'>";
    echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
    echo "<tr>";
    echo "<th>Selezione</th><th>Id</th><th>Nik</th><th>E-Mail</th><th>Note</th>";
    echo "</tr>";
    while($riga=mysql_fetch_array($datiric)){
    echo "<tr>";
    $idform=$riga['idsegnalatore'];
    echo "<td><input type='checkbox' name='$idform' value='$idform'></td>";
    echo "<td>".$riga['idsegnalatore']."</td><td>".$riga['nik']."</td><td>".$riga['mail']."</td><td>".$riga['note']."</td>";
    echo "</tr>";
    }
    echo "<tr><td><input type='submit' name='elric' value='Elimina'></td></tr>";
    echo "</form>";
    echo "</table>";
    }
    if (isset($_POST['elric'])){
    //in questo punto non ho piu' visibilità della variabile $idform e nemmeno di $riga perchè?
    if (isset($_POST['$idform'])){
    //quà non entra mai
    }
    }


    Grazie per le risposte che vorrete darmi
    P.S. Eventualmente per essere piu chiari vi posso dare l'intero listato..

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739

    Re: Visibilità delle variabili con il metodo post.

    if (isset($_POST['$idform'])){
    //quà non entra mai
    }
    Tiro a indovinare... forse c'è un dollaro di troppo? Magari con ...

    if (isset($_POST['idform'])){
    //quà non entra mai
    }
    ... potrebbe funzionare!

  3. #3
    Ho la necessità di accedere alla variabile array $riga in reload cioè dopo che il primo
    (isset($_POST['ricerca'])) ha avuto esecuzione e l'utente cerca di eseguire il secondo
    (isset($_POST['elric'])... vedi sotto

    if (isset($_POST['ricerca'])){
    echo "sono nella ricerca";
    $ricnome=$_POST['nome'];
    $ricmailfonte=$_POST['mailfonte'];

    if ($ricnome){
    $queryname="select * from segnalatori where nik='$ricnome'";
    }
    elseif ($ricmailfonte){
    $queryname="select * from segnalatori where mail='$ricmailfonte'";
    }
    else{
    echo "non è possibile effettuare la ricerca
    ";
    exit();
    }
    //effettuo la query
    $datiric=@mysql_query($queryname);

    if (!$datiric){
    echo "nessuna dato trovato
    ";
    exit();
    }
    echo "<table border='1'>";
    echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
    echo "<tr>";
    echo "<th>Nik</th><th>E-Mail</th><th>Note</th>";
    echo "</tr>";
    while($riga=mysql_fetch_array($datiric)){
    echo "<tr>";
    $idform=$riga['idsegnalatore'];
    echo "<td>".$riga['nik']."</td><td>".$riga['mail']."</td><td>".$riga['note']."</td>";
    echo "</tr>";
    }
    echo "<tr><td><input type='submit' name='elric' value='Elimina'></td></tr>";
    echo "</form>";
    echo "</table>";
    }

    if (isset($_POST['elric'])){
    //QUI HO LA NECESSITà DI ACCEDERE ALLA VARIABILE ARRAY $RIGA[] COME FACCIO.
    //Considera che qui ci arrivo in reload cioè dopo che
    //(isset($_POST['ricerca'])) ha avuto già esecuzione

    }
    Grazie ma era questo il problema volevo sottoporre.

  4. #4
    prova così

    codice:
    ...
    echo "</tr>"; 
    $riga=null;
    while($riga=mysql_fetch_array($datiric)){
    ...
    semplicità ... al sol nominarla sembra svanire

  5. #5
    Grazie per il suggerimento,

    ho trovato questo metodo:

    echo "<input type='hidden' name='formid' value='$valoredapassare'>";

    A questa variabile $valoredapassare avrò accesso da qualsia punto del programma
    con il metodo $_POST['formid'].

    Dilemma: Ma quando si tratta di una serie indefinita di valori o un array come si puo' fare con il metodo '$_POST([''])?.

    Domandona da un milirado di punti: come si possono conservare dei valori in reload (un numero indefinito di valori o un array)?

    Credo che questa domanda sia molto comune quindi di notevole interesse per tutti.

    Grazie.

  6. #6
    credo che questa sia una domanda che non ha niente a che fare con la prima (che era relativa a un problema di scope di php), e quindi da regolamento del forum dovresti aprire un altra discussione

    anche qui, scusa se te lo dico, ma dovresti spiegarti meglio, che significa ?

    come si possono conservare dei valori in reload (un numero indefinito di valori o un array)?
    posta un codice di esempio di array da passare
    semplicità ... al sol nominarla sembra svanire

  7. #7
    Ciao Biagiopas,
    ho risolto il problema cosi', gli vuoi dare uno sguardo. Tu in che modo lo avresti risolto?

    //Controllo se l'utente vuole effettuare la ricerca per nome o e-mail

    if (isset($_POST['ricerca'])){
    $ricnome=$_POST['nome'];
    $ricmailfonte=$_POST['mailfonte'];

    //ricerca per nome e preparo la query
    if ($ricnome){
    $queryname="select * from segnalatori where nik='$ricnome'";
    }
    //ricerca per e-mail
    elseif ($ricmailfonte){
    $queryname="select * from segnalatori where mail='$ricmailfonte'";
    }
    //nessuna ricerca prego riprovare
    else{
    echo "non è possibile effettuare la ricerca!
    ";
    exit();
    }
    //effettuo la query
    $datiric=@mysql_query($queryname);
    if (!$datiric){
    echo "nessuna dato trovato
    ";
    exit();
    }
    //query riuscita
    // preparo i risultati in un form con un checkbox
    // che serve per sapere da un elenco quale eliminare
    echo "<table border='1'>";
    echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post'>";
    echo "<tr>";
    echo "<th>Selezione</th><th>Id</<th><th>Nik</th><th>E-Mail</th><th>Note</th>";
    echo "</tr>";
    $riga=null;
    $contaid="";

    //qui devi considera la l'array $riga. E' importate perche' contiene il risultato
    //della ricerca. E' questo l'array che ti dicevo.
    //Non posso accedere in seguito a quest array nello specifico dove trovi la
    //seguente istruzione "if (isset($_POST['elric']))" vedi sotto.

    while($riga=mysql_fetch_array($datiric)){
    echo "<tr>";
    $idform=$riga['idsegnalatore'];
    echo "<td><input type='checkbox' name='$idform'></td>";
    echo "<td>".$riga['idsegnalatore']."</td><td>".$riga['nik']."</td><td>".$riga['mail']."</td><td>".$riga['note']."</td>";
    echo "</tr>";


    // La soluzione che ho trovato..
    //la variabile $contaid conterrà i valori id dei record la eliminare(tutti)
    //e ogni id verrà separato da un carattere "-" cosi' da avere una stringa
    //del tipo id1-id2-id3-idn
    if ($contaid==""){
    $contaid=$idform;
    }
    else{
    $contaid=$contaid."-".$idform;
    }
    }
    // La chiave di volta
    // il form contiene un campo con la proprietà type='hidden'
    // cioè nascosta qui mi conservo la variabile $contaid formattata
    //id1-id2-idn da recupera in seguito rendendola di fatto
    // accessibile con il metodo $_POST

    echo "<input type='hidden' name='formid' value='$contaid'>";


    echo "<tr><td><input type='submit' name='elric' value='Elimina'></td></tr>";
    echo "</form>";
    echo "</table>";

    }



    if (isset($_POST['elric'])){
    //Elimina gli elementi selezionati


    //QUI MI RECUPERO GL'ID FORMATTATI CHE TI DICEVO
    //CONTENUTI NELLA VARIABILE $contaid vedi sopra e con il metodo post
    $conta=$_POST['formid'];
    //creo un array da trattare con il metofo foreach
    $arrid=explode("-",$conta);
    //scorre il numero elementi dell'array
    foreach($arrid as $valore){
    //E FINALMENTE CONTROLLO SE IL CHECKBOX CHE AVRA'
    //COME NOME IL VALORE ID DEL NOMINATIVO DA ELIMINARE
    //E' STATO SELEZIONATO.
    if (isset($_POST[$valore])){
    //IL CHECKBOX E' STATO SELEZIONATO
    //QUINDI L'UTENTE VUOLE ELIMINARE IL NOMINATIVO.
    $queryelimina="delete from segnalatori where idsegnalatore=$valore";
    $resul=@mysql_query($queryelimina);
    if($resul){
    echo "Nominativo eliminato!
    ";
    }
    else{
    echo "impossible eliminare il nominativo!
    ";
    }
    }
    }
    }
    //****************F I N E*********************
    Il problema come vedi era di visibilità dell'array $riga[].

    Tu che ne dici?

    Ti posso mandare il listato intero ordinato e indentato a dovere cosi da essere maggiormente leggibile.
    Grazie sempre è comunque.
    Rocco

  8. #8
    chiaro ... l'array riga[] è ok

    anche se come hai fatto tu funziona ti suggerisco di fare una ricerca veloce su come passare via post un form html contenente le checkbox in php, scoprirai che bastano due istruzioni ... anzi una sola
    semplicità ... al sol nominarla sembra svanire

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.