Autor Zpráva
opicakuz
Profil
Ahoj,
jsem s php zacatecnik, tak na me prosim opatrne. :-) Udelal jsem si na web nahodny vypis obrazku, pod kterymi je nejaky nadpis clanku na ktere budou odkazovat.

Na co jsem neprisel?

1) Chtel bych, aby se vypisovaly nahodne, ale zaroven aby se neobjevily dva stejne.
2) Obcas se misto obrazku s textem zobrazi pouze prazdny div.


Phpko vypada takto:

<?php
$srcArr = array();

$srcArr[] = array('link' => "http://opicakuz.cholerik.cz", 'img' => "/images/pata_1.jpg", 'alt' => "Pata 1", 'title' => "Opicakuz's Ideas Website");
$srcArr[] = array('link' => "http://oddil.tulaci.eu", 'img' => "/images/pata_2.jpg", 'alt' => "Pata 2", 'title' => "MOP Tuláci Malešice");
$srcArr[] = array('link' => "http://horydoly.cz", 'img' => "/images/pata_3.jpg", 'alt' => "Pata 3", 'title' => "Horydoly.cz brzy v novém kabátě");
$srcArr[] = array('link' => "http://www.koupani.cz", 'img' => "/images/pata_4.jpg", 'alt' => "Pata 4", 'title' => "Koupání.cz bude brzy zprovozněno");
$srcArr[] = array('link' => "http://opicakuz.hu.cz", 'img' => "/images/pata_5.jpg", 'alt' => "Pata 5", 'title' => "Opicakuz Personal Website");
$srcArr[] = array('link' => "http://nic.cz", 'img' => "/images/pata_6.jpg", 'alt' => "Pata 6", 'title' => "Nic tu není, nebo ano?");
$srcArr[] = array('link' => "http://facebook.com/horydolycz", 'img' => "/images/pata_7.jpg", 'alt' => "Pata 7", 'title' => "Facebook Horydoly");
$srcArr[] = array('link' => "http://facebook.com/desitkacz", 'img' => "/images/pata_8.jpg", 'alt' => "Pata 8", 'title' => "Facebook desítky již s novou adresou");
?>  

A obrazky se vypisuji sem: desitka.cz/test.php

Kod je na to tento:
 <div id="servers-promo-box">
 
 
 
<?php
include "srcfile.php";

$index = rand(0,count($srcArr));
 echo '<div id="servers-promo-1"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';


?> 

<?php
include "srcfile.php";

$index = rand(0,count($srcArr));
 echo '<div id="servers-promo-2"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';
?> 

<?php
include "srcfile.php";

$index = rand(0,count($srcArr));
 echo '<div id="servers-promo-3"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';
?> 

<?php
include "srcfile.php";

$index = rand(0,count($srcArr));
 echo '<div id="servers-promo-4"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';
?> 

</div>



Diky moc za vsechny odpovedi!

Moderátor Majkl578: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
opicakuz
Profil
A nebo mate nejaky jiny script, ktery by sel pouzit?
Joker
Profil
opicakuz:
1) Chtel bych, aby se vypisovaly nahodne, ale zaroven aby se neobjevily dva stejne.
Šlo by místo náhodného čísla nejdřív proházet pole funkcí shuffle a potom vypisovat prvky postupně od začátku.
Budou náhodně a každý jen jednou.

