• User Newbie

    Inserire con una select due valori in un unica opzione

    Ciao a tutti, sono alle prime armi con php portate pazienza se vedete castronerie nel codice che posto.

    Ho trovato su questo forum un codice, che ho adattato alle mie necessità, che mi permette di inserire in mysql con una select due valori in un unica opzione.

    Questo è il mio form:

    [HTML]<form action="updateresult.php" method="post" name="edit" >
    <div class="row">
    <div class="golcontent">
    <div class="pull-left">
    <select name="eplayer_id" class="tripObject" >
    <option value="%">Seleziona</option>
    <?php
    $lastteam = "";
    do {
    ?>
    <?php if ($lastteam != $row_datagoal['tteam'])
    echo '<optgroup label="'.$row_datagoal['name'].'">';
    echo '<option value="'.$row_datagoal['id'].','.$row_datagoal['tteam'].'">'.$row_datagoal['playerName'].'</option>';
    if ($lastteam != $row_datagoal['tteam'])
    echo '</optgroup>';
    $lastteam = $row_datagoal['tteam'];?>
    <?php
    } while ($row_datagoal = mysql_fetch_assoc($datagoal));
    $rows = mysql_num_rows($datagoal);
    if($rows > 0) {
    mysql_data_seek($datagoal, 0);
    $row_datagoal = mysql_fetch_assoc($datagoal);
    }?>
    </select>
    <input class="inputfieldres" name="ecount" type="text" value="" size="2" maxlength="2"/>
    <input type="hidden" name="ematch_id" value="<?php echo $row_dataresults['id']; ?>"/>
    </div>
    </div>
    </div>
    <a href="#" id="Add">AGGIUNGI</a>
    <input class="btnresults" type="submit" value="Salva" />
    <input type="hidden" name="MM_insert" value="form1" />
    </form>[/HTML]

    E questa è la query che utilizzo per l'inserimento:

    [PHP]if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")){
    $newteam = explode (",", $_POST['eplayer_id']);
    $insertSQL = sprintf("INSERT INTO f_matchevents (eplayer_id, eteam_id, ematch_id, ecount) VALUES (%s, %s, %s, %s)",
    GetSQLValueString(trim($newteam[0]), "int"),
    GetSQLValueString(trim($newteam[1]), "int"),
    GetSQLValueString($_POST['ematch_id'], "int"),
    GetSQLValueString($_POST['ecount'], "int"));
    mysql_select_db($database_config, $config);
    $Result1 = mysql_query($insertSQL, $config) or die(mysql_error());}[/PHP]

    In questo modo tutto funziona bene, ma il mio problema è che gli elementi del mio form (select compresa) vengono ripetuti tramite uno script js che utilizzo per clonare gli elementi html.

    In pratica il mio utente, prima dell'invio del form, può aggiungere più select.

    E a questo punto mi sono bloccato perchè proprio non riesco a capire come creare correttamente un ciclo corretto per la query.

    Ho provato in questo modo, aggiungendo nel form le "[]" al nome degli elementi html:

    [PHP]if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")){
    for($j=0;$j<count($_POST['eplayer_id'][0]);$j++){
    $insertSQL = sprintf("INSERT INTO f_matchevents (eplayer_id, eteam_id, ematch_id, ecount) VALUES (%s, %s, %s, %s)",
    GetSQLValueString($_POST['eplayer_id'][0][$j], "int"),
    GetSQLValueString($_POST['eplayer_id'][1][$j], "int"),
    GetSQLValueString($_POST['ematch_id'][$j], "int"),
    GetSQLValueString($_POST['ecount'][$j], "int"));
    mysql_select_db($database_config, $config);
    $Result1 = mysql_query($insertSQL, $config) or die(mysql_error());}}[/PHP]

    Ma l'inserimento dei valori del post 'eplayer_id non è corretto.

    Non so proprio come venirne a capo, qualunque vostro aiuto sarebbe da me molto apprezzato.

    Grazie in anticipo.


  • User Newbie

    @Retr0bot said:

    Ciao a tutti, sono alle prime armi con php portate pazienza se vedete castronerie nel codice che posto.

    Ho trovato su questo forum un codice, che ho adattato alle mie necessità, che mi permette di inserire in mysql con una select due valori in un unica opzione.

    Questo è il mio form:

    [HTML]<form action="updateresult.php" method="post" name="edit" >
    <div class="row">
    <div class="golcontent">
    <div class="pull-left">
    <select name="eplayer_id" class="tripObject" >
    <option value="%">Seleziona</option>
    <?php
    $lastteam = "";
    do {
    ?>
    <?php if ($lastteam != $row_datagoal['tteam'])
    echo '<optgroup label="'.$row_datagoal['name'].'">';
    echo '<option value="'.$row_datagoal['id'].','.$row_datagoal['tteam'].'">'.$row_datagoal['playerName'].'</option>';
    if ($lastteam != $row_datagoal['tteam'])
    echo '</optgroup>';
    $lastteam = $row_datagoal['tteam'];?>
    <?php
    } while ($row_datagoal = mysql_fetch_assoc($datagoal));
    $rows = mysql_num_rows($datagoal);
    if($rows > 0) {
    mysql_data_seek($datagoal, 0);
    $row_datagoal = mysql_fetch_assoc($datagoal);
    }?>
    </select>
    <input class="inputfieldres" name="ecount" type="text" value="" size="2" maxlength="2"/>
    <input type="hidden" name="ematch_id" value="<?php echo $row_dataresults['id']; ?>"/>
    </div>
    </div>
    </div>
    <a href="#" id="Add">AGGIUNGI</a>
    <input class="btnresults" type="submit" value="Salva" />
    <input type="hidden" name="MM_insert" value="form1" />
    </form>[/HTML]

    E questa è la query che utilizzo per l'inserimento:

    [PHP]if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")){
    $newteam = explode (",", $_POST['eplayer_id']);
    $insertSQL = sprintf("INSERT INTO f_matchevents (eplayer_id, eteam_id, ematch_id, ecount) VALUES (%s, %s, %s, %s)",
    GetSQLValueString(trim($newteam[0]), "int"),
    GetSQLValueString(trim($newteam[1]), "int"),
    GetSQLValueString($_POST['ematch_id'], "int"),
    GetSQLValueString($_POST['ecount'], "int"));
    mysql_select_db($database_config, $config);
    $Result1 = mysql_query($insertSQL, $config) or die(mysql_error());}[/PHP]

    In questo modo tutto funziona bene, ma il mio problema è che gli elementi del mio form (select compresa) vengono ripetuti tramite uno script js che utilizzo per clonare gli elementi html.

    In pratica il mio utente, prima dell'invio del form, può aggiungere più select.

    E a questo punto mi sono bloccato perchè proprio non riesco a capire come creare correttamente un ciclo corretto per la query.

    Ho provato in questo modo, aggiungendo nel form le "[]" al nome degli elementi html:

    [PHP]if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")){
    for($j=0;$j<count($_POST['eplayer_id'][0]);$j++){
    $insertSQL = sprintf("INSERT INTO f_matchevents (eplayer_id, eteam_id, ematch_id, ecount) VALUES (%s, %s, %s, %s)",
    GetSQLValueString($_POST['eplayer_id'][0][$j], "int"),
    GetSQLValueString($_POST['eplayer_id'][1][$j], "int"),
    GetSQLValueString($_POST['ematch_id'][$j], "int"),
    GetSQLValueString($_POST['ecount'][$j], "int"));
    mysql_select_db($database_config, $config);
    $Result1 = mysql_query($insertSQL, $config) or die(mysql_error());}}[/PHP]

    Ma l'inserimento dei valori del post 'eplayer_id non è corretto.

    Non so proprio come venirne a capo, qualunque vostro aiuto sarebbe da me molto apato.

    Grazie in anticipo.

    Esiste l attributo multiple nel select del html che ti da la possibilità di selezionare più valori tenendo premuto il tasto ctrl da tastiera. Ti passerà una variabile con due valori separati da una virgola. Tali valori inseriscili in una variabile e slittali grazie alla virgola così da separare i valori che ti passi


  • User Newbie

    @Retr0bot said:

    Ciao a tutti, sono alle prime armi con php portate pazienza se vedete castronerie nel codice che posto.

    Ho trovato su questo forum un codice, che ho adattato alle mie necessità, che mi permette di inserire in mysql con una select due valori in un unica opzione.

    Questo è il mio form:

    [HTML]<form action="updateresult.php" method="post" name="edit" >
    <div class="row">
    <div class="golcontent">
    <div class="pull-left">
    <select name="eplayer_id" class="tripObject" >
    <option value="%">Seleziona</option>
    <?php
    $lastteam = "";
    do {
    ?>
    <?php if ($lastteam != $row_datagoal['tteam'])
    echo '<optgroup label="'.$row_datagoal['name'].'">';
    echo '<option value="'.$row_datagoal['id'].','.$row_datagoal['tteam'].'">'.$row_datagoal['playerName'].'</option>';
    if ($lastteam != $row_datagoal['tteam'])
    echo '</optgroup>';
    $lastteam = $row_datagoal['tteam'];?>
    <?php
    } while ($row_datagoal = mysql_fetch_assoc($datagoal));
    $rows = mysql_num_rows($datagoal);
    if($rows > 0) {
    mysql_data_seek($datagoal, 0);
    $row_datagoal = mysql_fetch_assoc($datagoal);
    }?>
    </select>
    <input class="inputfieldres" name="ecount" type="text" value="" size="2" maxlength="2"/>
    <input type="hidden" name="ematch_id" value="<?php echo $row_dataresults['id']; ?>"/>
    </div>
    </div>
    </div>
    <a href="#" id="Add">AGGIUNGI</a>
    <input class="btnresults" type="submit" value="Salva" />
    <input type="hidden" name="MM_insert" value="form1" />
    </form>[/HTML]

    E questa è la query che utilizzo per l'inserimento:

    [PHP]if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")){
    $newteam = explode (",", $_POST['eplayer_id']);
    $insertSQL = sprintf("INSERT INTO f_matchevents (eplayer_id, eteam_id, ematch_id, ecount) VALUES (%s, %s, %s, %s)",
    GetSQLValueString(trim($newteam[0]), "int"),
    GetSQLValueString(trim($newteam[1]), "int"),
    GetSQLValueString($_POST['ematch_id'], "int"),
    GetSQLValueString($_POST['ecount'], "int"));
    mysql_select_db($database_config, $config);
    $Result1 = mysql_query($insertSQL, $config) or die(mysql_error());}[/PHP]

    In questo modo tutto funziona bene, ma il mio problema è che gli elementi del mio form (select compresa) vengono ripetuti tramite uno script js che utilizzo per clonare gli elementi html.

    In pratica il mio utente, prima dell'invio del form, può aggiungere più select.

    E a questo punto mi sono bloccato perchè proprio non riesco a capire come creare correttamente un ciclo corretto per la query.

    Ho provato in questo modo, aggiungendo nel form le "[]" al nome degli elementi html:

    [PHP]if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")){
    for($j=0;$j<count($_POST['eplayer_id'][0]);$j++){
    $insertSQL = sprintf("INSERT INTO f_matchevents (eplayer_id, eteam_id, ematch_id, ecount) VALUES (%s, %s, %s, %s)",
    GetSQLValueString($_POST['eplayer_id'][0][$j], "int"),
    GetSQLValueString($_POST['eplayer_id'][1][$j], "int"),
    GetSQLValueString($_POST['ematch_id'][$j], "int"),
    GetSQLValueString($_POST['ecount'][$j], "int"));
    mysql_select_db($database_config, $config);
    $Result1 = mysql_query($insertSQL, $config) or die(mysql_error());}}[/PHP]

    Ma l'inserimento dei valori del post 'eplayer_id non è corretto.

    Non so proprio come venirne a capo, qualunque vostro aiuto sarebbe da me molto apato.

    Grazie in anticipo.

    Esiste l attributo multiple nel select del html che ti da la possibilità di selezionare più valori tenendo premuto il tasto ctrl da tastiera. Ti passerà una variabile con due valori separati da una virgola. Tali valori inseriscili in una variabile e splittali grazie alla virgola così da separare i valori che ti passi


  • User Newbie

    @dellis said:

    Esiste l attributo multiple nel select del html che ti da la possibilità di selezionare più valori tenendo premuto il tasto ctrl da tastiera. Ti passerà una variabile con due valori separati da una virgola. Tali valori inseriscili in una variabile e splittali grazie alla virgola così da separare i valori che ti passi

    Ok, ma in realtà io i valori contenuti nella select separati li ho già:

    Se faccio cosi:

    [HTML]<select name="eplayer_id[]" class="tripObject" >
    <option value="%">Seleziona</option>
    <?php $lastteam = ""; do { ?>
    <?php if ($lastteam != $row_datagoal['tteam'])
    echo '<optgroup label="'.$row_datagoal['name'].'">';
    echo '<option value="'.$row_datagoal['id'].','.$row_datagoal['tteam'].'">'.$row_datagoal['playerName'].'</option>';
    if ($lastteam != $row_datagoal['tteam'])
    echo '</optgroup>';
    $lastteam = $row_datagoal['tteam'];?>
    <?php } while ($row_datagoal = mysql_fetch_assoc($datagoal));
    $rows = mysql_num_rows($datagoal); if($rows > 0) { mysql_data_seek($datagoal, 0);
    $row_datagoal = mysql_fetch_assoc($datagoal); }?>
    </select>[/HTML]
    Mi ritrovo i due valori separati da utilizzare all'interno della query:

    [PHP]$_POST['eplayer_id'][0]
    $_POST['eplayer_id'][1] [/PHP]

    Il problema è poi nell'inserimento nel database.

    Se utilizzo l'ultima query che ho postato con il ciclo for e invio solo una select mi restituisce questo errore:

    [HTML]Notice: Undefined offset: 1[/HTML]

    Se invece invio più select la query va a buon fine ma i due valori inseriti relativi al $_POST['eplayer_id'] sono sbagliati.