|
|
| Autore |
Messaggio |
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto: [php] ciclo per controllare nomi doppi
Inviato: 07.11.07 | 15:39 |
|
|
dovrei ricreare in php un ciclo per sapere se il nome dell'articolo in questione esiste o no, e se dovesse essere presente all'occorrenza aggiungere un numero alla fine del nome. tipo:
articolo_prova
se articolo_prova esiste = articolo_prova1
articolo_prova1
se articolo_prova1 esiste = articolo_prova2
e così fino a quando articolo_prova(x) nn lo trova più e restituisce l'ultimo articolo_prova(x) ricavato.
questo è quello ke sono riuscito a fare
| Codice: | <?php
// controlla nomi doppi
$d = '';
$query = 'SELECT title FROM '.$tb_draw.' WHERE title = '.$title;
do{
$d++;
$title = $title.$d;
}while(mysql_query($query, $conn));
echo $title;
?> |
|
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 07.11.07 | 17:35 |
|
|
Ciao mesk8,
non ho capito al 100% quello che vuoi/devi fare...
Data una variabile che può avere un valore tipo: "pippo", vuoi controllare nel tuo DB se esistono titoli con valore "pippo" e se ne esistono più di uno andarli a modificare nel DB aggiungendo un indice incrementale?
Mi sembra leggermente "contorto" come meccanismo, se provi a spiegare meglio la situazione magari si trova una soluzione migliore :)
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 07.11.07 | 17:49 |
|
|
ok poniamo la variabile "pippo".
quindi vado a controllare nel database se c'è un valore uguale a "pippo",
se non c'è tengo il nome "pippo" così com'è.
se c'è invece aggiungo al nome una variabile numerica,
quindi se il nome "pippo" c'è già nel database, il nuovo nome sarà "pippo1".
se c'è anche "pippo1", il nuovo nome sarà "pippo2".
e avanti così finché non troverò più nomi uguali... |
|
| Torna in cima |
|
|
AngaraT
intermedio


Registrato: 23/03/04 21:10
Messaggi: 152
|
Oggetto:
Inviato: 07.11.07 | 21:21 |
|
|
ciao, a me è venuto in mente questa soluzione, non so se possa fare al caso tuo;
| Codice: | <?php
function dbconnect() {
mysql_connect("localhost", "root", "");
@mysql_select_db("coach") or die ("Unable to select database");
}
dbconnect();
// controlla nomi doppi
$post = "pippo";
$num = "";
function ziobiscio($post,$num){
// SELEZIONO IL CAMPO
$query = mysql_query('SELECT title FROM mesk WHERE title = "'.$post.$num.'" ');
if(mysql_num_rows($query) == 1){ // SE ALMENO UN RECORD E' SELEZIONATO
$num = $num + 1; // INCREMENTO $num
ziobiscio($post,$num); // RIESEGUO ziobiscio
} else { // ALTRIMENTI INSERISCO IL NUOVO RECORD
$test = mysql_query("INSERT INTO mesk (title) VALUES ('".$post.$num."') ");
}
}
ziobiscio($post,$num);
?> |
|
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 08.11.07 | 08:57 |
|
|
grazie AngaraT della risposta, lo provo...
casomai cambio il controllo if con il do while, a colpo d'occhio con qst accorgimento dovrebbe fare quello ke intendo.
Posterò qui lo script finale sa mi riesce, ciao |
|
| Torna in cima |
|
|
AngaraT
intermedio


Registrato: 23/03/04 21:10
Messaggi: 152
|
Oggetto:
Inviato: 08.11.07 | 12:10 |
|
|
ciao mesk, in teoria ziobiscio in questo caso simula un ciclo nel senso che la funzione riesegue se stessa fino a che la condizione dell'if non viene più rispettata e quindi inserisce il nuovo recordo con il $num incrementato a dovere: se hai pippo, pippo1, ...., pippo5 la funzione inserisce pippo6.
non è l'unica soluzione possibile al tuo problema, forse neppure la migliore , ma è quella che mi è venuta in mente  |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
|
| Torna in cima |
|
|
AngaraT
intermedio


Registrato: 23/03/04 21:10
Messaggi: 152
|
Oggetto:
Inviato: 08.11.07 | 12:50 |
|
|
scusa mesk colpa mia...
| Codice: | <?php
....
function nomidoppi($post, $num, $tb){
$test = '';
// SELEZIONO IL CAMPO
$query = mysql_query('SELECT title FROM '.$tb.' WHERE title = "'.$post.$num.'" ');
if(mysql_num_rows($query) == 1){ // SE ALMENO UN RECORD E' SELEZIONATO
$num ++; // INCREMENTO $num
return nomidoppi($post, $num, $tb); // RIESEGUO nomidoppi E RESTITUISCO IL VALORE DI nomidoppi
} else { // ALTRIMENTI ASSEGNO IL VALORE
return $post.$num; // RESTITUISCO IL VALORE
}
}
...
echo nomidoppi($post, $num, 'mesk');
?> |
ciao ciao |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 08.11.07 | 13:42 |
|
|
grande tutto apposto
graz angaraT
ziobiscio( ) |
|
| Torna in cima |
|
|
|