Kod do sprawdzenia, w czym jest problem (PHP)

Odpowiedz Nowy wątek
2006-09-15 22:52
0

Witam mam problem poniższy kod sprawdza mi wyniki testu. Ale nie wiem, dla czego skrypt ten wprowadza mi do bazy wyniki podwójnie :/ Jestem początkujący, jeśli chodzi o PHP, więc za odpowiedź z góry dziękuje.

<?
$odp[0]=$_GET["pyt1"];
$odp[1]=$_GET["pyt2"];
$odp[2]=$_GET["pyt3"];
$poprawna[0]='b';
$poprawna[1]='c';
$poprawna[2]='c';
$imie=$_GET["txtImie"];
$nazwisko=$_GET["txtNazwisko"];
$dobrych=0;
$nr_pyt=' ';
for($i=0;$i<3;$i++)
{
    if($odp[$i]==$poprawna[$i])
    $dobrych++;
        else
        $nr_pyt=$nr_pyt.' '.($i+1).',';
}

$link = mysql_connect(localhost, user);
if (!$link) die('Problem z polaczeniem: ' . mysql_error());

$db_selected = mysql_select_db(moj_db, $link);
if (!$db_selected) die ('Nie moge wybrac bazy: ' . mysql_error());

$sql="INSERT INTO wynik (imie,nazwisko,punkty,odp) values ('$imie','$nazwisko','$dobrych','$nr_pyt')";
$result=mysql_query($sql,$link);

if (!$result) die('Bledne zapytanie: ' . mysql_error());

echo 'Dziękuje za rozwi?zanie testu<br>';
echo 'Udzieliłeś/łaś '.$dobrych.' dobrych odpowiedzi<br>';

$licz=1;
for($i=0;$i<3;$i++)
{
 echo 'Pytanie nr '.$licz.' poprawna odpowiedĽ to: '.$poprawna[$i];
 echo ' - wybrałeś/łaś:'.$odp[$i].'<br>';
 $licz++;
}
 unset($poprawna);
 unset($odp);
 echo "<a href='index.html'>Rozpoczni test ponownie</a><br>";

Pozostało 580 znaków

2006-09-15 23:42
0

Hmm... W tym fragmencie nie widać żadnych podstaw, by zapytanie było wykonane dwukrotnie. Ale to co się rzuca w oczy, to błędy w mysql_connect i mysql_select. Powinno to wyglądać tak:
$link = mysql_connect('localhost', 'user');
$db_selected = mysql_select_db('moj_db', $link);
Pominięcie '' niby działa, ale jest błędem - po prostu PHP "domyśla się", że stała localhost powinna mieć wartość 'localhost' itp. Jednak gdyby przypadkiem stała o tej nazwie i innej wartości była zdefiniowana, wówczas skrypt byłby nieprzewidywalny. Adekwatnie sytuacja wygląda w przypadku stałej user i stałej moj_db.


Grunt to uziemienie...

Pozostało 580 znaków

2006-09-18 03:01
0
$link = mysql_connect(localhost, user);
if (!$link) die('Problem z polaczeniem: ' . mysql_error());

$db_selected = mysql_select_db(moj_db, $link);
if (!$db_selected) die ('Nie moge wybrac bazy: ' . mysql_error());

zastąp to tym:

$link=mysql_connect('localhost','root','haslo') or die('Problem z polaczeniem '.mysql_error());
mysql_select_db('moj_db') or die('nie można wybrac bazy '.mysql_error());

Stopki brak.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0