Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Popolare input text con dati mssql

    Salve a tutti,
    ho un problema che, data la mia limitata conoscenza, non riesco a risolvere.
    ho una tabella mssql composta piu o meno cosi:

    nome,
    cognome1
    cognome2 (due cognomi perche in Costa Rica si usa il cognome del padre e della madre)
    documento,
    data nascita,
    ect,
    ect,

    Ho l'esigenza di popolare un form beneficiari, di 15 input per campo:

    nome cognome1 cognome2 documento data nascita etc etc
    nome cognome1 cognome2 documento data nascita etc etc
    nome cognome1 cognome2 documento data nascita etc etc
    nome cognome1 cognome2 documento data nascita etc etc

    solo que i record sono variabili, puo essere che per quella username ho solo 2 beneficiari.

    Per visualizzare i dati uso un while e poi uso <?php echo $row['nome']; ?> <?php echo $row['cognome1']; ?> e mi creo la mia tabella html con i dati di quella username.
    Pero come popolare gli input text di un forma avendo 15 linee e magari solo 2 beneficiari.

    Forse non mi sono spiegato benissimo
    Ho fatto varie prove usando un array e for,
    pero mi danno risultati strani. avendo due beneficiari assosiciati a quella username mi ripete gli input due volte e solo la seconda fila ha i dati giusti.
    Vi posto il mio orrore di codice...
    Per comodita ricavo solo il nome.

    <?
    $id=$_REQUEST['id'];

    include_once "db_config.php";

    $query = "select * FROM dbo.cm_beneficiario where m_username = '$id'";
    $result = mssql_query($query) or die;

    while ($row = mssql_fetch_array($result)) {

    $array_nome[] = ($row['b_nomb']);

    for ( $i = 0; $i < 15; $i++ ) {

    $b_nomb = trim(stripslashes($array_nome[$i]));


    ?>
    <table width='1250' border='0,5'><tr><td valign='top'><label for='pippo'>Nombre</label><input name='nombre_ben[]' type='text' onblur='javascript:this.value=this.value.substr(). toUpperCase()' value="<?php echo $b_nomb; ?>"/></td><td ><label for='pippo'>Apellido 1</label><input type='text' name='apellido1_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Apellido 2</label><input type='text' name='apellido2_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Parentesco</label><input type='text' name='parentes_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Fecha Nacimiento</label><input type='text' name='fecha_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()' /></td><td ><label for='pippo'>Cedula</label><input type='text' name='cedula_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Percentuaje %</label><input type='text' name='percent[]' size='5'/></td><td ><label for='pippo'>Telefono</label><input type='text' name='telefono_ben[]' /></td></tr></table>
    <? }} ?>

    Grazie in anticipo anche solo per leggere questo post...[PHP]

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova ad invertire il ciclo for prima del while, per quando ho capito prima dei generare gli input col for poi popolarli con il while
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ho provato pero non funziona.
    Forse meglio che riformulo il quesito:

    come riempire, tenendo come costante 15 input, solo gli imput che recupero da una query.

    Ho 15:
    <input name='nombre_ben[]' type='text' value="<?php echo $row['nome']; ?>"/>

    la query puo restituire da zero fino a 15 nomi in base alla variabile $id, vorrei popolare dalla prima input solo quelle realmente associate all'$id e lasciare la possibilita di riempire successivi nomi. questo e un form di modifica di un utente que ha dei beneficiari associati.
    Quando l'utente si registra deve riempire una lista di beneficiari, che possono cambiare successivamente. Non ho problema a recuperare i dati e riempire la tabella beneficiari, pero quando devo modificare i beneficiari, ho come obbligo mostrare 15 input sia che siano popolati che no.
    Pertanto ne con el while ne con el for riesco (colpa la mia ignoranza tecnica) a riempire solo gli input esistenti e lasciare disponibile gli altri per aggiungere nomi.
    Spero di essre stato chiaro (lo dubito)

  4. #4
    non so se ho capito bene ma non puoi far stampare il numero degli input direttamente dal ciclo del php quando ricavi i dati ? cosi' avrai tanti input quanti $id ...

  5. #5
    Magari
    Quello la facevo direttamente con il while o il for, pero per specifiche richieste,
    il form deve avere per forza 15 input e popolare solo quelli esistenti e poter aggiungere n nomi se voluto.
    Sto uscendo 'loco"

  6. #6
    se fai 15 textaree dove escono i dati riempiti nelle prime e niente in quelle vuote, con un tastino modifica cambi tutti quelli gia' esistenti e in + aggiungi quelli vuoti...se ho capito bene(ma non credo) il problema sta in questo:
    hai 15 input, alcuni sono pieni dai dati presi dal databse, altri sono vuoti. ma tutti si possono modificare ... se e' cosi' basta fare come ho detto qui sopra...

  7. #7
    Ciao,
    scusa ma non ti ho mica capito...
    Se posso popolare solo le textarea posso popolare anche gli input.
    Il problema che questi dati sono variabili in base all'utente.
    Puo essere che un utente ha due beneficiari(nomi) e uno fino a quindici.
    La domanda e':
    se ho fissi 15 input text o textarea nel html del php, come faccio per popolare solo quelli che esistono associati a quel utente e lasciare vuoti per esempio 13 per poi inserire altri nomi-beneficiari?
    Non so se sono chiaro

  8. #8
    ah ho capito, teoricamente potresti contare il numero dei risultati ottenuti dal databse $mysql_num_rows e fare un ciclo che stampa tutti gli input pieni e sottraendo i $mysql_num_rows a 15 continui a stampare gli input vuoti fino a quando quella variabile non arriva a 0...
    mi spiego meglio:
    codice:
    $x=15;
    $x=15 - $mysql_num_rows;
    
    while($mysql_num_rows){
    echo "<input ecc ecc>";
    }
    while($x>0){
    echo "<input vuoto >";
    $x--;
    }
    una cosa del genere(ovviamente il codice e' sintatticamente sbagliato ma era per farti avere un idea)...spero di essere stato chiaro

  9. #9
    Grazie per rispondermi, pero non riesco a capire come mettere giu il codice

  10. #10
    Ho provato con questo codice, e funziona, mi riempe i dati correttamente, pero il navigatore si blocca come que la query segua attiva e la pagina non carica le altre parti html.\:


    [PHP]
    <table width='1250' border='0,5'>
    <?



    $query = "select * FROM dbo.cm_beneficiario where m_username = '$id'";

    $result = mssql_query($query) or die;


    $mssql_num_rows = mssql_num_rows ( $result );


    $x=15;
    $x=15 - $mssql_num_rows;

    while (mssql_num_rows($result)) {

    while ($row = mssql_fetch_array($result)) {
    $nome = $row['b_nomb'];
    $cognome1 = $row['b_ape1'];
    $cognome2 = $row['b_ape2'];
    $parentesco = $row['b_parentes'];




    echo "<tr><td valign='top'><label for='pippo'>Nombre</label><input name='nombre_ben[]' type='text' onblur='javascript:this.value=this.value.substr(). toUpperCase()' value='". $nome ."'/></td><td ><label for='pippo'>Apellido 1</label><input type='text' name='apellido1_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()' value='". $cognome1 ."'/></td><td ><label for='pippo'>Apellido 2</label><input type='text' name='apellido2_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()' value='". $cognome2 ."'/></td><td ><label for='pippo'>Parentesco</label><input type='text' name='parentes_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()' value='". $parentesco ."'/></td><td ><label for='pippo'>Fecha Nacimiento</label><input type='text' name='fecha_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()' /></td><td ><label for='pippo'>Cedula</label><input type='text' name='cedula_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Percentuaje %</label><input type='text' name='percent[]' size='5'/></td><td ><label for='pippo'>Telefono</label><input type='text' name='telefono_ben[]' /></td></tr>";
    }

    while($x>0){
    echo "<tr><td valign='top'><label for='pippo'>Nombre</label><input name='nombre_ben[]' type='text' onblur='javascript:this.value=this.value.substr(). toUpperCase()' value=''/></td><td ><label for='pippo'>Apellido 1</label><input type='text' name='apellido1_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Apellido 2</label><input type='text' name='apellido2_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Parentesco</label><input type='text' name='parentes_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Fecha Nacimiento</label><input type='text' name='fecha_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()' /></td><td ><label for='pippo'>Cedula</label><input type='text' name='cedula_ben[]' onblur='javascript:this.value=this.value.substr(). toUpperCase()'/></td><td ><label for='pippo'>Percentuaje %</label><input type='text' name='percent[]' size='5'/></td><td ><label for='pippo'>Telefono</label><input type='text' name='telefono_ben[]' /></td></tr>";
    $x--;

    mssql_free_result($result);

    }}
    ?>
    </table>

    dove sbaglio?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.