Visualizzazione dei risultati da 1 a 7 su 7

Discussione: array e mysql

  1. #1

    array e mysql

    Salve a tutti...
    ho un problema con la gestione di un form con array, e il suo passaggio al db.

    IL form, creato a partire dal risultato di una query sul db, è questo:

    Codice PHP:
    echo "<div>
              <form name=\"partita\" method=\"post\" action=\"match_save.php\">
                <fieldset>
                  <label>Partita giocata il</label>
                  <input type=\"text\" name=\"data\">
                </fieldset>"
    ;
        while (
    $row mysql_fetch_array($result))
        {
            echo 
    "<fieldset>
                <legend>
    $row[nome] $row[cognome]</legend>
                        <input type=\"hidden\" name=\"id[]\" value=\"
    $row[id]\">
                <label>Ruolo:</label>
                <select name=\"ruolo[]\">
                  <option value=\"7\">---</option>
                  <option value=\"1\">Portiere</option>
                  <option value=\"2\">Difensore</option>
                  <option value=\"3\">Terzino</option>
                  <option value=\"4\">Ala</option>
                  <option value=\"5\">Centrocampista</option>
                  <option value=\"6\">Attaccante</option>
                </select>
                <label>Stelle:</label>
                <input type=\"text\" name=\"stelle[]\">
                <label>Commento:</label>
                <textarea name=\"commento[]\" rows=\"5\" cols=\"30\"></textarea>
                    </fieldset>"
    ;
        }
        echo 
    "    <fieldset>
                  <input type=\"submit\" value=\"Invia\">
                  <input type=\"reset\" value=\"Reset\">
                </fieldset>
              </form>
            </div>"

    Questo passa i dati alla pagina successiva che deve memorizzarli in una tabella del database, in cui tutti gli elementi degli array creati aventi lo stesso indice devono appartenere alla stessa riga.

    La pagina che fa questo finora è così:

    Codice PHP:
    $data $_POST['data'];
    foreach (
    $_POST['id'] as $i=>$id)
      {
      }
    foreach (
    $_POST['ruolo'] as $i=>$ruolo)
      {
      }
    foreach (
    $_POST['stelle'] as $i=>$stelle)
      {
      }
    foreach (
    $_POST['commento'] as $i=>$commento)
      {
      } 
    E qua mi blocco...
    Ho recuperato tutto quello che voglio, tutti gli array sono lunghi uguali e sono $id[], $ruolo[], $stelle[], $commento[] ma... come faccio a elaborare tutti gli elementi aventi lo stesso indice, non sapendo io quanto vale il massimo di questo indice???
    L'obiettivo è fare in modo che se $ruolo[i]=7 tutti gli elementi con l'indice i vengano ignorati e non inseriti nel db, se $ruolo[i]>7 invece vanno inseriti, in teoria un semplice
    Codice PHP:
    if ($ruolo[i]<>7)
    {
    QUERY DI INSERIMENTO

    Inoltre questo porta a ripetere i-volte la query, dove i può essere grande a piacere... esiste un qualche altro metodo più leggero?

    CHi può aiutarmi? Chi può riempire le mie lacunose conoscenze???

  2. #2
    Aiuto!!!!

    Ulteriori prove mi hanno portato a.. non risolvere il problema!

    Dal form ricevo la variabile 'data', e quattro array con X elementi. (dove X non lo posso conoscere a priori)

    E devo ciclare così:
    for X=1 to end
    operazioni su array1[X], array2[X], array3[X], array4[X]
    next X

    Non riesco a venirne fuori in nessun modo, un qualche aiuto e/o rimando a esempi simili??

  3. #3
    Mi sembra che tu ti sia gia' risposto da solo
    Forse ti manca solo la funzione count?

    Codice PHP:
    for ($x 0$x count($id); $x++) {
    /*    operazioni sui vari array usando l'indice $x   */


  4. #4
    Ecco che è stata colmata una delle molteplici lacune!!!

    Appena torno a casa leggo per bene il funzionamento di questa funzione e faccio le dovute prove, ma inizio subito con un GRAZIE!!!!

  5. #5
    Ancora grazie per avermi risolto quel primo problema, eccomi con un altro, che però mi sembra alquanto inspiegabile!!!
    Codice PHP:
    for ($i 0$i count($id); $i++) 
      {
        
    $a=$id[$i];
      
    $b=$ruolo[$i];
      
    $c=$stelle[$i];
      
    $d=$commento[$i];
      
      
    $query "INSERT INTO match (idplayer, data, ruolo, stelle, commento) VALUES ('$a', '$data', '$b', '$c', '$d')";
        if (
    mysql_query($query$db))
        {
            echo 
    "Il giocatore ",$id[$i]," è stato inserito correttamente
    "
    ;
        }    
        else    
        {
            echo 
    "Il giocatore ",$id[$i]," NON è stato inserito correttamente
    "
    ;
        }
    echo 
    mysql_errno(),":",mysql_error(),"
    "

    Non mi inserisce il giocatore, e il messaggio di errore è il seguente:
    Il giocatore 17 NON è stato inserito correttamente
    1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'match (idplayer, data, ruolo, stelle, commento) VALUES ('17', '1999-11-30', '7',' at line 1
    La tabella è organizzata nel seguente modo:
    • id - mediumint(8)
      idplayer - mediumint(8)
      data - date
      ruolo - enum(a,b,c,d,...)
      stelle - decimal(3,1)
      commento - text


    e non riesco a capire quale sia il problema di sintassi!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Io solitamente faccio così, mi faccio un echo della sql e vedo cosa stampa, poi copio e incollo su mysql admin e quello che utilizzi per gestire il db e provo la sql li e vado a tentativi, potrebbe essere un dato, oppure qualche apice, in ogni caso facendo come ti ho detto risolvo anche perchè vado a esclusione.

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    match è una parola riservata per mysql. Mettila fra backtick (alt+96) `match`

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