[risolto] Problema select e verifica form

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao a tutti :) , premetto che non sono molto pratica di script php/mysql ma cerco di imparare il più possibile :book: .
Ho una tabella utenti con campi del tipo:
id | nome
1 | maria
2 | anna
3 | claudia
4 | stefania
5 | etc...

sto creando uno script che dovrebbe avere la funzione di verificare tre nomi, se uno o più nomi si trovano nel db mi visualizzerà che esistono nel database, se uno o più nomi non si trovano nel db mi visualizzerà che non esistono nel database, se uno o più campi nella form non sono compilati non vengono verificati.
Questa e la parte dello script in cui mi sono bloccata:

PHP:
...
	$nome = $_POST['nome'];
	$nome1 = $_POST['nome1'];
	$nome2 = $_POST['nome2'];
	$nome3 = $_POST['nome3'];
	unset($_POST['invia']);

	$n = 0;
	$IN = "IN(";
	foreach($_POST as $key => $value) {
	if(!empty($value)) {
       $IN = $IN . "'$value',";
       $n = $n + 1;
       }
   }
	$IN = substr($IN, 0, -1);
	$IN = $IN . ")";
		
	$read="SELECT Count( * ) AS Conta FROM utenti  WHERE nome $IN";
	$raw=mysql_query($read);
	$row= mysql_fetch_array($raw);
	$raw.close;

	if ($row[Conta] >= ' .$n .'){ ;

	echo "
	<script>
	alert(\"il nome esiste nel database\"); 
	</script>
	";

	}

	else{
	
	mysql_close();

	echo "
	<script>
	alert(\"il nome non esiste nel database\"); 
	</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>
...

il problema che mi funziona in maniera errata ma non riesco a capire perchè :dipser:.
Grazie in anticipo a chi mi aiuterà :byebye:
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, questa istruzione cosa dovrebbe fare?
PHP:
$raw.close;
spiega perche lo script funziona male
 

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao, questa istruzione cosa dovrebbe fare?
PHP:
$raw.close;
spiega perche lo script funziona male

Ciao criric e buona domenica :) , la riga

PHP:
$raw.close;

e rimasta dopo varie prove non andate a buon fine :p , ricordavo che si inserisse dopo
PHP:
$raw=mysql_query($read);
$row= mysql_fetch_array($raw);

per chiudere la stringa $raw ma non ne sono sicura.

In pratica il problema e che non effettua correttamente la verifica dei tre campi form , se compilo il form con uno o più nomi che non esistono nel db mi dice che esistono, se lascio i tre campi form completamente vuoti , oltre al messaggio mi visualizza anche l'errore

Codice:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ...

sulla riga

$row= mysql_fetch_array($raw);

Grazie in anticipo per l'aiuto criric
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto per usare il post in quella maniera nel foreach devi modificare il form
(tolgo label ecc per scrivere meno)
HTML:
<form name="form" method="post" action="">
	<input name="nome[]" type="text" />
	<input name="nome[]" type="text" />
	<input name="nome[]" type="text" />
	<input name="invia" type="submit" value="Invia" />
</form>
allora poi nel php puoi utilizzare il $_POST, che in questo caso è un array, nel foreach
credo che sia un problema di apici
il where in dovrebbe essere es "SELECT.... WHERE pinco IN('a,b,c,d')"
prova così
PHP:
<?php
//....
	unset($_POST['invia']); 
	$n = 0;
	 foreach($_POST as $key => $value) {
		if(!empty(trim($value))) {//metti un trim
			$elenco[]=$value;
			$n = $n + 1;
		}
	}
	//qui ti converrebbe verificare se $elenco è un array se si procedi altrimenti salti il tutto
	$IN = " IN('".implode(",",$elenco)."')";

    $read="SELECT COUNT(*) AS Conta FROM utenti  WHERE nome $IN";
	//e qui ti conviene mettere un var_dump per vedere se la querystringa viene scritta come dovrebbe
	var_dump($read);
//....
?>
 

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao borgo italia :) , integrando la parte di codice da te suggerito mi usciva un errore warning trim nella riga

PHP:
if(!empty(trim($value))) {//metti un trim

ho modificato la riga con

PHP:
if(!trim($value)) {//metti un trim

ed il form si visualizza ma continua a non funzionare dandomi errore su implode :dipser:

PHP:
...
	$nome = $_POST['nome'];
    unset($_POST['invia']); 
    $n = 0;
    foreach($_POST as $key => $value) {
	if(!trim($value)) {
            $elenco[]=$value;
            $n = $n + 1;
        }
    }

    $IN = " IN('".implode(",",$elenco)."')"; 
	
	$read="SELECT Count( * ) AS Conta FROM utenti  WHERE nome $IN";
    var_dump($read); 

	if ($row[Conta] >= ' .$n .'){ ;

	echo "
    <script>
    alert(\"il nome esiste nel database\"); 
    </script> 
	
	";

	}

	else{
	
	mysql_close();

	echo "
    <script>
    alert(\"il nome non esiste nel database\"); 
    </script> 
	
	";
	}
}
...

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

Grazie in anticipo per l'aiuto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa mi era rimasto nella penna una cosa
ecco
PHP:
<?php
if(isset($_POST['invia'])){
    unset($_POST['invia']); 
    $n = 0;
     foreach($_POST['nome'] as $key => $value){//mi ero dimenticato ['nome']
        if(trim($value)!="") {
            $elenco[]=$value;
            $n = $n + 1;
        }
    }
    if(is_array($elenco)){
		$IN = " IN('".implode(",",$elenco)."')";
   	 	$read="SELECT COUNT(*) AS Conta FROM utenti  WHERE nome $IN";
    	//e qui ti conviene mettere un var_dump per vedere se la querystringa viene scritta come dovrebbe
    	var_dump($read);
		//......
	}else{
		echo "errore";//e qui fai quello che cuoi es riinvii al form
	}
}
?> 
<br />
<form name="form" method="post" action="">
	<input name="nome[]" type="text" /><br />
	<input name="nome[]" type="text" /><br />
	<input name="nome[]" type="text" /><br />
	<input name="invia" type="submit" value="Invia" />
</form>
 

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao borgo italia :) , il dump che mi ha generato e

PHP:
string(74) "SELECT COUNT(*) AS Conta FROM utenti WHERE nome IN('maria,anna,test')"

ma lo script continua a dirmi che il nome/i inseriti esistono nel db anche se 'test' non esiste :dipser:

PHP:
if(isset($_POST['invia'])){
    unset($_POST['invia']); 
    $n = 0;
     foreach($_POST['nome'] as $key => $value){//mi ero dimenticato ['nome']
        if(trim($value)!="") {
            $elenco[]=$value;
            $n = $n + 1;
        }
    }
    if(is_array($elenco)){
        $IN = " IN('".implode(",",$elenco)."')";
            $read="SELECT COUNT(*) AS Conta FROM utenti  WHERE nome $IN";
        //e qui ti conviene mettere un var_dump per vedere se la querystringa viene scritta come dovrebbe
        var_dump($read);

	echo "
	<script>
	alert(\"il nome esiste nel database\"); 
	</script>
	";

    }else{

	echo "
	<script>
	alert(\"il nome non esiste nel database\"); 
	</script>
	";



    }
} 


	?>
<br />
<form name="form" method="post" action="">
    <input name="nome[]" type="text" /><br />
    <input name="nome[]" type="text" /><br />
    <input name="nome[]" type="text" /><br />
    <input name="invia" type="submit" value="Invia" />
</form>

Ciao e grazie ancora per l'aiuto borgo italia
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho la vaga impressione, se non ho capito male quello che vuoi fare, il sistema che hai adottato non va bene.
immagino che tu verifichi cosa risulta da count
se count == 0 il/i nome/i non esiste/ono
se count > 0 il/i nome/i esiste/ono
ma c'è un piccolo ma, ed è quello che ti risulta
se nella colonna nome c'è almeno un nome uguale a uno di quelli dell'IN count sarà sempre > 0 in quanto es
ipotizziamo
1 | pinca
2 | anna
3 | sofonisba
4 | pancrazia
5 | etc...
il count con where IN('maria,anna,test')
ti darà comunque 1 perchè ha trovato anna
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
essendo stringhe la query non dovrebbe essere cosi
PHP:
"SELECT COUNT(*) AS Conta FROM utenti WHERE nome IN('maria,anna,test')"
ma cosi
PHP:
"SELECT COUNT(*) AS Conta FROM utenti WHERE nome IN('maria','anna','test')"
 

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao borgo italia e criric :) , teoricamente lo script dovrebbe funzionare così:

id | nome
1 | maria
2 | anna
3 | claudia
4 | stefania
5 | etc...

inserisco nel form uno o più nomi che esistono e mi visualizza esito positivo;
inserisco nel form uno o più nomi che non esistono e mi visualizza esito negativo;
inserisco nel form nomi che esistono e nomi che non esistono e mi visualizza esito negativo;
i campi vuoti non sono controllati perchè vuoti.:p

sono ferma proprio sulla verifica.
Spero non sia complessa :dipser:
Grazie in anticipo
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
A me non è chiara questa parte
inserisco nel form uno o più nomi che esistono e mi visualizza esito positivo;
veronica, angela, maria dovrebbe dare esito positivo
inserisco nel form uno o più nomi che non esistono e mi visualizza esito negativo;
gli stessi nomi in questo caso dovrebbero dare esito negativo

:confused::confused:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
cioa
ho pensato a questo, guarda se ti va bene
PHP:
<?php
//....
if(isset($_POST['invia'])){
	//....
    unset($_POST['invia']); 
    $n = 0; //a che ti serve questa variabile?
	foreach($_POST['nome'] as $key => $value) {
        if(trim($value)!="")) {
            $elenco[]=$value;
            $n = $n + 1;//se ti serve scrivi così: $n++;
        }
    } 
	if(is_array($elenco)){
		$esistono="SI";//al posto di si anche 1 o quello che ti piace
		foreach($elenco AS $nome){
			$query="SELECT nome FROM utenti WHERE nome='$nome'";
			$ris=mysql_query($query);
			if(mysql_num_rows($ris)==0){
				$esistono="NO";
				break;//se trovo un nome che non esiste inutile continuare a ciclare
			}
		}
		if($esistono=="SI"){
			echo "tutti i nomi esistono";
		}else{
			echo "uno o più nomi non esistono";
		}
	}else{
		echo "non hai riempito nessun campo";
		//e rimandi al form o dove vuoi
	}
}
//....
?>
<form name="form" method="post" action="">
	<input name="nome[]" type="text" />
	<input name="nome[]" type="text" />
	<input name="nome[]" type="text" />
	<input name="invia" type="submit" value="Invia" />
</form>
 

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao borgo italia :) , funziona benissimo :p , mi dava sintax error sul trim ma era stata aggiunta una parentesi in più forse errore di battitura

PHP:
if(trim($value)!="")) {

con

if(trim($value)!="") {

Scusami se non sono stata veloce nel risponderti ma ieri ho fatto varie prove con esito negativo.
Stavo cercando di aggiungere ulteriori campi al form

PHP:
<?php
//....
if(isset($_POST['invia'])){
    //....
    unset($_POST['invia']); 
    foreach($_POST['nome'] as $key => $value) { // parte non ancora modificata
        if(trim($value)!="")) {
            $elenco[]=$value;
        }
    } 
    if(is_array($elenco)){
        $esistono="SI";//al posto di si anche 1 o quello che ti piace
        foreach($elenco AS $nome){ // parte non ancora modificata
            $query="SELECT nome,cognome FROM utenti WHERE nome='$nome' AND cognome='$cognome'";
            $ris=mysql_query($query);
            if(mysql_num_rows($ris)==0){
                $esistono="NO";
                break;//se trovo un nome che non esiste inutile continuare a ciclare
            }
        }
        if($esistono=="SI"){
            echo "tutti i nomi esistono";
        }else{
            echo "uno o più nomi non esistono";
        }
    }else{
        echo "non hai riempito nessun campo";
        //e rimandi al form o dove vuoi
    }
}
//....
?>
<form name="form" method="post" action="">
NOME_____________COGNOME<br>
<input name="nome[]" type="text" /><input name="cognome[]" type="text" /><br>
<input name="nome[]" type="text" /><input name="cognome[]" type="text" /><br>
<input name="nome[]" type="text" /><input name="cognome[]" type="text" /><br>
<input name="invia" type="submit" value="Invia" />
</form>

ma credo che ora ci sarà un problema con gli array...
Quali modifiche si dovrebbero apportare allo script per aggiungere il campo 'cognome' e in futuro se ci saranno altri campi?:confused:
Ho già inserito nella tabella 'utenti' dei cognomi di prova.
Grazie infinite per l'aiuto borgo italia e scusami ancora.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto dipende da cosa vuoi fare con quei campi aggiuntivi
ripartiamo dalla tabella che evidentemente sarà del tipo
id | nome | cognome
1 | maria | pallonzi
2 | anna | pancrazi
3 | claudia | sofonisbi
4 | stefania | befani
5 | etc...
guarda che scrivo per una sola riga input e tu scrivi cosa deve fare
campo input nome | campo input cognome
1)
anna | pancrazi
qui evidente deve dare giustamente ok
2)
anna |sofonisbi
cosa deve fare?
3)
"vuoto" | pancrazi
cosa deve fare?

