Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 19:28 Der er 44 kommentarer og
1 løsning

chekke text i variabel (array)

jeg har en masse adresser der bliver hentet ind i en variabel via en array.

men nogle af adresserne ender på noget andet end jpg,jpeg eller gif.
hvis de filendelser dukker op skal jeg have den til at køre mit ramdom script igen.

men kan ikke finde ud af at få den til at kigge på variablens indhold
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 19:37 #1
$s = "abekat.giff";

if (eregi('\.(gif|jpg|jpeg)$',$s)) {
  // ok
} else {
  // vi prøver igen
}
Avatar billede mr.meincke Nybegynder
04. januar 2004 - 19:37 #2
<?
$variabel = "exp.gif";

if (substr($variabel, strlen($variabel)-4, 4) == ".jpg" || substr($variabel, strlen($variabel)-4, 4) == ".gif" || substr($variabel, strlen($variabel)-5, 5) == ".jpeg") {
  // Variblen ender på jpg, jpeg eller gif
} else {
  // Variblen ender ikke på jpg, jpeg eller gif
}
?>
Avatar billede mr.meincke Nybegynder
04. januar 2004 - 19:37 #3
Det var så den grimme måde
Avatar billede mr.meincke Nybegynder
04. januar 2004 - 19:38 #4
erikjacobsen >> Takker, der lærte du lige en php-newb lidt mere :D
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 19:51 #5
underligt, begge forslag giver intete resultat.

der bliver slet ikke vist nogle billeder nu :'(
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:01 #6
har sat det sådan op:

function random() {
$s = "$random";
if (eregi('\.(gif|jpg|jpeg)$',$s)) {
echo '<img SRC="'.$linklist[$random].'">';
} else {
random();
}}
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:03 #7
Men hvor kommer $random fra?
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:06 #8
det er den random funktion der vælger en fil:

mt_srand((double)microtime()*1000000);
$random = mt_rand(0,$num_rows);
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:11 #9
Hvis du vil på denne måde, så skal du jo lave en ny random hver gang ;)
Avatar billede tefcke Nybegynder
04. januar 2004 - 20:12 #10
<?php
do {
    $s = //get random file
} while ( !eregi('\.(gif|jpg|jpeg)$',$s) )
// Nu indeholder $s filnavnet
?>
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:12 #11
ohh, er ret noob til php. detter er faktisk mit første projekt :S

nogel forslag??
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:14 #12
har prøvet dette. syntes selv det brude virke.

men det gør det ik :S

function random() {
mt_srand((double)microtime()*1000000);
$random = mt_rand(0,$num_rows);
$s = "$random";
if (eregi('\.(gif|jpg|jpeg)$',$s)) {
echo '<img SRC="'.$linklist[$random].'">';
} else {
random();
}}

så høre den da random funktionen hver gang ikke???
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:17 #13
Det var bedre men mon ikke
  $s = "$random";
skal være
  $s = $linklist[$random];
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:21 #14
stadig samme resultat :(

det ligger her: http://www.queze.dk/php/mysql.php

i får lige hele koden hvis det kan hjælpe:

<?
$conn = mysql_connect("xxxxxx", "xxxxxx", "xxxxxx");
mysql_select_db("xxxxxx");

$result_tabel = mysql_query("SELECT * FROM sslinks") or die(mysql_error());
while ($row = mysql_fetch_array($result_tabel)) {
$linklist[] = $row['link_url'];
}

$result_antal = mysql_query("SELECT COUNT(*) FROM sslinks") or die(mysql_error());
$num_rows = mysql_result($result_antal, 0);

function test() {
mt_srand((double)microtime()*1000000);
$random = mt_rand(0,$num_rows);
$s = $linklist[$random];
if (eregi('\.(gif|jpg|jpeg)$',$s)) {
echo '<img SRC="'.$linklist[$random].'">';
} else {
test();
}}

mysql_close();
?>
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:26 #15
hmm nu er der jo et nyt problem!!!!!

hvis den køre den random komando hver gang man åbner siden hvor dette script ligger på går det galt.

det er meningen dette skal ende med et dagens billede. altså kun skifte hver 24'ende time....

kan man blande så billedet kun skifter hvert 24'ende time eller hvis det ikke ender jpg, jpeg eller gif???
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:28 #16
Denne virker. Du kan se de fejl du lavede. Den laver ikke "dagens billede", men
det kan vi så fikse senere:

<?
$linklist[] = "abc.jpg";
$linklist[] = "abc.jpg";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpg";


$num_rows = count($linklist);

function test() {
global $linklist,$num_rows;
mt_srand((double)microtime()*1000000);
$random = mt_rand(0,$num_rows);
print "Prøver $random dvs.  $linklist[$random]\n";
$s = $linklist[$random];
if (eregi('\.(gif|jpg|jpeg)$',$s)) {
echo '<img SRC="'.$linklist[$random].'">';
} else {
test();
}}

test();
?>
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:36 #17
oki nu køre det. men hvorfor
$linklist[] = "abc.jpg";
$linklist[] = "abc.jpg";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpgx";
$linklist[] = "abc.jpg";
????

bare for at være lidt besværlig. kan man så i samme random funktion hente den der hedder link_name med? så man kan få vist navn på billedet?

tusind tak for hjælpen indtil videre.
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:40 #18
Fordi jeg ikke gider lave en database for at hjælpe dig ;)
Hvad er dit link_name for noget?
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:48 #19
øh, har allerede en data´base den henter links fra....

