Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Array e MySQL

  1. #1

    Array e MySQL

    Allora ho il seguente problema: in un database ho una tabella che contiene le recensioni i alcuni dischi. Tra i vari campi sono di mio interesse il campo che riguarda il numero delle tracce contenute nel CD e la tracklist del CD (Titolo e voto). Questi campi sono rispettivamente : tracce, tbt.
    Tracce è di tipo INT, mentre "tbt" è di tipo TEXT e contiene titolo e voto nel seguente formato :

    $tbt = "titolo1|voto1|titolo2|voto2|..."

    tante volte quante sono le tracce contenute in $tracce.
    Se io voglio modificare titolo o voto di una traccia di un CD presente in faccio un form tipo :

    if ($action == "")
    {
    $querymembro = mysql_query("SELECT * from recensioni WHERE id='$id_membro'");
    [...]
    $tracce = mysql_Result($querymembro,0,"tracce");
    $tbt = mysql_Result($querymembro,0,"tbt");

    $myArr = explode("|",$tbt);

    for ( $i=0 ; $i < (count($myArr)-1) ; $i=$i+2) {
    $traccia[$i] = $myArr[$i];
    $voto[$i] = $myArr[$i+1];
    }
    }

    //Se è stato premuto il bottone "Modifica"
    if ($action == "check")
    {

    for ($i=0; $i <= ($traccem) ; $i++) {
    $tbt .= $traccia[$i]."|".$voto[$i]."|" ;
    }

    $query = mysql_query("UPDATE recensioni SET tracce='$tracce', tbt='$tbt' WHERE id='$id_membro'") or die("Errore ".mysql_errno()." : ".mysql_error());

    Il problema è che l'update mi taglia le ultime due tracce, ossia: se nel DB $tracce = 5 e quindi $tbt="titolo1|voto1|2|2|3|3|4|4|titolo5|voto5", una fatto l'update mi ritrovo con $tracce= 5 e $tbt="titolo1|voto1|2|2|3|3".
    Credo che il problema sia nel ciclo for
    for ($i=0; $i <= ($traccem) ; $i++) {
    $tbt .= $traccia[$i]."|".$voto[$i]."|" ; }


    Sperando di essere stato abbastanza chiaro nella spiegazione attendo un vostro aiuto. Sono quasi disperato.

    A presto


    Riccardone

  2. #2
    Il problema e' che nel primo for conti per due...
    codice:
    for ( $i=0 ; $i < (count($myArr)-1) ; $i=$i+2) {
    $traccia[$i] = $myArr[$i]; 
    $voto[$i] = $myArr[$i+1]; 
    }
    quindi si presume che $traccia e $voto abbiano l'indice di due in due... tipo:
    codice:
        [0] => titolo1
        [2] => titolo2
        [4] => titolo3
        [6] => titolo4
        [8] => titolo5
    Quindi nel for successivo dovresti verificare di fare l'indice di due in due...
    codice:
    $y=0;
    for ($i=0; $i < ($tracce) ; $i=$i+1) {
    $tbt .= $traccia[$y] ."|". $voto[$y] ."|";
    $y=$y+2;
    }
    Con $tbt .= i dati vengono aggiunti ai precedenti estratti, ma forse e' quello che vuoi. O forse no. Non posso saperlo.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3

    Re: Array e MySQL

    Originariamente inviato da Riccardoone
    Riccardoone
    A presto
    Riccardone
    sigh...
    Saluti a tutti
    Riccardo

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.