problema visualizzazione dati da tabella

arapecoston

Utente Attivo
8 Giu 2013
60
0
0
come da titolo ho un problema con la pagina di visualizzaione dati della tabella. mi spiego meglio, i dati nella tabella sono posizionati ognuno nel loro campo mentre quando li visualizzo tramite la pagina i dati non sono nei giusti campi, sono spostati.

pagina di visualizzazione
PHP:
<?php
define("DB_HOST", 'localhost'); 
define("DB", 'my_arapecoston');
define("DB_USER", 'arapecoston');
define("DB_PW", '');

mysql_connect(DB_HOST, DB_USER, DB_PW);
mysql_select_db(DB);
require_once "gioincorso.php";
//.....
$query="select * from formazioni order by Id";
$result= mysql_query($query);
$numfields = mysql_num_fields($result);
echo "<table><tr>";
if($numfields > 0){
    for ($i=0; $i < $numfields; $i++){ 
           echo "<th>".mysql_field_name($result, $i)."</th>"; 
    }
    echo "</tr>";
    while ($row = mysql_fetch_array($result)){//qui è lo stesso salvo il discorso della data
        //è evidente che se non hai il problema della data il tuo metodo va più che bene
        echo "<tr><td>".$row['squadra']."</td><td>".$row['porta']."</td><td>".$row['titolare1']."</td><td>".$row['titolare2']."</td><td>".$row['titolare3']."</td><td>".$row['titolare4']."</td><td>".$row['titolare5']."</td><td>".$row['titolare6']."</td><td>".$row['titolare7']."</td><td>".$row['titolare8']."</td><td>".$row['titolare9']."</td><td>".$row['titolare10']."</td><td>".$row['riservaporta']."</td><td>".$row['riserva1']."</td><td>".$row['riserva2']."</td><td>".$row['riserva3']."</td><td>".$row['riserva4']."</td><td>".$row['riserva5']."</td><td>".$row['riserva6']."</td><td>".date("d/m/Y H:i:s",$row['data'])."</td></tr>";
    }  
}else{
    echo "<tr><td>non ci sono squadre</td></tr>";
}
echo "</table>";
?>

ecco come si vedono
vistab.JPG

ecco come dovrebbero essere
tab.JPG
 
Ti sei dimenticato di visualizzare la data prima della squadra. In alternativa escludila dai campi selezionati nella query SQL. Comunque visualizzare i dati in questo modo è poco elegante: scrivi manualmente la tabella.
 
ho modificato così
PHP:
<?php
define("DB_HOST", 'localhost'); 
define("DB", 'my_arapecoston');
define("DB_USER", 'arapecoston');
define("DB_PW", '');

mysql_connect(DB_HOST, DB_USER, DB_PW);
mysql_select_db(DB);
require_once "gioincorso.php";
//.....
$query="select * from formazioni order by Id";
$result= mysql_query($query);
$numfields = mysql_num_fields($result);
echo "<table><tr>";
if($numfields > 0){
    for ($i=0; $i < $numfields; $i++){ 
           echo "<th>".mysql_field_name($result, $i)."</th>"; 
    }
    echo "</tr>";
    while ($row = mysql_fetch_array($result)){//qui è lo stesso salvo il discorso della data
        //è evidente che se non hai il problema della data il tuo metodo va più che bene
        echo "<tr><td>".$row['']."</td><td>".date("d/m/Y H:i:s",$row['data'])."</td><td>".$row['squadra']."</td><td>".$row['porta']."</td><td>".$row['titolare1']."</td><td>".$row['titolare2']."</td><td>".$row['titolare3']."</td><td>".$row['titolare4']."</td><td>".$row['titolare5']."</td><td>".$row['titolare6']."</td><td>".$row['titolare7']."</td><td>".$row['titolare8']."</td><td>".$row['titolare9']."</td><td>".$row['titolare10']."</td><td>".$row['riservaporta']."</td><td>".$row['riserva1']."</td><td>".$row['riserva2']."</td><td>".$row['riserva3']."</td><td>".$row['riserva4']."</td><td>".$row['riserva5']."</td><td>".$row['riserva6']."</td></tr>";
    }  
}else{
    echo "<tr><td>non ci sono squadre</td></tr>";
}
echo "</table>";
?>