der skete intet da jeg slettede de linier.. hvad gjorde de?

link_name er navnet på billedet.

der er vidst en fejl. når random funktionene finder et billede sætter den .jpg på alle. så hvis den finder en gif fil, viser den det fine hvide billede med det røde kryds :P
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 20:51 #20
skulle bare fjerne $num_rows = count($linklist); så virker det med gif :S
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:52 #21
Hvis link_name er et felt i databasen, kan du jo bare gemme det på samme måde
i sit eget array, og bruge det på ganske samme måde.
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:05 #22
henter her:
$result_name = mysql_query("SELECT * FROM sslinks") or die(mysql_error());
while ($row_name = mysql_fetch_array($result_name)) {
$linklist_name[] = $row_name['link_name'];
}

skriver det her:
echo $linklist_name[$random];

hvis jeg skifter $random ud med et tal virker det. hvorfor gør det ikke det med random?
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:14 #23
Som du skriver det her har $random ikke en værdi. Det er svært at
finde en fejl uden at se koden. Du kan nu nøjes med et udtræk for at
finde både link_url og link_name
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:14 #24
....med eet udtræk...
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:24 #25
okay, har fået det samlet til et udtræk, tror det var dette du mente!?


$result = mysql_query("SELECT * FROM sslinks") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$linklist_url[] = $row['link_url'];
$linklist_name[] = $row['link_name'];
}

$result_antal = mysql_query("SELECT COUNT(*) FROM sslinks") or die(mysql_error());
$num_rows = mysql_result($result_antal, 0);

function test() {
global $linklist_url,$num_rows;
mt_srand((double)microtime()*1000000);
$random = mt_rand(0,$num_rows);
$s = $linklist_url[$random];
if (eregi('\.(gif|jpg|jpeg)$',$s)) {
echo '<img SRC="'.$linklist_url[$random].'">$linklist_name[$random]';
} else {
test();
}}

test();


mysql_close();
?>

men prøv at gå ind på http://www.queze.dk/php/mysql.php der hvor navnet skal væres tår der: $linklist_name[$random] :S
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:28 #26
echo '<img SRC="'.$linklist_url[$random].'">'.$linklist_name[$random];
Avatar billede Slettet bruger
04. januar 2004 - 22:32 #27
Det hele det virker da fint.. Bortset lige fra at der hele tiden står $linklist_name[$random]
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:34 #28
erik med den linie der viser den kun billedet. ingen tekst :(

wollsen ja etfer hånden gør det... men mangler stadig at få den til kun at skifte en gang hver 24'ende time
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:36 #29
Og
global $linklist_url,$linklist_name,$num_rows;
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:41 #30
wee nu kør det.

så er der kun mit sidste spørgsmål.

hvordan får jeg den til kun at skifte klokken 24:00/00:00 hver nat??

nok et lidt for stort start projekt jeg har kastet mig ud i her
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:43 #31
Det er så bare det næste. En lidt sjov måde er at sætte dit random seed
afhængig af datoen. Så vil den på samme dag altid ramme det samme billede.
Prøv

mt_srand(0+date("Ymd"));
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:46 #32
oki. kan man ikke lave så den bare tager en tilfældig hvert 24'ende time??
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:48 #33
Den vil tage en tilfældig. Prøv. Og kom så om et par dage, så kan vi sagtens
gøre dit script både hurtigere og mere lækkert ;)
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:55 #34
oki takker for hjælpen indtil videre.

