Variabile contenente array con valori dientici e con chiavi uguali

Monital

Utente Attivo
15 Apr 2009
778
2
18
Arieccomi

ho questo problemino però ripetuto inq uelloc he sto facendo.

In pratica ho creato un form con delle select box all'interno di un ciclo for.

Ora nella apgina che riceve i dati devo verificare che nons iano stati inviati gli stessi valori ma forse perchè nonr iescoa concentrarmi abbastanza proprio non riesco a far delle verifiche

Questo il codice della select che invia i dati

PHP:
for($x=1;$x<5;$x++)
echo "<select name=\"ID[".$x."]\" class=\"select\" onclick=\"loadPage(this.form.elements[0])\">";
....blablabla
echo "<select name=\"Nome[".$x."]\" class=\"select\" onclick=\"loadPage(this.form.elements[0])\">";
.....blablabla

e questo quelli che li riceve

PHP:
$id= isset($_POST['ID']) ? $_POST['ID'] : array();
$nome= isset($_POST['Nome']) ? $_POST['Nome'] : array();

facendo un var dumpdi $id e di $nome mi stampa tutto correttamente però ora dovrei effettuare delle verifiche e qui mi blocco

spiego:

In $nome devo verificare che non siano stati inseriti 2 nomi ugauli
in ID devo verificare che non ci siano 2 numeri uguali

qual'è il comando giusto?

poi in ultima avendo definito le stesse chiavi per entrambe le variabili devo far diventare $id la chiave di $nomi in funzione della vecchia chiave $x non so se mi spiego

se faccio var_dump di $nomi avrò [1]=>Pippo [2]=>Topolino
mentredi $id avrò [1]=100 [2]=>200

ora $nomi mi deve diventare [100]Pippo e [200] topolino , questo mis ervirà epr poi inserire nel database i dati.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
potresti porovare una cosa del genere
confronti il primo col secondo, terzo, quarto e quinto
il secondo col terzo, quarto, quinto
ecc...
PHP:
<?php
for($k=1; $k<5; $k++){
	for($j=($k+1); $j<=5; %j++){
		if($id[$k]==$id[$j] || $nome[$k]==$nome[$j]){
			//fai quello che devi fare se sono uguali
		}
	}
}
?>
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao
potresti porovare una cosa del genere
confronti il primo col secondo, terzo, quarto e quinto
il secondo col terzo, quarto, quinto
ecc...
PHP:
<?php
for($k=1; $k<5; $k++){
	for($j=($k+1); $j<=5; %j++){
		if($id[$k]==$id[$j] || $nome[$k]==$nome[$j]){
			//fai quello che devi fare se sono uguali
		}
	}
}
?>


si ok cosi trova il valore uguale eprò mis ta facendo diventar matto l'esecuzione della condizione

io devo metter un avviso

PHP:
echo "hai messo l'd x volte"

e subito dopo una funzione javascript epr ritornare alla pagina principale.

ma mi ripete 5 volte la frase e non aprte il ritorno alla home :incazz2:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
mi corrego

non funge.

l'avviso che isnerisco
PHP:
    if($id[$k]==$id[$j] || $nome[$k]==$nome[$j]){
            //fai quello che devi fare se sono uguali

echo "Sono uguali";
        }

pare anche se non ci sono valori ugali
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
scusa avevo messo u % al posto di $ (errore di battitura)
PHP:
<?php
$id=array(1=>33, 2=>44, 3=>55, 4=>66, 5=>77);
$nome=array(1=>"pinco", 2=>"pallo", 3=>"pinco", 4=>"pallino", 5=>"sofonisba");
for($k=1; $k<5; $k++){
    for($j=($k+1); $j<=5; $j++){
        if($id[$k]==$id[$j] || $nome[$k]==$nome[$j]){
            //fai quello che devi fare se sono uguali
			echo "hai messo due uguali $k e $j <br>";
        }
    }
}
?>
e questo è l'uotput
hai messo due uguali 1 e 3
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
l'avevo corretta quella borgo del % me ne ero accorto

però continua a farmi l'echo anche se non ci sono id uguali
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
è uno dei metodi che uso per fare i confronti.
comunque per verificare ho leggermente modificato
PHP:
<?php
$id=array(1=>33, 2=>44, 3=>55, 4=>66, 5=>55);
$nome=array(1=>"pinco", 2=>"pallo", 3=>"pinco", 4=>"pallino", 5=>"sofonisba");
for($k=1; $k<5; $k++){
    for($j=($k+1); $j<=5; $j++){
        if($id[$k]==$id[$j] || $nome[$k]==$nome[$j]){
            //fai quello che devi fare se sono uguali
			echo "hai messo due uguali $k e $j <br>";
			if($id[$k]==$id[$j]){ 
				echo "&nbsp;&nbsp;&nbsp;id valore ".$id[$k]." = ".$id[$j]."<br>";
        	}elseif($nome[$k]==$nome[$j]){
				echo "&nbsp;&nbsp;&nbsp;nome valore ".$nome[$k]." = ".$nome[$j]."<br>";
			}
		}
    }
}
?>
e questo è l'output
hai messo due uguali 1 e 3
nome valore pinco = pinco
hai messo due uguali 3 e 5
id valore 55 = 55
verifica cosa hai negli array e/o di aver messo i loro nomi giusti
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ok funge avevo sbagliato io una cosa nel ciclo cmq funge, però c'è una solita cosa che ora mi sfugge