e considera tutt le combinazioni possibili, considerando anche che le righe di input compilate possono essere più di una
 

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao borgo italia e grazie ancora per la disponibilità :) , la tabella 'utenti' che ho modificato ora e così strutturata

Codice:
id | nome | cognome | email
1 | maria | rossi | [email protected]
2 | anna | bianchi | [email protected]
3 | claudia | verdi | [email protected]
4 | stefania | blu | [email protected]
5 | etc

la mia intenzione era la stessa :
inserendo nel form una o più righe che esistono mi visualizza esito positivo;
inserendo nel form una o più righe con uno o più campi errati mi visualizza esito negativo;
inserendo nel form righe che esistono e righe con campi errati mi visualizza esito negativo;
i campi vuoti non sono verificati perchè vuoti.

Mi sono trovata in difficoltà anche con i name=nome[] , utilizzo dei controlli javascript e per vari motivi dovrebbero rimanere nome1 cognome1... nome2 cognome2 etc :book: .

Spero non sia una cosa molto complessa e scusami ancora se approfitto della tua disponibilità e del tuo tempo :byebye: .
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto
Mi sono trovata in difficoltà anche con i name=nome[] , utilizzo dei controlli javascript
qui non so come aiutarti perche js è ostico per me, ma se devi fare dei controlli accurati ti conviene usare php perche js può essere agevolmente aggirato