har lært en slat nu :D

vil prøve at lave lidt forskelligt med de kommandoer jeg kan nu :P

godt nolge gidder hjælpe os noobs :D
Avatar billede epo_blackdevil Nybegynder
04. januar 2004 - 22:56 #35
forresten smid lige et svar
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 22:57 #36
Du må gøre med dine point hvad du vil - men kom igen om et par dage,
hvis det virker, så kan det vi lige skære lidt ned på det. Jeg kan ikke
rigtig forsvare at tage point for det som det står ;)
Avatar billede epo_blackdevil Nybegynder
05. januar 2004 - 16:20 #37
hey ige, vender til bage allerede. da siden ikke virker idag.

hvis jeg skifter:
mt_srand(0+date("Ymd"));
ud med
mt_srand((double)microtime()*1000000);
virker siden.

men så skifter den konstant.

arg. nogle forslag?


har dog fået tilføjet så hvis billedet er berede end 690 bliver det skalleret ned. så det går fremad. men den random funktion driller.
det skal så lige siges random funktionen ikke virkede før jeg rodede med det, så jegh ar ikke fucket noget op (håber jeg) det virkde i går aftes da jeg lukkede ned.

koden er her:
<?
$conn = mysql_connect("xxxxxx", "xxxxxx", "xxxxxx");
mysql_select_db("xxxxxx");
$result = mysql_query("SELECT * FROM sslinks") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$linklist_url[] = $row['link_url'];
$linklist_name[] = $row['link_name'];
}
$result_antal = mysql_query("SELECT COUNT(*) FROM sslinks") or die(mysql_error());
$num_rows = mysql_result($result_antal, 0);
function test() {
global $linklist_url,$linklist_name,$num_rows;
mt_srand((double)microtime()*1000000);
$random = mt_rand(0,$num_rows);
$s = $linklist_url[$random];
if (eregi('\.(gif|jpg|jpeg)$',$s)) {
$size = getimagesize($linklist_url[$random]);
if($size[0] > 690){
echo '<p align="center">'.$linklist_name[$random].'<br><br><img SRC="'.$linklist_url[$random].'" width="690">';
} else {
echo '<p align="center">'.$linklist_name[$random].'<br><br><img SRC="'.$linklist_url[$random].'">';
}
} else {
test();
}}
test();
mysql_close();
?>



siden ligger her:
http://www.queze.dk/php/dagensbillede.php
Avatar billede erikjacobsen Ekspert
05. januar 2004 - 18:34 #38
Hvad er det der sker ved
  mt_srand(0+date("Ymd"));
Det er lidt tamt bare at få at vide at det ikke virker. Det kan jeg ikke
rigtig bruge til noget.
Avatar billede epo_blackdevil Nybegynder
05. januar 2004 - 18:54 #39
hmm. hvad kan jeg sige?

når man forsøger at åbne siden siger den enten at siden ikke findes eller noget med. zero data recieved.
Avatar billede erikjacobsen Ekspert
05. januar 2004 - 19:14 #40
Ok, men det skal jo virke. Selve den sætning er der ikke noget i vejen med.
Men der er, som jeg sagde i går, en bedre måde at gøre det på. I stedet for
at tage alle filnavne med i arrayet, og vælge til man finder et lovligt,
skal du kun tage lovlige filnavne med. Jeg har ikke lige din database, men
du kan sikkert blive inspireret af dette:

<?
$db[] = "abc1.jpg";
$db[] = "abc2.jpg";
$db[] = "ab3c.jpgx";
$db[] = "abc4.jpgx";
$db[] = "ab5c.jpgx";
$db[] = "abc6.jpgx";
$db[] = "abc7.jpgx";
$db[] = "abc8.jpg";

foreach ($db as $s) {  // simuler databaseudtræk
  if (eregi('\.(gif|jpg|jpeg)$',$s)) {
    $linklist[]=$s;    // put kun lovlige file i $linklist
  }
}

$num_rows = count($linklist);

