webForumDet fria alternativet

Varför skrivs inte statistiken ut?

PHPur PHP

31 svar · 711 visningar · startad av richardjoha

richardjohaMedlem sedan okt. 2005787 inlägg
#1

addpoang.php här lägger jag till antalet matcher mål och poäng.

koden addpoang.php:

<?php
include "anslut.php"; // Databasanslutningen
 
//Här uppdaterar poängen
IF($_GET['do']=='sparapoang' && $_POST['autoid']!=''){
   $autoid=$_POST['autoid'];
   $namn=$_POST['namn'];
   $matcher=$_POST['matcher'];
   $mal=$_POST['mal'];
   $assist=$_POST['assist'];
   $totalt=$_POST['mal']+$_POST['assist'];
   $uppdatera = "UPDATE pts SET namn = '{$namn}', matcher = '{$matcher}', mal = '{$mal}', assist = '{$assist}', totalt = '{$totalt}' WHERE autoid = '{$autoid}'";
   $res = mysql_query($uppdatera) or die("SQL: Gick ej att uppdatera informationen $uppdatera <br>".mysql_error());
}
 
//Här sparas nya poäng
ElseIF($_GET['do']=='nypoang'){
   $namn=$_POST['namn'];
   $matcher=$_POST['matcher'];
   $mal=$_POST['mal'];
   $assist=$_POST['assist'];
   $totalt=$_POST['mal']+$_POST['assist'];
   $laggtill = "INSERT INTO pts (namn, matcher, mal, assist, totalt) VALUES ('$namn', '$matcher', '$mal', '$assist', '$totalt')";
   $res = mysql_query($laggtill) or die('SQL: Gick ej att lägga till informationen $laggtill <br>'.mysql_error()); 
}
 
//Här raderas spelaren
ElseIF($_GET['do']=='raderaspelare' && $_GET['autoid']!=''){
   $autoid=$_GET['autoid'];
   $radera = "DELETE FROM pts WHERE autoid = '$autoid'";
   mysql_query($radera) or die('SQL: Gick ej att radera informationen: $radera <br>'.mysql_error());
}
 
//Här visas alla poäng
$sql = "SELECT * FROM poangliga ORDER BY totalt DESC"; 
$resultat = mysql_query($sql);
echo "<table>\n";
   echo "   <tr>\n";
   echo "      <td>Namn</td>\n";
   echo "      <td>Matcher</td>\n";
   echo "      <td>Mål</td>\n";
   echo "      <td>Assist</td>\n";
   echo "      <td>Knapp för att spara</td>\n";
   echo "      <td>Länk för att ta bort</td>\n";
   echo "   </tr>\n";
   echo "   <tr><form method='POST' action='?do=nypoang'>\n";
   echo "      <td><input type='text' name='namn' size='40'></td>\n";
   echo "      <td><input type='text' name='matcher' size='40'></td>\n";
   echo "      <td><input type='text' name='mal' size='40'></td>\n";
   echo "      <td><input type='text' name='assist' size='40'></td>\n";
   echo "      <td><input type='submit' value='Spara nya spelaren & dennes poäng' name='submitny'></td>\n";
   echo "      <td>&nbsp;</td>\n";
   echo "   </form></tr>\n";
while($kolumn = mysql_fetch_array($resultat)){
   echo "   <tr><form method='POST' action='?do=sparapoang'>\n";
   echo "      <input type='hidden' name='autoid' value='{$kolumn['autoid']}'>\n";
   echo "      <td><input type='text' name='namn' size='40' value='{$kolumn['namn']}'></td>\n";
   echo "      <td><input type='text' name='matcher' size='40' value='{$kolumn['matcher']}'></td>\n";
   echo "      <td><input type='text' name='mal' size='40' value='{$kolumn['mal']}'></td>\n";
   echo "      <td><input type='text' name='assist' size='40' value='{$kolumn['assist']}'></td>\n";
   echo "      <td><input type='submit' value='Spara denna spelarens poäng' name='submit{$kolumn['autoid']}'></td>\n";
   echo "      <td><a href='?do=raderaspelare&autoid={$kolumn['autoid']}'>Radera</a></td>\n";
   echo "   </form></tr>\n";
}
echo "</table>\n";
?>

visapoang.php, här är tanken att statistiken (matcher, mål och assist samt totalen) ska skrivas ut.. men uppenbarligen har jag missat något för det enda som jag kan läsa är:
"Namn Matcher Mål Assist Poäng"

Koden visapoang.php:

<?php
include "anslut.php"; // Databasanslutningen
 
$sql = "SELECT * FROM poangliga ORDER BY totalt DESC"; 
$resultat = mysql_query($sql);

echo "<table>\n";
   echo "   <tr>\n";
   echo "      <td>Namn</td>\n";
   echo "      <td>Matcher</td>\n";
   echo "      <td>Mål</td>\n";
   echo "      <td>Assist</td>\n";
   echo "      <td>Poäng</td>\n";
   echo "   </tr>\n";
while($kolumn = mysql_fetch_array($resultat)){
   echo "   <tr>\n";
   echo "      <td>{$kolumn['namn']}</td>\n";
   echo "      <td>{$kolumn['matcher']}</td>\n";
   echo "      <td>{$kolumn['mal']}</td>\n";
   echo "      <td>{$kolumn['assist']}</td>\n";
   echo "      <td>{$kolumn['totalt']}</td>\n";
   echo "   </tr>\n";
}
echo "</table>\n";
?>
aasahMedlem sedan mars 20034 471 inlägg
#2