e si vede bene (a parte il fatto che non mette il numero id)
Cattura.JPG

può andar bene la modifica? ho sbagliato qualcosa?
la visualizzazione lo vedo che fà un pò pena ma non saprei come fare per visualizzare in maniera diversa.
 
grazie problema risolto.

se potete aiutarmi avrei un'altro piccolo (piccolo per voi) problemino con la funzione trim nella pagina dove c'è il form:

PHP:
$tit = array_map('trim',$tit);//tolgo eventuali spazi prima e dopo
$tit = array_map('strtolower',$tit);//rendo, se ci sono i nomi tutti minuscoli
$tit = array_map('ucfirst',$tit);//rendo, se ci sono i nomi con l'iniziale maiuscola
$ris = array_map('trim',$ris);// c.s.
$ris = array_map('strtolower',$ris);// c.s.
$ris = array_map('ucfirst',$ris);// c.s.

la parte di codice che vedete sopra non mi acceta parole doppie (esempio de rossi), devo scrivere de rossi attaccato e cioè derossi
ho provato ad usare sia ltrim che rtrim ma non và
 
ciao
$tit è un array?
se si puoi usare array_map
se no devi usare solo trim
PHP:
$tit=trim($tit); //analogo per gli altri

PHP:
<?php
session_start();//attento davanti e prima dell <? non deve essrci nemmeno uno spazio
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<style type="text/css">
body {background: #CCCCCC; font-family:Arial, Helvetica, sans-serif; font-size:12px;}
.normale{text-align: center;}
.squadra{color: #ff0000;font-weight: bold;text-align: center;}
.titolari{color: #009933; font-weight: bold; text-align: center;}
.riserve{color: #0000ff; font-weight: bold; text-align: center;}
</style>
<body>
<?php
if(isset($_POST['invia'])){
    $tit=array();
    //elimino il post del submit che potrebbe dare fastidio
    unset($_POST['invia']);
    //ricevi i dati e li normalizzo per una eventuale ricerca
    $squadra = strtoupper(trim($_POST['squadra']));//rendo tutto maiuscolo il nome della squadra
    $tit=$_POST['titolare'];
    $ris=$_POST['riserva'];
    $tit = array_map('trim',$tit);//tolgo eventuali spazi prima e dopo
    $tit = array_map('strtolower',$tit);//rendo, se ci sono i nomi tutti minuscoli
    $tit = array_map('ucfirst',$tit);//rendo, se ci sono i nomi con l'iniziale maiuscola
    $ris = array_map('trim',$ris);// c.s.
    $ris = array_map('strtolower',$ris);// c.s.
    $ris = array_map('ucfirst',$ris);// c.s.
    //e li verifico
    $errori="";//metto a vuoto una striga per gli errori
    //verifico nome squadra
    if(!preg_match("/^[A-Z]{3,15}$/",$squadra)){//devi decidere il massimo e minimo di caratteri {min, Max}
        $errori.="nome squadra non inserito o con caratteri non ammessi<br />";
        $_SESSION['sq']="";
    }else{
        $_SESSION['sq']="$squadra";
    }
    //verifico i titolari
    if(count($tit)<11){
        $errori.="non hai inserito tutti i titolari<br />";
    }else{
        foreach($tit as $ch => $val){
            if(!preg_match("/^[a-zA-Zàèìòù]{3,15}$/",$val)){//devi decidere il massimo e minimo di caratteri {min, Max}
                $_SESSION['tit'][$ch]="";
                if($val==""){
                    $nn=(int)$ch;
                    if($nn==0){$nn="porta";}
                    $errori.="il nome del titolare $nn vuoto<br />";
                }else{
                    $errori.="il nome del titolare $val non ammesso<br />";
                }
            }
            $_SESSION['tit'][$ch]="$val";
        }
    }
    //verifico le riserve
    if(count($ris)<7){
        $errori.="non hai inserito tutte le riserve<br />";
    }else{
        foreach($ris as $ch => $val){
            if(!preg_match("/^[a-zA-Zàèìòù]{3,15}$/",$val)){//devi decidere il massimo e minimo di caratteri {min, Max}
                $_SESSION['ris'][$ch]="";
                if($val==""){
                    $nn=(int)$ch;
                    if($nn==0){$nn="riservaporta";}
                    $errori.="il nome dela riserva $nn vuoto<br />";
                }else{
                    $errori.="il nome della riserva $val non è ammesso<br />";
                }
            }
            $_SESSION['ris'][$ch]="$val";
        }
    }
    //se a questo punto $errori è rimasta vuota non sono stati commessi errori
    if($errori == ""){
        $conn = @mysql_connect('localhost','arapecoston','') or die (mysql_error());
        $sel = @mysql_select_db('my_arapecoston') or die (mysql_error()); 
        //utilizzo le vecchie istruzioni MySql che però sono deprecate anche se per ora funzionano
        //prima o poi però leggiti su MySqli e la classe PDO
        //qui ci vogliono i dati di connessione al db, NON HAI SELEZIONATO IL DB
        //$con = mysql_connect("localhost","arapecoston","my_arapecoston")or die(mysql_error());
        //$sel = mysql_select_db("my_arapecoston") or die (mysql_error());//questo non l'avevi messo
        //attento avevi usato mysqli_connet poi usi le mysql, non puoi mescolare i due metodi
        //USA PER NOMI DEI CAMPI SOLO CARATTERI MINUSCOI ED ANCHE PER I NOMI DELLE VARIABILI
        //se evitano molti errori
        $adesso=time();
        function scrivi_data($t){
        $giorni = array("Domenica","Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato");//ocio parte da domenica
        $mesi = array("","Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre","Novembre", "Dicembre");//ocio parte da 1
        return $giorni[date("w", $t)]." ".date("d", $t)." ".$mesi[date("n", $t)]." ore ".date("H:i:s", $t)." settimana n &deg; ".date("W", $t);

}
$adesso=time();
echo "data in formato umano ".scrivi_data($adesso); 
        $query = "INSERT INTO formazioni(data,squadra, porta, titolare1, titolare2, titolare3, titolare4, titolare5, titolare6, titolare7, titolare8, titolare9, titolare10, riservaporta, riserva1, riserva2, riserva3, riserva4, riserva5, riserva6)
                VALUES(
                '$adesso','$squadra',          '{$tit[0]}','{$tit[1]}','{$tit[2]}','{$tit[3]}','{$tit[4]}','{$tit[5]}','{$tit[6]}','{$tit[7]}','{$tit[8]}','{$tit[9]}','{$tit[10]}',
                '{$ris[0]}','{$ris[1]}','{$ris[2]}','{$ris[3]}','{$ris[4]}','{$ris[5]}','{$ris[6]}'
                )";
        //var_dump($query); echo "<br>";
        if(mysql_query($query)){
            //posso usare sempre la $errori
            $errori="i giocatori della squadra $squadra sono stati inseriti<br />";
        }else{
            $errori="errore di connessione, riprova più tardi<br />";
        }
        session_destroy();
    }
    //visualizzo il messaggio
    echo $errori;
    //e ritorno al form pulito dopo 3 secondi
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}else{
?>
    <form name="formazione" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
    <table width="400" align="center">
    <tr class="squadra"><td>SQUADRA</td><td><input type="text" name="squadra" value="<?php echo $_SESSION['sq']; ?>" /></td></tr>
    <tr class="titolari"><td colspan="2">titolari</td></tr>
<?php
    //faccio un array con i titoli degli input
    $titolari=array('porta','titolare1','titolare2','titolare3','titolare4','titolare5','titolare6','titolare7','titolare8','titolare9','titolare10');
    //e creo i vari campi di input
    $nn=0;
    foreach($titolari as $ch => $val){
        echo "<tr class=\"titolari\"><td>$val</td><td><input type=\"text\" name=\"titolare[$nn]\" value=\"{$_SESSION['tit'][$nn]}\" /></td></tr>";
        $nn++;
    }
?>
    <tr class="riserve"><td colspan="2">riserve</td></tr>
<?php
    $riserve=array('riservaporta','riserva1','riserva2','riserva3','riserva4','riserva5','riserva6');
    $nn=0;
    foreach($riserve as $ch => $val){
        echo"<tr class=\"riserve\"><td>$val</td><td><input type=\"text\" name=\"riserva[$nn]\" value=\"{$_SESSION['ris'][$nn]}\" /></td></tr>";
        $nn++;
    }
?>
    <tr class="normale"><td>&nbsp;</td><td>&nbsp;</td></tr>
    <tr class="normale"><td>&nbsp;</td><td><input type="submit" name="invia" value="INVIA FORMAZIONE" /></td></tr>
    </table>
    </form>
<?php
}
?>
</body>
</html>
 
ciao
perchè dici che non funzia, l'unica cosa sostituisci ucfirst con ucwords
PHP:
<?php
$tit=array('pinco pallo', ' de SEMPRONI', ' pallino DE palli ','soFonisba ');
$tit = array_map('trim',$tit);//tolgo eventuali spazi prima e dopo
$tit = array_map('strtolower',$tit);//rendo, se ci sono i nomi tutti minuscoli
$tit = array_map('ucwords',$tit);//rendo, se ci sono i nomi con l'iniziale maiuscola 
echo "<pre>";
var_dump($tit);
echo "</pre>";
?>

output
array(4) {
[0]=>
string(11) "Pinco Pallo"
[1]=>
string(11) "De Semproni"
[2]=>
string(16) "Pallino De Palli"
[3]=>
string(9) "Sofonisba"
}
 
ciao
dimenticavo
vedo che inserisci nel db la data nel formato umano, guarda che puoi evere dei problemi se devi ordinare i risultati in ordine di data
es.
lunedì 12 luglio 2013 ....
venerdì 19 luglio 2013 ....
sabato 20 luglio 2013 ....
viene ordinata
lunedì 12 luglio 2013 ....
sabato 20 luglio 2013 ....
venerdì 19 luglio 2013 ....
che è un assurdo

senza contare se devi fare dei confronti
 
Ultima modifica:
borgo italia
ciao
perchè dici che non funzia, l'unica cosa sostituisci ucfirst con ucwords

non funziona anche con ucwords.
se inserisco "de rossi" in uno dei campi "titolare" o "riserva" mi dice "il nome de rossi non è ammesso"; praticamente non accetta lo spazio fra le due parole
 
ciao
l'errore è qui
if(!preg_match("/^[a-zA-Zàèìòù]{3,15}$/",$val)){//devi decidere il massimo e minimo di caratteri {min, Max}
aggiungi uno spazio nel pattern
PHP:
if(!preg_match("/^[a-zA-Zàèìòù ]{3,15}$/",$val)){//devi decidere il massimo e minimo di caratteri {min, Max}
poi guardo meglio come farlo
 
ciao
prova così (provalo prima a parte per capire)
PHP:
<?php
$tit=array('pinco pallo', ' de SEMPRONI', ' pallino DE palli ','soFonisba ','pancrazi', 'de  pallonzi','da romano de roma');
echo "<pre>";
var_dump($tit);
echo "</pre>";
$tit = array_map('trim',$tit);//tolgo eventuali spazi prima e dopo
$tit = array_map('strtolower',$tit);//rendo, se ci sono i nomi tutti minuscoli
$tit = array_map('ucwords',$tit);//rendo, se ci sono i nomi con l'iniziale maiuscola 
echo "<pre>";
var_dump($tit);
echo "</pre>";
foreach($tit as $ch => $val){
	if(!preg_match("/^[a-zA-Zàèìòù]{2,18}[ ]{0,1}[a-zA-Zàèìòù]{2,18}[ ]{0,1}[a-zA-Zàèìòù]{2,18}$/",$val)){
		echo "$val NON è valido<br />";
	}else{
		echo "$val è valido<br />";
	}
}
?>
output
Pinco Pallo è valido
De Semproni è valido
Pallino De Palli è valido
Sofonisba è valido
Pancrazi è valido
De Pallonzi NON è valido //tra il de e pallonzi ci sono due spazi
Da Romano De Roma NON è valido //il nome è composto da più di tre parole separate da uno spazio
 

Discussioni simili