mt_srand(0+date("Ymd"));
$random = mt_rand(0,$num_rows);
$img = $linklist[$random];

print "$img\n";

?>
Avatar billede epo_blackdevil Nybegynder
05. januar 2004 - 23:17 #41
har måske fundet problemet... hver gang den skal vise en gif fil, siger den billedet ikke findes. så er ved at omdøbe alle gif filer til jpg. så håber jeg det var der problemet lå..

har desuden fået lavet en funktion nu så hvis billedet er for bredt bliver det scalleret ned :P shit det køre for den noob her. :D
Avatar billede erikjacobsen Ekspert
05. januar 2004 - 23:32 #42
Navnet på billedet kan i sig selv ikke være et problem. Måske er det slet
ikke gifbilleder. Måske er der rod med store og små bogstaver.
Avatar billede epo_blackdevil Nybegynder
06. januar 2004 - 11:40 #43
har nu omdøbt alle gif filer til jpg. og nu kommer der ikke fejl mere.

meget mystisk
Avatar billede epo_blackdevil Nybegynder
06. januar 2004 - 16:22 #44
jeg er nu endt med dette: http://www.queze.dk/humor/random.php

har lavet det om til en der viser et tilfældigt billede istedet for at skifte hver 24'ende time...

her er min kode:

<?
    $conn = mysql_connect("localhost", "queze", "T0t4lS3cr3tP4ssw0rd");
    mysql_select_db("queze");
    $result = mysql_query("SELECT * FROM sslinks") or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
    $linklist_url[] = $row['link_url'];
    $linklist_name[] = $row['link_name'];
    $linklist_totalrate[] = $row['link_totalrate'];
    $linklist_numvotes[] = $row['link_numvotes'];
    $linklist_hits[] = $row['link_hits'];
    $linklist_id[] = $row['link_id'];
    }
?>
<table border="0">
<tr>
<td width="690">
<font face="arial" size="2">
<?
    include('http://www.queze.dk/include/infobilled.php')
?> Tilfældigt billede<br><br>
</td>
</tr>
<tr>
<td width="690">
<font face="arial" size="2">
<?
    $result_antal = mysql_query("SELECT COUNT(*) FROM sslinks") or die(mysql_error());
    $num_rows = mysql_result($result_antal, 0);
    function test() {
    global $linklist_url,$linklist_name,$num_rows,$random,$linklist_id,$linklist_hits;
    mt_srand((double)microtime()*1000000);
    $random = mt_rand(0,$num_rows);

$id = $linklist_id[$random];
$hits = $linklist_hits[$random];
$hits++;
mysql_query("UPDATE sslinks SET link_hits = '$hits' WHERE link_id = '$id'");

    $s = $linklist_url[$random];
    if (eregi('\.(jpg|jpeg)$',$s)) {
    $size = getimagesize($linklist_url[$random]);
    if($size[0] > 690){
    echo '<p align="center">'.$linklist_name[$random].'<br><img SRC="'.$linklist_url[$random].'" width="690">';
    } else {
    echo '<p align="center">'.$linklist_name[$random].'<br><img SRC="'.$linklist_url[$random].'">';
    }} else {
    test();
    }}
    test();

?>
</td>
</tr>
<tr>
<td width="690">
<font face="arial" size="2">

<?
global $linklist_hits;
    if ($linklist_totalrate[$random] > 0) {
    echo '<p align="center">Gennmsnitlig stemt: '.$linklist_totalrate[$random]/$linklist_numvotes[$random].', Hits: '.$linklist_hits[$random].'';
    } else {
    echo '<p align="center">Ingen stemmer, Hits: '.$linklist_hits[$random].'';
    }
?>
</td>
</tr>
</table>
<?
    mysql_close();
?>
<?
include('http://www.queze.dk/include/infobilled.php')
?><font face="arial" size="2"><a href="random.php">Nyt billede</a>

er selv ret godt tilfreds efter jeg ikke har arbejdet med php i mere end 3 dage.

har fået tilføjet hits, så når et billed vises bliver der lagt et hit til i databasen. og det brugerne gennemsnitligt har stemt på billedet bliver også vist.

nu skal jeg bare ha lavet så man kan stemme under billedet.
Avatar billede epo_blackdevil Nybegynder
13. januar 2004 - 12:26 #45
så køre det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester