Kezdőoldal » Számítástechnika » Programozás » Miért lesz ebből végtelen ciklus?

Miért lesz ebből végtelen ciklus?

Figyelt kérdés

Lényegében generálok 5 random karaktert utána ellenőrzöm ,hogy benne van-r a táblában, ha benne van akkor egy újra és újra generálok 5 random, karakter amíg nem lesz egy olyan ami nincs a taáblában ha nincs akkor egy új rekord hozok létre a randnom változóval.



<?php

if (empty($_POST["url"]))

{

print "Nem adtál meg url-t a semmit nem tudjuk rövidíteni.";

}

else

{

do {

$characters = array(

"A","B","C","D","E","F","G","H","J","K","L","M",

"N","P","Q","R","S","T","U","V","W","X","Y","Z",

"1","2","3","4","5","6","7","8","9");

$keys = array();

while(count($keys) < 7) {

$x = mt_rand(0, count($characters)-1);

if(!in_array($x, $keys)) {

$keys[] = $x;

}

}


foreach($keys as $key){

$random_chars .= $characters[$key];

}

$url = $_POST["url"];

date_default_timezone_set('Europe/Budapest');

$date = date("Y.m.d. H:i:s GMT", time());

$felhasznalo = "XXXXXXXX";

$jelszo = "XXXXXXX";

$adatbazis = "XXXXXXX";

$kapcsolat = @mysql_connect( "XXXXXXX.XXXXXXXX.XX" , $felhasznalo, $jelszo);

if ( ! $kapcsolat ) {

die ( "Nem lehet kapcsolódni a Mysql kiszolgálóhoz !" .mysql_error() );

}

@mysql_select_db( $adatbazis )

or die ("Nem lehet megnyitni az adatbázist".mysql_error() );


$eredmeny = mysql_query( "SELECT * FROM url WHERE rand='$random_chars'");

$sorokszama = mysql_num_rows( $eredmeny);

mysql_close ( $kapcsolat );

} while ($sorokszama < "1");

$kapcsolat = @mysql_connect( "XXXXXXXX.XXXXXXXX.XXX" , $felhasznalo, $jelszo);

if ( ! $kapcsolat ) {

die ( "Nem lehet kapcsolódni a Mysql kiszolgálóhoz !" .mysql_error() );

}

@mysql_select_db( $adatbazis )

or die ("Nem lehet megnyitni az adatbázist");


$parancs = "INSERT INTO url ( url , datum , rand )

VALUES ( '$url', '$date' , '$random_chars' )";

mysql_query( $parancs , $kapcsolat )

or die ( "INSERT hiba ".mysql_error() );


mysql_close ( $kapcsolat );

print " [link]

}

?>



2012. jún. 2. 21:47
 1/4 anonim ***** válasza:

így ránézésre:


a mysql_connect és a mysql_select_db elég egyszer, a kód elején és egy mysql_close a végén, nem kell minden egyes generált kódnál, stb. bezárni és újracsatlakozni


illetve


while ($sorokszama < "1")


helyett


while ($sorokszama > 0)

2012. jún. 3. 00:25
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
uramisten :D van még hova fejlődni
2012. jún. 3. 01:12
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
Kösz közben mi is rájöttünk ,hogy while ($sorokszama > 0) ezzel volt a probléma köszönöm a választ.
2012. jún. 3. 10:29
 4/4 anonim ***** válasza:
Az se lenne rossz ötlet ha nem csatlakoznál az adatbázishoz a ciklus minden lefutásánál, hacsak nincs ennek valami különös oka.
2012. jún. 3. 11:52
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!