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

    [MySql] Problema select e campi form con lo stesso name

    Buongiorno a tutti , ho una tabella 'utenti' con i classici campi id, nome, cognome, email, che contengono ad esempio:

    id | nome | cognome | email
    1 | maria | rossi | maria.rossi@mail.it
    2 | anna | bianchi | anna.bianchi@mail.it
    3 | sara | mari | sara.mari@mail.it

    Utilizzo il codice:

    Codice PHP:

    ...

        
    $read="SELECT Count( * ) AS Conta FROM utenti  WHERE nome = '$nome'";
        
    $raw=mysql_query($read);
        
    $rowmysql_fetch_array($raw);
        
    $raw.close;

        if (
    $row[Conta]>){

        echo 
    "
        <script>
        alert(\"L'utente esiste nel database\");
        </script>
        <SCRIPT>
        window.location=\"esiste.php\"
        </SCRIPT>
        
        "
    ;

        }

        else{
        
        
    mysql_close();

        echo 
    "
        <script>
        alert(\"L'utente non esiste nel database\");
        </script>
        <SCRIPT>
        window.location=\"nonesiste.php\"
        </SCRIPT>
        
        "
    ;
        }

    ...

        <
    form name="form" method="post" action="">
          <
    label>nome:
          <
    input name="nome" type="text" />
          </
    label>
          <
    p>
            <
    input name="invia" type="submit" value="Invia" />
          </
    p>
        </
    form>

    ... 
    la select mi verifica il campo 'nome' inserito nel form , se esiste mi rimanda alla pagina esiste.php , se non esiste mi rimanda alla pagina nonesiste.php.

    Mi sono trovata in difficolta' modificando il form in questo modo :

    Codice PHP:

    ...

        <
    form name="form" method="post" action="">
          <
    p>
          <
    label>nome:
          <
    input name="nome" type="text" />
          </
    label>
          </
    p>
          <
    p>
          <
    label>nome:
           <
    input name="nome" type="text" />
           </
    label>
          </
    p>
          <
    p>
          <
    label>nome:
           <
    input name="nome" type="text" />
           </
    label>
          </
    p>
          <
    p>
            <
    input name="invia" type="submit" value="Invia" />
          </
    p>
        </
    form>

    ... 
    dovrei controllare tre nomi, se esistono tutti e tre mi rimanda alla pagina esiste.php , se non esistono uno o piu' nomi mi rimanda alla pagina nonesiste.php.
    Ho provato a modificare la select o a fare ricerche nel forum ma non ci sono riuscita , spero che sia possibile .
    Grazie in anticipo a tutti quelli che mi aiuteranno
    Saluti
    Milena

  2. #2
    nell'input differenzia il name (nome1, nome2, nome3)

    dopo avere prelevato dal $_POST le tre variabili li metti in OR oppure IN()

    $read="SELECT Count( * ) AS Conta FROM utenti
    WHERE nome IN('
    $nome1', '$nome2', '$nome3')";


    Poi ovviamente verifichi

    if ($row[Conta] >= 3){

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie mille piero.mac per i tuoi suggerimenti, sei stato gentilissimo , questo e il codice modificato:

    Codice PHP:

    ...

        
    $nome $_POST['nome'];
        
    $nome1 $_POST['nome1'];
        
    $nome2 $_POST['nome2'];
        
    $nome3 $_POST['nome3'];

        
    $read="SELECT Count( * ) AS Conta FROM utenti  WHERE nome IN('$nome1', '$nome2', '$nome3')";
        
    $raw=mysql_query($read);
        
    $rowmysql_fetch_array($raw);
        
    $raw.close;

        if (
    $row[Conta]>=){

        echo 
    "
        <script>
        alert(\"L'utente esiste nel database\"); 
        </script>
        <SCRIPT>
        window.location='si.php'
        </SCRIPT>
        
        "
    ;

        }

        else{
        
        
    mysql_close();

        echo 
    "
        <script>
        alert(\"L'utente non esiste nel database\"); 
        </script>
        <SCRIPT>
        window.location='no.php'
        </SCRIPT>
        
        "
    ;
        }

    ...

        <
    form name="form" method="post" action="">
          <
    p>
          <
    label>nome1:
          <
    input name="nome1" type="text" />
          </
    label>
          </
    p>
          <
    p>
          <
    label>nome2:
           <
    input name="nome2" type="text" />
           </
    label>
          </
    p>
          <
    p>
          <
    label>nome3:
           <
    input name="nome3" type="text" />
           </
    label>
          </
    p>
          <
    p>
            <
    input name="invia" type="submit" value="Invia" />
          </
    p>
        </
    form>

    ... 

    Ho notato che sono costretta a riempire tutti e tre i campi per la verifica , c'e' un modo per effettuare la verifica anche inserendo due o un solo nome mentre l'altro campo/i sono vuoti ?
    Grazie in anticipo piero.mac
    Milena

  4. #4
    Assegna un default al form che non esista nella tabella. Ma.... se ne servono tre per dire che gia' esiste ....

    <input name="nome1" type="text" value = "No" />

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ciao piero.mac credo di essermi confusa , quello che intendevo e se era possibile modificare :

    Codice PHP:
    if ($row[Conta]>=){ 
    in modo che possa variare il valore '>=3' con '>=2' o '>=1' insieme ai campi del form compilati.

    Per esempio:

    se nome1, nome2, nome3 sono compilati allora ($row[Conta]>=3 )
    altrimenti
    se nome1, nome2 sono compilati e nome3 e vuoto allora ($row[Conta]>=2 )
    altrimenti
    se nome1 e compilato e nome2, nome3 sono vuoti allora ($row[Conta]>=1 )

    Spero sia possibile
    Grazie in anticipo per l'aiuto
    Milena

  6. #6
    A livello didattico ti ho preparato uno script per provare. Copia e incolla in un file qualunque .php

    Provalo e vedi cosa combina. E' commentato man mano dovrebbe essere chiaro.

    Codice PHP:
    <?php
    if(empty($_POST)) {         // se $_POST e' vuoto mando il form
    ?>

    <form name="form" method="post" action="">
          <p>
          <label>nome1:
          <input name="nome1" type="text" />
          </label>
          </p>
          <p>
          <label>nome2:
           <input name="nome2" type="text" />
           </label>
          </p>
          <p>
          <label>nome3:
           <input name="nome3" type="text" />
           </label>
          </p>
          <p>
            <input name="invia" type="submit" value="Invia" />

    <?php
    } else { echo "<pre>";
    print_r($_POST);            // quello che ricevi dal post
    unset($_POST['invia']);     // togli  l'ultimo valore
    print_r($_POST);            //  sono solo i nomi

    $n 0;                     //  setto il contatore frequenza
    $IN "IN(";              //  setto IN()
    foreach($_POST as $key => $value) {
       if(!empty(
    $value)) {
           
    $IN $IN "'$value',";    // preparo la funzione IN()
           
    $n $n 1;                // conto
           
    }
       }
    $IN substr($IN0, -1);     // tolgo l'ultima virgola
    $IN $IN ")";              // chiudo la funzione IN
    echo "numero dei campi compilati = $n <br />";         // eccoti il numero dei campi compilati

    $query "select count(*) from utenti
              where nome 
    $IN";
    echo 
    $query ."<br />";
    echo 
    'if ($row[Conta] >= ' .$n .'){' ;    // per stampare la stringa
    }                             // chiusura dell'else
    ?>
    Ultima modifica di piero.mac; 14-11-2013 a 12:55

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Grazie mille piero.mac , provo a fare delle prove e ti faccio sapere
    Saluti
    Milena

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.