Pröva att skriva ut mysql_num_rows($resultat) visapoang.php . Då vet du hur många rader som finns i resultatet. Om det är 0, är det fel i addpoang, annars i visa.

richardjohaMedlem sedan okt. 2005787 inlägg
#3

nu när jag testade att skriva mysql_num_rows($resultat) visapoang.php kan jag inte se något alls?? är ju relativt ny inom php men det känns som lösningen är relativt enkel...

aasahMedlem sedan mars 20034 471 inlägg
#4

richardjoha skrev:

nu när jag testade att skriva mysql_num_rows($resultat) visapoang.php kan jag inte se något alls?? ...

Alltså var det 0. Anledningen att du inte ser något är PHPs "användarvänlighet". 0 tolkas som tom sträng, skriv ut tom sträng.... ger just ingenting.

Det betyder således troligen att du inte fått in några poäng.

richardjohaMedlem sedan okt. 2005787 inlägg
#5

jo men jag har matat in namn matcher mål assist i filen addpoang.php

aasahMedlem sedan mars 20034 471 inlägg
#6

richardjoha skrev:

jo men jag har matat in namn matcher mål assist i filen addpoang.php

Om

$sql = "SELECT * FROM poangliga ORDER BY totalt DESC"; 
$resultat = mysql_query($sql);
echo "antal = ".mysql_num_rows($resultat);

ger utskriften "antal = " i någon som helst php-sida som ansluter till samma databas som addpoang.php gör, så lagrar addpoang.php INTE det den ska i poangliga i alla fall. Du har helt enkelt noll rader att visa i poangliga. Det spelar ingen roll vilken fil du kör det i. Antingen lagras det i databasen eller inte. Finns där noll rader, så lagrades det inte. Varför är en annan femma....

richardjohaMedlem sedan okt. 2005787 inlägg
#7

men hur ska jag göra för att lösa problemet?

aasahMedlem sedan mars 20034 471 inlägg
#8

I addpoang.php, lägg in en echo av hur $laggtill blir, innan du kör den. Visa resultatet här. Det ger dig också chansen att se om du någonsin kommer till dessa rader.

richardjohaMedlem sedan okt. 2005787 inlägg
#9

jag har ju redan $laggtill här.

 $laggtill = "INSERT INTO pts (namn, matcher, mal, assist, totalt) VALUES ('$namn', '$matcher', '$mal', '$assist', '$totalt')";

jag tror inte jag förstår inte rikitgt vad du menar..? har du ett exempel?

richardjohaMedlem sedan okt. 2005787 inlägg
#10

har kört fast, är det någon som kan hjälpa mig lite?

aasahMedlem sedan mars 20034 471 inlägg
#11

richardjoha skrev:

jag har ju redan $laggtill här.

 $laggtill = "INSERT INTO pts (namn, matcher, mal, assist, totalt) VALUES ('$namn', '$matcher', '$mal', '$assist', '$totalt')";

jag tror inte jag förstår inte rikitgt vad du menar..? har du ett exempel?

Ja, och på raden omedelbart efter stoppa in:
echo $laggtill."<BR>";
Betrakta resultatet av den utskriften. Ser det rätt ut? I så fall, posta den här, annars har du kanske hittat felet.

richardjohaMedlem sedan okt. 2005787 inlägg
#12

detta är vad som skrivs ut:

INSERT INTO pts (namn, matcher, mal, assist, totalt) VALUES ('richard', '3', '5', '4', '9')

aasahMedlem sedan mars 20034 471 inlägg
#13

Är verkligen kolumnerna matcher, mal, assist och totalt VARCHAR eller CHAR??? Varför lagrar du dom inte som heltal?

richardjohaMedlem sedan okt. 2005787 inlägg
#14

aasah skrev:

Är verkligen kolumnerna matcher, mal, assist och totalt VARCHAR eller CHAR??? Varför lagrar du dom inte som heltal?

japp de är som VARCHAR kolla dumpen nedan:

https://www.oldoakdesign.se/1234ANNAT/wf/pts.jpg

aasahMedlem sedan mars 20034 471 inlägg
#15

Det är inte någon vidare bra idé. Du ville ju göra ORDER BY totalt DESC i frågan. Det ger följande ordning:

'9'
'40'
'487'
'3'
'187564'

tex... Byt siffrorna till heltal så summering och sortering fungerar!

richardjohaMedlem sedan okt. 2005787 inlägg
#16

Är relativt grön på detta så skulle vara kanon om du kunde ge mig lite mer basic information om hur jag ska gå tillväga.. :)

aasahMedlem sedan mars 20034 471 inlägg
#17

Har du viktig data i tabellen, eller bara testvärden? :q Om du bara har testvärden skulle jag föreslå att du droppar den (DROP TABLE namn), och skapar den på nytt med INT som typ och inte VARCHAR för de fält som lagrar heltal.

Annars får du använda ALTER TABLE. Länken gäller syntaxen för MySQL.

richardjohaMedlem sedan okt. 2005787 inlägg
#18

jag har bara testvärden ännu... jag testar så får vi se.. tack för hjälpen..

richardjohaMedlem sedan okt. 2005787 inlägg
#19

samma felmedelande som förut.. har droppat table name och skapat med INT

https://www.oldoakdesign.se/1234ANNAT/wf/int.jpg

vad sjutton är det som spökar..

@ndersMedlem sedan juni 200032 969 inlägg
#20

"samma felmeddelande" skriver du. Vilket är alltså det felmeddelandet? Mina ögon ser inget felmeddelande i denna tråd. :)

130 ms totalt · 3 externa anrop · v20260731065814-full.a2ca460b
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)