2) Obcas se misto obrazku s textem zobrazi pouze prazdny div.
To způsobuje to rand(0,count($srcArr));, protože 0 až count(pole) je o 1 prvek víc, než v tom poli je, má to být 0 až count(pole)-1.
Nicméně výše uvedené řešení by odstranilo i tohle.
opicakuz
Profil
Děkuji, pokusím se to nějak vyřešit pomocí toho shuffle.
opicakuz
Profil
Tak po mem umornem snazeni jsem na to neprisel... :( V php jsem opravdu zacatecnik. Mohl byste sem prosim hodit spravne reseni? Diky
Joker
Profil
opicakuz:
V mém předchozím příspěvku je odkaz na manuál k funkci shuffle, v něm je i příklad, stačí jinak naplnit pole a místo foreach vypsat jen prvních pár a bude to ono.

Kdyžtak v čem přesně je problém? Připadá mi to vcelku triviální.
opicakuz
Profil
Problém mám v neporozumění php. Teprve se učím opravdové základy a až nyní čtu článek o proměnných... :|

Konkrétní problém mám zde:
$numbers = range(1, 20);

Jak v 1. souboru php (z kterého se vybírají náhodné obrázky) označím danné řádky čísly (1,20)?

Omluvte prosím moji neznalost.
Joker
Profil
opicakuz:
To je jen vytvoření toho pole, místo toho může být to, co je na začátku kódu v prvním příspěvku, do 12. řádku.
Potom to shuffle
a potom zase to samé jako v 1. příspěvku, akorát $index nebude náhodné číslo, ale 0, 1, 2,…
opicakuz
Profil
Aha, už tomu rozumím podstatně lépe. Děkuji vám ještě jednou.
opicakuz
Profil
Něco píšu blbě... S největší pravděpodobností mě teď budete mít za blbce, ale nevím co dělat.

<?php
include "srcfile.php";
$index = rand(0,count($srcArr));
 echo '<div id="servers-promo-1"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';

shuffle($index); 
 {
    echo "$index";
}
$index = rand(0,count($srcArr)-1);
 echo '<div id="servers-promo-2"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';

shuffle($index);
 {
    echo "$index";
}

$index = rand(0,count($srcArr)-1);
 echo '<div id="servers-promo-3"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';
shuffle($index);
 {
    echo "$index";
}


$index = rand(0,count($srcArr)-1);
 echo '<div id="servers-promo-4"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';


shuffle($index);
 {
    echo "$index";
}
?>  
tiso
Profil
opicakuz:
1. do toho poľa si pridaj ešte to prázdne políčko (nejak špeciálne), aby si tam mal 9 prvkov
2. potom ho cez shuffle zamiešaj (stačí raz)
3. následne v cykle (foreach) vypíš čo potrebuješ. Naštuduj si ten cyklus, ideálne aj niečo viac, napríklad zo seriálu o PHP.
opicakuz
Profil
Takže takto?

<?php
include "srcfile.php";



$index = rand(0,count($srcArr));
 echo '<div id="servers-promo-1"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';

shuffle($index);
foreach ($index as $index)
 {
    echo "$index";
}



$index = rand(0,count($srcArr)-1);
 echo '<div id="servers-promo-2"><a href="'.$srcArr[$index][link].'"><img src="'.$srcArr[$index][img].'" alt="'.$srcArr[$index][alt].'" width="200" height="150"></a><h4><strong>'.$srcArr[$index][title].'</h4></strong></p></div>';


atd. atd.




Já těm věcem opravdu nerozumím. Tuhle funkci dělám jednorázově a php se teprve začínám učit.

PS: Na tom linuxsoft.cz/php o shuffle nic není. Když to zadám do hledače, tak na mě vybafne nějaký mp3 player a Java - kontejnery III
tiso
Profil
opicakuz: takto veru nie.
Na tom linuxsoft.cz/php o shuffle nic není
Ja som nič také ani nepísal, písal som aby si si tam naštudoval ten cyklus. Funkcia shuffle() slúži na náhodné zamiešanie poľa, takže jeho prvky sú v náhodnom poradí. Použitie rand() na výber náhodného indexu tam máš navyše. Za prvé tie prvky už náhodne zoradené sú (cez shuffle()) a stačí ich vypísať, a za druhé takto sa ti môžu obrázky opakovať.

Já těm věcem opravdu nerozumím. Tuhle funkci dělám jednorázově a php se teprve začínám učit.
Tak sa uč. Ten seriál je veľmi dobrý začiatok. Z hotového skriptu sa nenaučíš skoro nič, viac sa naučíš, keď si ho vytvoríš sám. Základné pravidlo: nepoužívaj Ctrl+C a Ctrl+V - je to znamenie toho, že máš použiť cyklus, alebo vytvoriť funkciu/metódu/premennú…
opicakuz
Profil
Ja bych nekopiroval, ale sefik to chce mit na stole do konce tydne...
tiso
Profil
opicakuz: a? To má byť nejaký argument? Povedz mu že to nevieš spraviť, alebo že si lenivý sa učiť, alebo si to nechaj spraviť za odmenu v sekcii Práce a zakázky.

A čo sa toho kopírovania týka, mal som na mysli niečo iné.
opicakuz
Profil
Tak jsem to nakonec poresil trochu jinak. Jen pro zajimavost:

<?php
include "srcfile.php";

// pocet odkazu v poli
$poc = count($srcArr);
// kolik chci vygenerovat nahodnych odkazu
$kolik = 4;
$odk = array_rand($srcArr,$kolik);

for($pom=0;$pom<$kolik;$pom++):
    echo "<div id='servers-promo-".$pom."'><a href='".$srcArr[$odk[$pom]][link]."'><img src='".$srcArr[$odk[$pom]][img]."' alt='".$srcArr[$odk[$pom]][alt]."' width='200' height='150'></a><h4><strong>".$srcArr[$odk[$pom]][title]."</h4></strong></p></div>\n";
endfor;
?>
tiso
Profil
opicakuz: s cyklom foreach by si to mal jednoduchšie.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0