Generare il nome del tag ID e NAME in modo sequenziale

ypsilon86

Utente Attivo
18 Dic 2012
48
0
0
Roma
Buongiorno!
Ho un problema con la generazione del nome in modo sequenziale del tag ID e NAME.
Mi spiego meglio; partendo da un campo testo di un form, vorrei che si generi in un altra pagina, in una tabella il numero di righe esatte al cui interno avrò il campo testo con assegnato il nome + il numero.

Se inserisco nel form il numero 3, avrò nell'altra pagina tre righe, con 3 campi testo e ogni riga avrà i campi testo con assegnato il proprio name e id.

Es.
inserisco n°3:

<input type='text' id='tag' name='tag' />
<input type='text' id='tag1' name='tag1' />
<input type='text' id='tag2' name='tag2' />

Inoltre vorrei che lo script dell'head sia in grado di capire che se nel form inserisco 3, deve assegnare anche lui 3 id e 3 name, altrimenti JQuery non funziona! Forse devo modificare anche quì sopra "#tag" e "#tagid" ??? Mettendo tipo "#tag+1" e "#tagid+1"

grazie anticipatamente

Posto il codice:

prima pagina
HTML:
<body>
</form>

<form action="prova.php" method="post">
inserisci numero: <input name="testo" type="text" id="testo" size="2"/>
<input name="" type="button" value="invia"/>

</form>
</body>

seconda pagina (pagina.php)
HTML:
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/i18n/jquery.ui.datepicker-it.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css" type="text/css" />
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/redmond/jquery-ui.css" type="text/css" />

<script type="text/javascript">
    $(document).ready(function() {
        $("#tag").autocomplete({
            source: "data.php",
            minLength: 2,
            focus: function( event, ui ) {
                $(this).val(ui.item.label);
                return false;
            },
            change: function(event, ui) {
                if (!ui.item) {     
                    $(this).val('');
                    $('#tagid').val('');
                    return false;
                }
            },
            select: function(event, ui) {
                $(this).val(ui.item.label);
                $('#tagid').val(ui.item.value);                
                return false;
            }
        });
	});
</script>

</head>

<body>

  <?php 
   for ($t = 0; $t < (int) $_POST['testo']; $t++) { 
    echo "<tr>"; 
    echo "<td>" . ($t+1) . "°</td>";
	echo "<td>
	<input type='text' id='tag' name='tag' /> 
              <input type='hidden' id='tagid' name='tagid' /></td>";
	echo "</tr>";
	}
  ?> 
</body>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male
PHP:
<?php 
   for ($t = 0; $t < (int) $_POST['testo']; $t++) { 
    $tag="tag".$t;//o se vuuoi partire da uno: $tag="tag".($t+1);
	echo "<tr>"; 
    echo "<td>" . ($t+1) . "°</td>";
	echo "<td>
	<input type='text' id='$tag' name='$tag' /> 
              <input type='hidden' id='tagid' name='tagid' /></td>";
	echo "</tr>";
	}
?>
poi un piccolo dubbio: con l'input type hidden si dovrebbe tramettere un valore nascosto (altrimenti a che serve), ti sei per caso dimenticato il value?
ed anche all'hidden dovresti cambiare nome perche se metti es. 3 hai sempre tre hidden che si chiamano nella stessa maniera
forse dovresti fare così
PHP:
<?php 
   for ($t = 0; $t < (int) $_POST['testo']; $t++) { 
    $tag="tag".$t;//o se vuoi partire da uno: $tag="tag".($t+1);
	$tagid=$tag="tagid".$t;//c.s.
	echo "<tr>"; 
    echo "<td>" . ($t+1) . "°</td>";
	echo "<td>
	<input type='text' id='$tag' name='$tag' /> 
              <input type='hidden' id='$tagid' name='$tagid' value='".($t+1)."'/></td>";
	echo "</tr>";
	}
?>
 

ypsilon86

Utente Attivo
18 Dic 2012
48
0
0
Roma
Ciao Borgo,

Secondo te devo cambiare anche lo script contenuto nell'head?? altrimenti mi funziona solo nel primo campo testo e non in quelli sotto

