Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    7

    Recuperare il numero maggiore ciclo for php

    Ciao a tutti,


    sono due giorni ormai che sbatto la testa ma non riesco a capire proprio come fare.


    ho una pagina php che riceve dei dati da un form dinamico in js (per dinamico intendo che sar� l'utente a decidere quanti campi inserire)


    la struttura che il jS genera comunque sar� simile alla seguente e ogni volta che si premer� il bottone aggiunger� di nuovo tutti i campi e aumenta di 1 l'id,


    codice:
    <input type="hidden" name="numero_campi" >
    <input type="text" name="campo1+(id)">
    <input type="num" name="campo2+(id)">
    <input type="num" name="numero3+(id)">
    ho messo il codice in modo molto sintetico se ce n'� di bisogno poster� il codice completo.


    il problema � questo l'utente inserir� nei campi dei valori tipo


    campo1+(id0) = valore , campo2+(id0) = 2, campo3+(id0) = 4;
    campo1+(id1) = valore , campo2+(id1) = 8, campo3+(id1) = 2;
    campo1+(id2) = valore , campo2+(id2) = 6, campo3+(id2) = 5;


    numero_campi inquesto caso sar� numero_campi = 3


    ora il php mi dovrebbe dire qual'� il campo2 con il valore pi� alto stessa cosa per il campo 3
    ho provato a fare con un ciclo for ma riscrive sempre tutti i campi.






    Codice PHP:
    $numero_campi $_POST['numero_campi']; // 
    for($c=1$c <= $numero_campi$c++)
    {
        
    $campo2 =  $_POST['campo2'.$c];
        
        for(
    $cp=0$cp <= $campo2$cp++)
        {
             echo 
    "il numero più alto è".$cp;
        }




    Qualcuno ha un idea di come fare?
    Ultima modifica di rs88; 10-03-2017 a 18:05

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Invece di crearti i campi in quel modo, fai:
    Codice PHP:
    <input type="hidden" name="numero_campi" >
    <
    input type="text" name="data[id][campo1]">
    <
    input type="num" name="data[id][campo2]">
    <
    input type="num" name="data[id][numero3]"
    così lato php basta che fai

    Codice PHP:
    foreach($_POST['data'] as $data){
      echo 
    $data['campo1'].' '.$data['campo2'].' '.$data['campo3'];


  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    7
    Grazie per la risposta

    il fatto è che i campi li genere il JS con questo script

    /* Campo dinamico ************************************************** */
    var arrInput = new Array(0);
    var arrInputValue = new Array(0);
    var arrInputValue1 = new Array(0);
    var arrInputValue2 = new Array(0);

    function addInput()
    {
    arrInput.push(arrInput.length);
    arrInputValue.push("");
    arrInputValue1.push("");
    arrInputValue2.push("");
    display();
    }

    function display()
    {
    document.getElementById('parah').innerHTML = "";
    for (intI = 0; intI < arrInput.length; intI++) {
    document.getElementById('campi').value = (intI+1);
    document.getElementById('parah').innerHTML += createInput(arrInput[intI], arrInputValue[intI], arrInputValue1[intI], arrInputValue2[intI]);
    }
    }

    function saveValue(intId, strValue){arrInputValue[intId] = strValue;}
    function saveValue1(intId, strValue){arrInputValue1[intId] = strValue;}
    function saveValue2(intId, strValue){arrInputValue2[intId] = strValue;}

    function createInput(id, value, value1, value2)
    {
    var ambiente = "<table width='100%' id='table' border='0'><tbody><tr>";
    /* campo1 */
    ambiente += '<td>';

    ambiente += "<input type='hidden' value='"+(id+1)+"' name='numero_campi'>";
    ambiente += "<input type='text' placeholder='campo1' id='test " + id + "' name='campo1" + (id+1) + "' onChange='saveValue(" + id + ",this.value)' value='" + value + "' >";
    ambiente += '</td>';


    /* campo2 */
    ambiente += '<td>';
    ambiente += "<input type='text' placeholder='campo2' id='test " + id + "' name='campo2" + (id+1) + "' onChange='saveValue1(" + id + ",this.value)' value='" + value1 + "'>";
    ambiente += '</td>';

    /* campo3 */
    ambiente += '<td>';
    ambiente += "<input type='text' placeholder='campo3' id='test " + id + "' name='campo3" + (id+1) + "' onChange='saveValue2(" + id + ",this.value)' value='" + value2 + "'>";
    ambiente += '</td>';

    ambiente += '<td>';
    ambiente += "<div class='bottone'><input type='button' onClick='javascript:deleteInput()' value='' class='button-elimina'></div>";
    ambiente += '</td>';

    ambiente += "</tr></tbody></table>";
    return ambiente;
    }

    function deleteInput()
    {
    if (arrInput.length > 0) {
    arrInput.pop();
    arrInputValue.pop();
    arrInputValue1.pop();
    arrInputValue2.pop();
    }
    display();
    }
    //************************************************** ******************
    Ultima modifica di rs88; 10-03-2017 a 18:36

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, non ho letto bene il problema del più grande. Comunque puoi fare una cosa del genere, se non ho capito male

    Codice PHP:
    $max_campo2 $max_campo3 =  reset($_POST['data']);
    foreach(
    $_POST['data'] as  $data){
        if(
    $data['campo2'] > $max_campo2['campo2']){
           
    $max_campo2 $data;
        }
        if(
    $data['campo3'] > $max_campo2['campo3']){
           
    $max_campo3 $data;
        }


  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma in che senso vuoi sapere il più grande campo2/campo3 ? vuoi il valore? o l'id?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    7
    il valore di id lo conosco perche me lo incrementa la funzione js, quello che voglio sapere è qual'è il più grande tra i valori inseriti nel campo2 e del campo 3

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000
    Ma data[id] id tu lo sai giusto ?

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    così:
    Codice PHP:
    $numero_campi $_POST['numero_campi']; // 
    $max_c2 =  $_POST['campo21'];
    $max_c3 =  $_POST['campo31'];
    for(
    $c=1$c <= $numero_campi$c++)
    {
        if( 
    $_POST['campo2'.$c] > $max_c2)
            
    $max_c2 $_POST['campo2'.$c] ;

        if( 
    $_POST['campo3'.$c] > $max_c3)
            
    $max_c3 $_POST['campo3'.$c] ;
     
    }

    echo 
    "valore massimo campo2 : $max_c2 <br>";
    echo 
    "valore massimo campo3 : $max_c3 <br>"

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    7
    Quote Originariamente inviata da boots Visualizza il messaggio
    così:
    Codice PHP:
    $numero_campi $_POST['numero_campi']; // 
    $max_c2 =  $_POST['campo21'];
    $max_c3 =  $_POST['campo31'];
    for(
    $c=1$c <= $numero_campi$c++)
    {
        if( 
    $_POST['campo2'.$c] > $max_c2)
            
    $max_c2 $_POST['campo2'.$c] ;

        if( 
    $_POST['campo3'.$c] > $max_c3)
            
    $max_c3 $_POST['campo3'.$c] ;
     
    }

    echo 
    "valore massimo campo2 : $max_c2 <br>";
    echo 
    "valore massimo campo3 : $max_c3 <br>"

    Wow funziona alla perfezione grazie mille

Tag per questa discussione

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