fatta la verifica se non trvoa id uguali deve fare altre verifiche e stampare un riepilogo.

senza questo codice los cript fa tutte le verifiche esattaemnte ed intabella correttamente ma se aggiungo l'elseif mi svombina utto a causa del ciclo for

PHP:
for($k=1; $k<5; $k++){
    for($j=($k+1); $j<=5; $j++){

            if($id[$k]==$id[$j]){ 
                echo "&nbsp;&nbsp;&nbsp;id valore ".$id[$k]." = ".$id[$j]."<br>";
            }
///qui devo inserire le altre veriche se non trova id uguali

///elseif(blablabla

        }
    }

come posso ovviare?


p.s per la seconda aprte del quesito(lo scambio di chiavi) non so come applicare la cosa

in pratica seguendo il tuo esempio

$id=array(1=>33, 2=>44, 3=>55, 4=>66, 5=>55);
$nome=array(1=>"pinco", 2=>"pallo", 3=>"pinco", 4=>"pallino", 5=>"sofonisba");

vorrei avere un array dove $id diventa la chiave di $nome in corrisponza delle chaivi /attuali)uguali

$nome=array(33=>"pinco", 44=>"pallo", 55=>"pinco", 66=>"pallino", 55=>"sofonisba");

thank
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ho risistemato i due array come se avessero passato il controllo dei doppioni
PHP:
<?php
$id=array(1=>33, 2=>44, 3=>55, 4=>66, 5=>77);
$nome=array(1=>"pinco", 2=>"pallo", 3=>"asdrubale", 4=>"pallino", 5=>"sofonisba");

for($k=1; $k <= 5; $k++){
	$chiave=$id[$k];
	$nuovo_array[$chiave]=$nome[$k];
}
// TEST DI VERIFICA
foreach($nuovo_array as $ch => $val){
	echo "nuovo_array[$ch] contiene $val<br>";
}
?>

edit
credo, ma non ricordo, che ci sia una funzione php che fa quel lavoro, ma stamattina php.net (per me) non risulta raggiungibile (??), se la trovo te la posto
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
da quello che ho capito se trova qualcosa di uguale rimandi al form perchè l'utente reinserisca, giusto?
se è così le altre verifiche devi metterele dopo i due for e non all'interno.
e un'osservazione
dallo script che hai postato vedo che controlli solo se l'id è duplicato.
cosa rappresenta quell'id, l'id dell'utente?
se è cosi a che ti serve che l'utente si attribuisca un id? quando (immagino) fai l'insert del nome in tabelle se l'id è autoincrement primarykey si aggiorna in automatico
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao
da quello che ho capito se trova qualcosa di uguale rimandi al form perchè l'utente reinserisca, giusto?
se è così le altre verifiche devi metterele dopo i due for e non all'interno.
e un'osservazione
dallo script che hai postato vedo che controlli solo se l'id è duplicato.
cosa rappresenta quell'id, l'id dell'utente?
se è cosi a che ti serve che l'utente si attribuisca un id? quando (immagino) fai l'insert del nome in tabelle se l'id è autoincrement primarykey si aggiorna in automatico

si giusto se trova dei nomi uguali nel form rimanda all'index

le altre verifiche le ho messe dopo il for però quando reinvia al form
PHP:
			     echo "<script type=\"text/javascript\" >alert(\"Hai inserito ".$id." due volte\")
   history.back();
;</script>";

si vede la tabella vuota sullo sfondo e non mi paiceva sta cosa.

per il resto si controllo solo l'id perchè da l primo post che ho fatto ho modificato delle cose nel form princiaple e la variabile nome è un array fisso da cui devo fare un altro tipo di verifiche ed ho risolto con una funzione.
non ho detto neinte perchè los cript completo che hai postato mi servirà da un altra parte. in rpatica con questa discussione sto rpendendo due piccioni con una fava.

l'id nonè dell'utente ma del nome che seleziona e non è autoincrement per quello mi serviva la seconda aprte del quesito

la tabella da cui viene effettuata la selezione ha dei nomi e un id univoco per ogni nome. quando l'utente seleziona(da una select box) un nome mi porto dietro l'id