poi da quello che ho capito
1) se uno imputa
maria | rossi | [email protected]
anna | bianchi | [email protected]
claudia | verdi | [email protected]
giustamente ti da OK
2)
maria | rossi | [email protected]
anna | verdi | [email protected]
claudia | verdi | [email protected]
anna è sbagliato quindi KO
3) un campo vuoto è come se avesse sbagliato (come punto 2)
giusto?
e comunque nel form vuoi aggiungere anche l'indirizzo email?
 
Ultima modifica:

Virginia86

Nuovo Utente
24 Mag 2007
20
0
0
Ciao borgo italia :) ecco

1)
maria | rossi | [email protected]
anna | bianchi | [email protected]
...
"esistono nel db" (una o più righe corrispondono)
2)
maria | rossi | [email protected]
anna | verdi | [email protected]
...
"non esistono nel db" (una o più righe non corrispondono)
3)
maria | rossi | [email protected]
anna | bianchi | -vuoto-
...
"esistono nel db" (il campo vuoto non viene verificato, lo verifico io con javascript :p)

per javascript aggiungerò io degli script per dei controlli , l'unico problema e che i "name" del form siano differenziati (nome1 nome2 .... cognome1 cognome2 .. etc)

e comunque nel form vuoi aggiungere anche l'indirizzo email?