(il type hidden serve per l'Accordion jQuery che fa riferimento a una pagina "data.php" che non si vede

data.php ->

PHP:
<?php
//creo un array vuoto
$return_arr = array();

//dati di accesso
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'db_sito';

//connessione a mysql
$conn = mysql_connect($dbhost, $dbuser, $dbpass)
or die ('Impossibile connettersi a Mysql');
//selezione ddb
mysql_select_db($dbname);

//se connesso
if ($conn) {
    //se è presente il valore term
    if (isset($_GET) && isset($_GET['term']) && !empty($_GET['term'])) {
        $term = $_GET['term'];
        //eseguo la query
        $query = "SELECT * FROM clienti WHERE nome LIKE '%{$term}%' ";
        $query .= "ORDER BY nome ASC ";
        $fetch = mysql_query($query);
        //mi costruisco l'array
        while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
            $row_array['label'] = $row['nome'];
            $row_array['value'] = $row['id_cliente'];
            array_push($return_arr, $row_array);
        }
    }
}
//chiudo la connessione a mysql
mysql_close($conn);

//restituisco l'array in formato json
echo json_encode($return_arr);
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non sono molto esperto in js (quindi ajax, jquerry e similaria) però ad occhio e croce qui
$("#tag")...
operi sull'id chiamato tag ma dovresti (penso) operare su
$("#tag0")
$("#tag1")
$("#tag2")....
non so esattamente come tu possa fare, me nel poco di js che adopero, quendo serve, lo rendo dinamico facendolo stampare da php

a titolo di esempio (ma non so se funzia)

