Prodej eshopu s dámskou módou - Tochcesfashion.cz včetně skladových zásob v hodnotě 450.000 Kč
Zobrazují se odpovědi 1 až 7 z 7

Prechod z MySQL na Postgresql v skolsom testovacom systéme

  1. Zdravím po prechode z MySQL na PostgreSQL v školskom systéme píše túto chybu, viete mi poradiť?
    Název:  chyba1.png
Zobrazení: 133
Velikost:  151,4 KB
    Název:  3.png
Zobrazení: 125
Velikost:  114,7 KBNázev:  2.png
Zobrazení: 129
Velikost:  73,5 KB

    Kód:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
    <head>
    <meta http-equiv="Content-Type" content="text/html; UTF-8" />
    <title>Samotestovanie</title>
    
    <link rel="stylesheet" type="text/css" href="assets/css/common.css" />
    
    </head>
    
    <body>
    
    
    
    <div id="wrapper">
      <div id="header">
        <div align="center">
          <p><a href="index.php"><img src="assets/images/logo.png" alt="" width="165" height="102" class="logo" /></a> </p>
          <p align="center"><span class="style6">Online testovací systém </span></p>
        </div>
      </div>
    
        <?php
    
    	include( 'menu/menu_neprihlaseny.php' )	// horne menu
    
    
    	?>
    
    
    
    
      <div id="content" class="clearfix">
        <div id="col_1">
    
    
    	  <?php
    
    	include( 'menu/submenu.php' )	//lave menu
    
    	// Bocne menu bude obsahovat prihlasit a registrovat
    	?>
    
        </div>
    
        <div id="col_2">
          <h1>Samotestovanie</h1><br />
    
    
    
    <?php
    
    include( 'pripoj.php' );	// Pripojenie na databazu
    
    
    
    if ($_REQUEST["odoslane"]) {
    
    
    	$omg = 1;
    	$body = 0;
    	for ( $a = 0; $a < $_POST[ 'pocet_otazok' ]; $a++ ) {
    		$spravne = false;
    		for ( $b = 0; $b < $_POST[ 'poc' ][$a]; $b++ ) {
    			$omg++;
    			if (   $_POST[ 'odpoved' ][$omg-1] == $_POST[ 'odpoved2' ][$omg-1]  ){
    
    				$spravne = true;
    
    
    			} else {
    
    				$spravne = false;
    				$omg = $omg + ( $_POST[ 'poc' ][$a] - $b )-1;
    				break;
    			}
    
    			//echo $a . " - " . $_POST[ 'odpoved' ][$omg] . "<br />";
    			//echo $a . " . " . $_POST[ 'odpoved' ][$a] . "<br />";
    
    		}
    		if ( $spravne ) { $body += $_POST[ 'pocet_bodov' ][$a]; };
    		$celkovy_pocet_bodov += $_POST[ 'pocet_bodov' ][$a];
    	}
    
    	//include( 'pripoj.php' );	// Pripojenie na databazu
    
    	//echo "Získali ste " . $body . " bodov";
    
    
    	//echo $celkovy_pocet_bodov . "<br />";
    
    	$percenta = ( $body/$celkovy_pocet_bodov ) * 100;
    
    
    
    	$hodnotenie = "";
    
    	if ( ( $percenta <= 100 ) AND ( $percenta >= 95 ) ) { $hodnotenie = "A";  }
    	if ( ( $percenta <= 94 ) AND ( $percenta >= 85 ) ) { $hodnotenie = "B";  }
    	if ( ( $percenta <= 84 ) AND ( $percenta >= 75 ) ) { $hodnotenie = "C";  }
    	if ( ( $percenta <= 74 ) AND ( $percenta >= 65 ) ) { $hodnotenie = "D";  }
    	if ( ( $percenta <= 64 ) AND ( $percenta >= 55 ) ) { $hodnotenie = "E";  }
    	if ( ( $percenta <= 54 ) AND ( $percenta >= 0 ) ) { $hodnotenie = "Fx";  }
    
    
    	echo "<div class=\"samotestovanie\">";
    	echo "Úspešnosť v percentách: " . $percenta . "% <br />";
    	echo "Hodnotenie: " . $hodnotenie . "<br />";
    	echo "</div>";
    
    	$odp = 1;
    	for ( $a = 0; $a < $pocet_otazok; $a++  ) {
    
    
    	$cis++;
    	$vypis = "SELECT * FROM otazky WHERE id_otazky=\"" . $_POST[ 'otazka_id' ][$a] . "\""; // Vyber z databazy
    	$vysledky = pg_query( $vypis ) or die( pg_last_error() );
    
    	$riadok = pg_fetch_array( $vysledky );
    
    	//$body[$a] = $riadok[ 'pocet_bodov' ];
    	//$id_otazky[$a] = $riadok[ 'id_otazky' ];
    	$tema[$a] = $riadok[ 'id_temy' ];
    	$text_otazky[$a] = $riadok[ 'text_otazky' ];
    
    	echo "<div class=\"kontajner\">" . $cis . ". " . $otazka[$a] . "</div>";
    	echo "<input type=\"hidden\" name=\"otazka[" . $a . "]\" value=\"" . $text_otazky[$a] . "\"  />";
    	//echo $_POST[ 'otazka_id' ][$a] . "<br />";
    
    	$vypis = "SELECT * FROM odpovede WHERE id_otazky=\"" . $_POST[ 'otazka_id' ][$a] . "\""; // Vyber z databazy
    	$vysledky = pg_query( $vypis ) or die( pg_last_error() );
    	$j = 0;
    	while ( $riadok = pg_fetch_array( $vysledky ) ) {		// cyklus pre nacitanie id otazok s najvyssim poctom bodov
    		$id_otazky[$j] = $riadok[ 'id_otazky' ];
    		$odpoved_db[$j] = $riadok[ 'odpoved' ];
    		$spravna[$j] = $riadok[ 'spravna' ];
    		$j++;	// Index poli a funguje aj ako pocitadlo riadkov
    	}
    	$pocitadlo = 0;		// pocita pocet odpovedi pre kazdu otazku
    	?>
    	<div class="odpovede">
    	<?php for ( $i = 0; $i < $j; $i++ ) {
    		if ( $spravna[$i] ) {
    			$spravna_oznac = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; táto odpoveď je správna";
    			$farba = "green";
    		} else {
    			$spravna_oznac = "";
    			 $farba = "black";
    		};
    		if ( $_POST[ 'odpoved' ][$odp] != "" ) { $checked = "checked"; } else { $checked = ""; };
    
    		//echo $_POST[ 'odpoved' ][$odp] . "<br />";
    
    		if ( $spravna[$i] ) { $ok = $a; } else { $ok = ""; };
    		echo "<span style=\" color:" . $farba . " \"><input type=\"checkbox\" name=\"odpoved[" . $odp . "]\" value=\"" . $a . "\" " . $checked . " /> " . $odpoved_db[$i] . " " . $spravna_oznac . "</span></br>";
    		echo "<input type=\"hidden\" name=\"odpoved2[" . $odp . "]\" value=\"" . $ok . "\" />";
    		$pocitadlo++;
    
    		$odp++;
    		//echo $odp;
    	}
    	//echo $pocitadlo;
    
    	echo "<input type=\"hidden\" name=\"poc[" . $a . "]\" value=\"" . $pocitadlo . "\"  />";
    	echo "<input type=\"hidden\" name=\"pocet_bodov[" . $a . "]\" value=\"" . $body[$a] . "\"  />";
    	?>
    	</div>
    	<?php
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    } else {
    
    
    $odp = 1;
    
    $vypis = "SELECT * FROM otazky WHERE skusobne=1"; // WHERE skusobne=1";
    $vysledky = pg_query( $vypis ) or die( pg_last_error() );
    $aa = 0;
    while ( $riadok = pg_fetch_array( $vysledky ) ) {
    
    	$id_otazky[$aa] = $riadok[ 'id_otazky' ];
    	$otazka[$aa] = $riadok[ 'text_otazky' ];
    	$pocet_bodov[$aa] = $riadok[ 'pocet_bodov' ];
    
    	$aa++;
    }
    
    //echo "aa=" . $aa;
    
    
    if ( $aa < 10 ) { $poc_otazok = $aa; } else { $poc_otazok = 10; }
    
    $i = 0;
    while ( $i < $poc_otazok ) {
    
    	$nahodne = rand(0, $aa);
    	if ( $id_otazky[$nahodne] != "" ) {
    		$otazky[$i] = $id_otazky[$nahodne];
    		$id_otazky[$nahodne] = "";
    		$i++;
    	}
    }
    
    /*
    for ( $i = 0; $i < 10; $i++ ) {
    	echo $i . ". " . $otazky[$i] . "<br />";
    }
    */
    ?>
    
    <form action="samotestovanie.php" method="post" charset="UTF-8">
    
    <?php
    
    // Nacitanie odpovedi z databazy podla ID otazky
    
    for ( $a = 0; $a < $poc_otazok; $a++  ) {
    
    
    	$cis++;
    	$vypis = "SELECT * FROM otazky WHERE id_otazky=\"" . $otazky[$a] . "\""; // Vyber z databazy
    	$vysledky = pg_query( $vypis ) or die( pg_last_error() );
    
    	$riadok = pg_fetch_array( $vysledky );
    	$id_otazky[$a] = $riadok[ 'id_otazky' ];
    	$body[$a] = $riadok[ 'pocet_bodov' ];
    	$tema[$a] = $riadok[ 'id_temy' ];
    	$text_otazky[$a] = $riadok[ 'text_otazky' ];
    
    	echo "<div class=\"kontajner\">" . $cis . ". " . $text_otazky[$a] . "</div>";
    	echo "<input type=\"hidden\" name=\"otazka[" . $a . "]\" value=\"" . $text_otazky[$a] . "\"  />";
    	echo "<input type=\"hidden\" name=\"otazka_id[" . $a . "]\" value=\"" . $id_otazky[$a] . "\"  />";
    
    	$vypis = "SELECT * FROM odpovede WHERE id_otazky=\"" . $otazky[$a] . "\""; // Vyber z databazy
    	$vysledky = pg_query( $vypis ) or die( pg_last_error() );
    	$j = 0;
    	while ( $riadok = pg_fetch_array( $vysledky ) ) {		// cyklus pre nacitanie id otazok s najvyssim poctom bodov
    		$id_otazky[$j] = $riadok[ 'id_otazky' ];
    		$odpoved[$j] = $riadok[ 'odpoved' ];
    		$spravna[$j] = $riadok[ 'spravna' ];
    		$j++;	// Index poli a funguje aj ako pocitadlo riadkov
    	}
    	$pocitadlo = 0;		// pocita pocet odpovedi pre kazdu otazku
    	?>
    	<div class="odpovede">
    	<?php for ( $i = 0; $i < $j; $i++ ) {
    
    		//if ( $spravna[$i] ) { $checked = "checked"; } else { $checked = ""; };
    		if ( $spravna[$i] ) { $ok = $a; } else { $ok = ""; };
    		echo "<span><input type=\"checkbox\" name=\"odpoved[" . $odp . "]\" value=\"" . $a . "\" " . $checked . " /> " . $odpoved[$i] . "</span></br>";
    		echo "<input type=\"hidden\" name=\"odpoved2[" . $odp . "]\" value=\"" . $ok . "\" />";
    		$pocitadlo++;
    
    		$odp++;
    
    	}
    	//echo $pocitadlo;
    
    		echo "<input type=\"hidden\" name=\"poc[" . $a . "]\" value=\"" . $pocitadlo . "\"  />";
    	echo "<input type=\"hidden\" name=\"pocet_bodov[" . $a . "]\" value=\"" . $body[$a] . "\"  />";
    	?>
    	</div>
    	<?php
    }
    echo "<input type=\"hidden\" name=\"pocet_otazok\" value=\"" . $a . "\" />";
    
    ?>
    <input type="hidden" name="id_testu" value="<?php  echo $_REQUEST[ 'test' ] ?>" />
    <input type="hidden" name="odoslane" value="true" />
    <input type="submit" name="" value=" Odoslať " />
    </form>
    
    <?php
    }
    ?>
        </div>
      </div>
      <div id="footer">Varga, Rusnák <small>&copy; 2010-2017</small></div>
    </div>
    </body>
    </html>

  2. Co se právě děje na Webtrhu?
  3. Z toho screenu úplně nepoznám jestli je 32 v uvozovkách, apostrofech nebo co to je, každopádně počítám, že je to integer, takže bych zkusil ty uvozovky vyhodit, tzn. nechat id_otazky = 32

  4. V mysql verzií to funguje normálne.....ak sa tu zbavím tých úvodzoviek server hodí error 500

  5. Postgresql má trochu jinou syntaxi. Prostudujte si ji.

  6. Vedel by mi niekto pomôcť aspoň s priloženým súborom aby som sa mohol odvíjať od tohto súboru a pokračovať tak aj s ostatnými? Ďakujem

    ---------- Příspěvek doplněn 14.11.2016 v 12:10 ----------

    Ako by som mohol zmeniť napr. toto?

    Kód:
    $vypis = "SELECT * FROM otazky WHERE id_otazky=\"" . $_POST[ 'otazka_id' ][$a] . "\""; // Vyber z databazy

  7. Pokud je sloupecek integer. tak:

    Kód:
    $vypis = "SELECT * FROM otazky WHERE id_otazky=" . $_POST[ 'otazka_id' ][$a] . ""; // Vyber z databazy
    Pokud string, tak je spravny zapis:

    Kód:
    $vypis = "SELECT * FROM otazky WHERE id_otazky='" . $_POST[ 'otazka_id' ][$a] . "'"; // Vyber z databazy
    Pokud jde o jiny typ - "set/enum", array,... muze byt zapis jeste jiny.

    Kod dle HTML vypada, ze bude novejsi. Ale z kodu je poznat, ze aplikace neni ani trochu zabezpecena a je nachylna snad na kazdy typ utoku, ktery by se nasel. Pokud je urcena k testovani, doporucuji si ji aspon trochu zabezpecit, at si lidi nemohou zkouset nahodne odpovidat a vybrat si pak spravnou odpoved.

  8. Citace Původně odeslal marten Zobrazit příspěvek
    Pokud je sloupecek integer. tak:

    Kód:
    $vypis = "SELECT * FROM otazky WHERE id_otazky=" . $_POST[ 'otazka_id' ][$a] . ""; // Vyber z databazy
    Pokud string, tak je spravny zapis:

    Kód:
    $vypis = "SELECT * FROM otazky WHERE id_otazky='" . $_POST[ 'otazka_id' ][$a] . "'"; // Vyber z databazy
    Pokud jde o jiny typ - "set/enum", array,... muze byt zapis jeste jiny.

    Kod dle HTML vypada, ze bude novejsi. Ale z kodu je poznat, ze aplikace neni ani trochu zabezpecena a je nachylna snad na kazdy typ utoku, ktery by se nasel. Pokud je urcena k testovani, doporucuji si ji aspon trochu zabezpecit, at si lidi nemohou zkouset nahodne odpovidat a vybrat si pak spravnou odpoved.
    id_otazky je integer avšak chybu vyhadzuje stále tu istú aj po zmenení.....
    ďakujem veľmi pekne za pozn. k bezpečnosti, skúsim s tým niečo urobiť....

    ---------- Příspěvek doplněn 14.11.2016 v 13:48 ----------

    Keď som prešiel viaceré súbory a opravil to vo viacerích riadkov, začalo to fungovať.......ďakujem

Hostujeme u Server powered by TELE3