PHP:
echo "<select name=\"id[".$x."]\" class=\"select\" onclick=\"loadPage(this.form.elements[0])\">";
foreach($nomi as $chiave => $valore){
	
echo  "<option value=".$chiave.">$valore</option>";
}

quindi ho un array con gli id dei nomi poi ho un altro array (proveniente sempre da delle select box) che definisce le azioni su quel nome

e los cript per il cambio chiavi funge perfettamente anche se devo poi verificarne l'insert nella tabella mysql ma sono un pò indietro quindi a breve sarà facile che riposti :D

per la funzione forse riescoa farla cneh da solo in funzione di questo scripttino che haio messo

Attendo parere sul fatto del reindirizzamento
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ecco ho trovato, al posto dei for piu semplicemente puoi fare
PHP:
<?php
$id=array(1=>33, 2=>44, 3=>55, 4=>66, 5=>77);
$nome=array(1=>"pinco", 2=>"pallo", 3=>"asdrubale", 4=>"pallino", 5=>"sofonisba");
$nuovo_array=array_combine($id,$nome);//per ver php >= 5
// TEST DI VERIFICA
foreach($nuovo_array as $ch => $val){
	echo "nuovo_array[$ch] contiene $val<br>";
}
?>
poi cosa intendi, una funzione che ti reindirizzi in automatico? se è così puoi usare
PHP:
echo "<meta http-equiv='Refresh' content='3; URL=nome_pagina_a_cui_riinviare.php'>";
//content ='3; sono i secondi di attesa prima di essere riinviati, pioi mettere da 0 in su
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Assegnare dati fetch request ad una variabile globale Javascript 0
E Inviare variabile a PHP da ciclo in JS Javascript 0
S Variabile in post su altra pagina PHP 2
F Passare variabile a pulsante in finestra modale PHP 2
R Nome input testo+variabile PHP 1
A inserire variabile php colore in div html PHP 2
N Variabile di sessione è un array PHP7 PHP 3
A variabile non riconosciuta PHP 0
K Cambiare font size su echo stringa variabile PHP 24
B Errore unexpected '$variabile' (T_VARIABLE) in your code on line PHP 2
M Inserire variabile nella value di una hidden PHP 3
A Problema nel passare la variabile PHP 0
C variabile in img Javascript 9
C [RISOLTO]Inserimento variabile php in input html PHP 20
N PDF fpdi passare variabile PHP 4
F Come passare una variabile al modal di bootstrap PHP 1
F Passare una variabile php dal DB mysql alla pagina PHP 3
M [PHP] Passare variabile di sessione con metodo GET PHP 10
S [PHP] Rendere visibile variabile di un costrutto if in un altro costrutto if PHP 1
T PHP: variabile che cambia ogni 5 giorni... PHP 3
Tommy03 Variabile PHP per impostare una proprietà CSS PHP 2
L [PHP] Passare variabile PHP 3
J Passaggio variabile tra 2 file php PHP 15
Tommy03 Variabile PHP dentro a JQuery PHP 3
A [PHP] Scopo di una variabile PHP 4
M [PHP] Salvare campo di una tabella in una variabile PHP 14
B [PHP] Valore variabile non riconosciuto PHP 1
AMONRA75 [PHP] passare una variabile in una finestra MODAL PHP 1
P [PHP] $_GET non preleva variabile nell’URL PHP 4
A Php variabile immagine inesistente PHP 4
Shyson [PHP] Personalizzare variabile PHP 0
Monital Funzione php e campo database come variabile PHP 6
N [Javascript] For-loop su thead: tempo di esecuzione variabile Javascript 1
R Come creare report dinamico/variabile in Access Presentati al Forum 1
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
E assegnare a una variabile il contenuto di un url (javascript) Javascript 0
V [PHP] Variabile modificata in un if non mantiene quel valore PHP 5
Elena Lazzarini [Magento] Prezzo variabile in base alla priorità di spedizione Magento 0
K [PHP] Paginazione Wordpress: passare variabile PHP 6
A [PHP] Passaare una variabile ad un PHP 2
A [PHP] Non prende variabile $provincia ma tutte le altre si PHP 6
P [PHP] Query con variabile PHP 2
napuleone scrivere in un file <?php $variabile PHP 1
A [PHP] Widget Meteo con località variabile PHP 0
paloppa [PHP] Dubbio print variabile PHP 27
paloppa [PHP] Dubbio valore variabile PHP 16
B Scrivere in una casella di testo una variabile PHP PHP 9
T [PHP] passare una variabile in una finestra MODAL di bootstrap PHP 3
R gestire il ritorno di una variabile con success Ajax 2
M [PHP] Mantenere variabile con datagrid nella pagina 2 PHP 1

Discussioni simili