PHP:
<script type="text/javascript">
    $(document).ready(function() {
<?php        
for ($t = 0; $t < (int) $_POST['testo']; $t++) {
		$tag="#tag".$t;
echo <<<EOD
		$("$tag").autocomplete({
            source: "data.php",
            minLength: 2,
            focus: function( event, ui ) {
                $(this).val(ui.item.label);
                return false;
            },
EOD;
}
?>
//eccc........
</script>

come detto però questo è un mio ragionamento "a lume di naso", quindi spera che qualche esperto di jq ti sappia dire qualcosa di meglio
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Per non ripetere sempre la stessa parte di codice, potresti fare una funzione e metterla nell'evento onfocus quando stampi i campi text,e nella funzione gli passi l'id

Codice:
<script type="text/javascript">
function auto_complete(id){
    $(document).ready(function() {
        $(id).autocomplete({
            source: "data.php",
            minLength: 2,
            focus: function( event, ui ) {
                $(this).val(ui.item.label);
                return false;
            },
            change: function(event, ui) {
                if (!ui.item) {     
                    $(this).val('');
                    $('#tagid').val('');
                    return false;
                }
            },
            select: function(event, ui) {
                $(this).val(ui.item.label);
                $('#tagid').val(ui.item.value);                
                return false;
            }
        });
	});
}
</script>

PHP:
   for ($t = 0; $t < (int) $_POST['testo']; $t++) {  
    $tag="tag".$t;//o se vuuoi partire da uno: $tag="tag".($t+1); 
    echo "<tr>";  
    echo "<td>" . ($t+1) . "°</td>"; 
    echo "<td> 
    <input type='text' id='$tag' name='$tag' onfocus='auto_complete($tag)' />  
              <input type='hidden' id='tagid' name='tagid' /></td>"; 
    echo "</tr>"; 
    }

ps: non ho testato quindi non sono certo che possa andar bene
 

ypsilon86

Utente Attivo
18 Dic 2012
48
0
0
Roma
Grazie Nefyt, ho seguito il tuo consiglio e con l'onfocus sembra funzionare tutto! Finisco di aggiustare le ultime cose e lo riprovo ma credo sia corretto! Grazie Ancora :fonzie:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
piccola osservazione da gnurant
non dovrebbe essere

PHP:
 echo "<td> 
    <input type='text' id='$tag' name='$tag' onfocus='auto_complete('#'.$tag)' />  
              <input type='hidden' id='tagid' name='tagid' /></td>"; 
    echo "</tr>"; 
    }
cioè aggiungere il simbolo dell'id?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
ciao
piccola osservazione da gnurant
non dovrebbe essere

PHP:
 echo "<td> 
    <input type='text' id='$tag' name='$tag' onfocus='auto_complete('#'.$tag)' />  
              <input type='hidden' id='tagid' name='tagid' /></td>"; 
    echo "</tr>"; 
    }
cioè aggiungere il simbolo dell'id?
Si infatti, me lo ero dimenticato, ma invece di ristamparlo ogni volta basta metterlo qui

Codice:
$('#'+id).autocomplete({

all'inizio dell'autocomplete
 

ypsilon86

Utente Attivo
18 Dic 2012
48
0
0
Roma
Ragazzi volevo dire che l'Autocomplete mi funziona col codice postato inizialmente postato da Nefyt, vale a dire:

HTML:
<script type="text/javascript">
function auto_complete(id){
    $(document).ready(function() {
        $(id).autocomplete({
            source: "data.php",
            minLength: 2,
            focus: function( event, ui ) {
                $(this).val(ui.item.label);
                return false;
            },
            change: function(event, ui) {
                if (!ui.item) {     
                    $(this).val('');
                    $('#tagid').val('');
                    return false;
                }
            },
            select: function(event, ui) {
                $(this).val(ui.item.label);
                $('#tagid').val(ui.item.value);                
                return false;
            }
        });
	});
}
</script>

PHP:
<?php
  for ($t = 0; $t < (int) $_POST['testo']; $t++) {
  $tag="tag".$t;
    echo "<tr>"; 
    echo "<td>" . ($t+1) . "°</td>";  
    echo "<td>
    <input type='text' id='$tag' name='$tag' onfocus='auto_complete($tag)'/>
    <input type='hidden' id='tagid' name='tagid' /></td>";
    echo "<td><input type='text' name='t" . $t . "'/></td>"; 
    echo "</tr>"; 
}
?>
    <?php
  for ($c = 0; $c < (int) $_POST['testo1']; $c++) { 
    $tag="tag".$c;
    echo "<tr>"; 
    echo "<td>" . ($c+1) . "°</td>"; 
    echo "<td><input type='text' id='$tag' name='$tag' onfocus='auto_complete($tag)'/>
    <input type='hidden' id='tagid' name='tagid' /></td>";
    echo "<td><input type='text' name='c" . $c . "'/></td>"; 
    echo "</tr>"; 
}
?>

Se vado a modificare lo script inserendo "#" davanti l'id non funge più!
HTML:
$('#'+id).autocomplete({

Ho lasciato invariato anche -> onfocus='auto_complete($tag)' non ho inserito -> ('#'.$tag)'
 

ypsilon86

Utente Attivo
18 Dic 2012
48
0
0
Roma
Se volessi inserire un menù a tendina con dei giudizi al posto del campo testo che sta nella seconda colonna di ogni riga?

PHP:
echo "<tr>";  
    echo "<td>" . ($t+1) . "°</td>";   
    echo "<td> 
    <input type='text' id='$tag' name='$tag' onfocus='auto_complete($tag)'/> 
    <input type='hidden' id='tagid' name='tagid' /></td>"; 
    echo "<td><input type='text' name='t" . $t . "'/></td>";  
    echo "</tr>";


Ho provato a fare così:

PHP:
echo "<td><select name='valutazione'><option>eccellente</option></td>";

come aggiungo altri giudizi oltre "eccellente"?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Se volessi inserire un menù a tendina con dei giudizi al posto del campo testo che sta nella seconda colonna di ogni riga?

PHP:
echo "<tr>";  
    echo "<td>" . ($t+1) . "°</td>";   
    echo "<td> 
    <input type='text' id='$tag' name='$tag' onfocus='auto_complete($tag)'/> 
    <input type='hidden' id='tagid' name='tagid' /></td>"; 
    echo "<td><input type='text' name='t" . $t . "'/></td>";  
    echo "</tr>";


Ho provato a fare così:

PHP:
echo "<td><select name='valutazione'><option>eccellente</option></td>";

come aggiungo altri giudizi oltre "eccellente"?

Dovresti aggiungere altre option
Codice:
<select name='valutazione'>
<option>eccellente</option>
<option>buono</option>
<option>normale</option>
<option>pessimo</option>
</select>

Se più avanti dovrai leggere i valori inviati di questo select, setta il value nelle option
Codice:
<option value='eccellente'>eccellente</option>
 

ypsilon86

Utente Attivo
18 Dic 2012
48
0
0
Roma
Nefyt si può far in modo che una volta scelto il giudizio dal menù a tendina, venga stampato di un colore che scelgo io? Dovrò mettere codice php nella pagina dove stampo? Se si mi potresti suggerire come fare?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Nefyt si può far in modo che una volta scelto il giudizio dal menù a tendina, venga stampato di un colore che scelgo io? Dovrò mettere codice php nella pagina dove stampo? Se si mi potresti suggerire come fare?
Lo puoi fare da css tramite il tag color del testo nello style dell'elemento o creando una classe per esso nel css



Se intendi gestire il risultato, fai una cosa simile creando un div o una classe con stile del testo diverso a seconda del risultato

es.
PHP:
switch($voto){
   case 'voto1':
      $colore='red';
       break;
    case 'voto2':
       $colore='green';
        break;

//e cosi via magari aggiungendo anche un colore di default nello switch
}

echo "<div style='color:$colore;'>$voto</div>";
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
G PHP e Microsoft Teams: generare link videocall PHP 15
Tommy03 Generare file PHP dopo registrazione PHP 2
A [PHP] Generare nomi dei file con lettere minuscole e vocali senza accenti PHP 2
webmachine [PRESTASHOP] Come generare secure_key CMS (Content Management System) 1
V (Vendo) Metodo generare Like facebook Annunci servizi di Social Media Marketing 4
Joker37 Generare file txt con php estraendo codice html. PHP 4
cris8380 Generare immagine barcode PHP 1
cris8380 [PHP] Generare file pdf con inserimento dati PHP 34
V Generare array da ciclo while e prendere valori casuali PHP 4
T campo data+ora: estrarre l'ora senza generare una stringa MS Access 2
Devil-94 Generare una lista di link Javascript 1
neo996sps [PHP e funzioni con PDO] Funzione per generare corpo tabella PHP 1
D generare "tessera iscrizione" PHP 5
P Generare hash sha1 Classic ASP 2
S Generare pagina dopo il caricamento di un dato PHP 6
C Generare una tabella e trasformarla in una immagine PHP 2
M Aiuto per una libreria per generare grafici PHP 1
A Ciclo per generare etichette PHP 0
G Generare XML in base ai valori get XML 0
A [RISOLTO]Come generare query dinamica PHP-MYSQL PHP 2
M Classe in php 4 per generare file in Excel PHP 4
Emix Generare PDF da righe HTML - FPDF PHP 10
K creare uno script in php , per generare in modo automatico query PHP 2
D Generare numeri interi casuali compresi in [1;k] Java 0
L Generare pagine PHP 8
Z generare pagina da template con php PHP 2
A Generare un punto "nelle vicinanze " di un altro. PHP 0
L generare classifiche top 10 PHP 1
U Generare bolle di trasporto con php PHP 3
E Generare automaticamente links... PHP 5
P Generare pagine successive dopo una ricerca Classic ASP 5
C generare thumbnail PHP 4
$ Generare script per funzione tempo Javascript 0
metalgemini generare codice numerico Classic ASP 4
D Programma per generare i calendari Windows e Software 2
I nome utente non esiste nel database PHP 1
I invia inserisci nome utente invia messaggio PHP 0
I caricamento file in sottocartella nome utente PHP 3
N Dall'id al nome PHP 0
R Cambiare il nome dell'immagine dopo caricamento ftp HTML e CSS 0
R Nome input testo+variabile PHP 1
W Nome di dominio efficace: 3 parole chiave o nomecognome? SEO e Posizionamento 0
A nome file che contiene punto passato come parametro a query PHP 31
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
WebmasterFioriniAndrea [MySQL] sql attributi con nome uguale MySQL 0
S [Photoshop] Nome di questo effetto (vedi foto) Photoshop 1
S [PHP] Recupero nome immagine da Form con input file PHP 3
Michelebozzo [PHP] Rimuovere pubblicazione nome pagina ... aiuto! PHP 7
K [ASP] Visualizzare nome del file selezionato Classic ASP 3
S [PHP] Stampa a video Nome e Cognome in seguito a login PHP 1

Discussioni simili