si un terzo campo per esempio email, città o altro.
Grazie in anticipo.
 
Discussioni simili
Autore Titolo Forum Risposte Data
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
S Problema in PHP per invio file XML - RISOLTO- PHP 8
T [Photoshop] Problema creazione pennello personalizzato [RISOLTO] Photoshop 3
F [risolto] Problema javascript Internet Explorer Javascript 1
otto9due [risolto] Problema sessioni php e login PHP 5
Alessandro Le Mura [risolto] PHP problema memorizzazione array PHP 4
S [risolto] Problema riempimento di una tabella PHP 6
P [risolto] Problema funzione raggruppamento di elementi Javascript 4
T [Javascript] [RISOLTO] Problema con Google Maps e "Zero_Results" Javascript 11
M [RISOLTO] Problema con 'a:hover' HTML e CSS 12
M [RISOLTO]Problema controllo e passaggio di valori da una pagina all''altra PHP 4
H [RISOLTO]Problema connessione + insert mysqli PHP 10
O [risolto] Inserimento nuovo campo in mysql. Problema PHP 6
lsnight [RISOLTO] Problema con mouseout ed immagini Javascript 2
V [RISOLTO]Problema con il POST PHP 8
A [Risolto] Problema con un list box Classic ASP 2
M [Risolto]Problema con risposta json Sviluppo app per Android 6
C [RISOLTO] Problema somma td, prende solo il primo valore jQuery 7
C Problema Risolto Flash 0
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1

Discussioni simili