login  Naam:   Wachtwoord: 
Registreer je!
 Forum

random plaatje + tekst (Opgelost)

Offline UpLink - 21/02/2013 18:16
Avatar van UpLink... Beste SiMa's,

Ik ben van plan om iets in elkaar te knutselen (niet voor mezelf).

Nu zit ik met een kleine vraag:

Hoe begin ik het beste aan een script dat een random plaatje (plaatjes heb ik al) uit een map haalt, maar daarbij ook de correcte uitleg bij het plaatje uit de database. Ik weet hoe je de afbeeldingen kan linken in een DB samen met de uitleg, maar het kost nogal wat werk om al die afbeeldingen handmatig in de database toe te voegen (de URL's althans).

Bestaat er een manier om een afbeelding uit een map te selecteren (random natuurlijk) en dan de tekst die erbij hoort uit een DB of een tekst bestand (of een ander formaat) ?

ik hoop dat dit een beetje duidelijk uitgelegd is...

7 antwoorden

Gesponsorde links
Offline vinTage - 21/02/2013 23:15
Avatar van vinTage Nieuw lid Ik weet niet zeker of ik je goed begrijp, maar voor zover ik het denk te begrijpen....

Je hebt een db nodig, met (minimaal) 2 velden, een veld voor het pad naar de image, en een voor de beschrijving, je zult zo dus iig alles handmatig moeten invoeren...

Maar als je nog niets hebt, dan zou je wel met bv PHP.net: readdir alvast je db kunnen vullen met alle paden van je images
  1. <?php
  2. $path= 'map/met/img/';
  3. if ($handle = opendir($path)) {
  4. $values = '';
  5.  
  6. while (false !== ($entry = readdir($handle))) {
  7. if ($entry != "." && $entry != "..") {
  8. $values .= "'".$path.$entry."', <br>\n";
  9. }
  10. }
  11. closedir($handle);
  12.  
  13. echo 'mysql_query("insert into tabel values('.$values.'))';
  14. }
  15. ?>

[lazy]Je moet alleen nog even de laatste komma wegslopen aan het einde van de query[/lazy]
Offline UpLink - 22/02/2013 00:57 (laatste wijziging 22/02/2013 01:00)
Avatar van UpLink ... Merci vinTage,

Zo'n scriptje om de gehele dir met afbeeldingen uit te lezen had ik al, dus die kon ik wel in een array gooien dan. Maar daar zat ik dan vast.

Zal straks eens bekijken om ze in de DB te gooien en van daaruit verder te knoeien.

Alvast bedankt  


Offline Martijn - 22/02/2013 13:10
Avatar van Martijn Crew PHP Dit is een beetje specifiek, maar misschien kun je iets met het voorbeeld. Gaat om de functie glob()
  1. //path to directory to scan. i have included a wildcard for a subdirectory
  2. //get all image files with a .jpg extension.
  3. $images = glob( $_SERVER['DOCUMENT_ROOT']."*/*/*/*.{jpg,jpeg,png}", GLOB_BRACE);
  4. //display images
  5. foreach ($images as $img) {
  6. $img = str_replace($_SERVER['DOCUMENT_ROOT'], "", $img);
  7. echo '<img src="'.$img.'" alt="x" /> ';
  8. }
Offline UpLink - 22/02/2013 14:02
Avatar van UpLink ... Martijn,

Daar heb ik ook al naar gekeken, maar dan zit ik met het probleem dat ik ook tekst aan die afbeelding moet linken die uit een database komt. Het lijkt me dus gemakkelijker om even de directory uit te lezen en die dan in een query te gooien om zo naar een DB weg te schrijven en dan de tekst er maar handmatig bij te gooien.

Alleen heb ik nu het probleem dat zelfs dat niet lukt.
Ik ben van vinTage zijn stukje code uitgegaan en daarop verder gewerkt, maar ik krijg telkens een mysql syntax error:

Foutmelding: Fatal error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query("insert into bord values('./afb/A1D.gif','./afb/C47n.gif','./afb/A23' at line 1 in index.php on line 19

script:

  1. <?php
  2. $path= './dir/';
  3. if ($handle = opendir($path)) {
  4. $values = '' ;
  5. while (false !== ($entry = readdir($handle))) {
  6. if ($entry != "." && $entry != "..") {
  7. $values .= "'".$path.$entry."',";
  8. }
  9. }
  10. closedir($handle);
  11. $qry = 'mysql_query("insert into bord values('.$values.')")';
  12. }
  13. $con = mysql_connect("localhost","gebr","pw");
  14. if (!$con)
  15. {
  16. die('Could not connect: ' . mysql_error());
  17. }
  18. mysql_select_db("db", $con);
  19. mysql_query($qry,$con) or trigger_error( mysql_error( $con ), E_USER_ERROR );
  20. ?>


Ik zie de fout niet...
Offline Martijn - 22/02/2013 14:09
Avatar van Martijn Crew PHP lol
  1. $qry = 'mysql_query("insert into bord values('.$values.')")';
  2. // ...
  3. mysql_query($qry,$con) or trigger_error( mysql_error( $con ), E_USER_ERROR );
  4.  
  5. Maakt samen dit:
  6. mysql_query('mysql_query("insert into bord values('.$values.')")');

Need I say more? 

Offtopic-ish: je geeft de mysql_query() functie als 2e waarde $con mee, dat hoeft niet. De default value is 'de laatste geopende connectie'. En dat is deze.
Offline UpLink - 22/02/2013 14:24 (laatste wijziging 22/02/2013 14:24)
Avatar van UpLink ... Ik heb het momenteel wel klaargespeeld dat hij ze in de database zet...
Maar hij zet ze allemaal in 1 kolom in plaats van elke afbeelding apart.

  1. <?php
  2. $path= './afb/';
  3. if ($handle = opendir($path)) {
  4. $values = '' ;
  5. while (false !== ($entry = readdir($handle))) {
  6. if ($entry != "." && $entry != "..") {
  7. $values .= "".$path.$entry.",";
  8. }
  9. }
  10. closedir($handle);
  11. }
  12. $con = mysql_connect("localhost","...","...");
  13. if (!$con)
  14. {
  15. die('Could not connect: ' . mysql_error());
  16. }
  17. mysql_select_db("...", $con);
  18. mysql_query("INSERT INTO borden (bord) VALUES('.$values.')",$con) or trigger_error( mysql_error( $con ), E_USER_ERROR );
  19. ?>


Ik heb volgende db structuur:

tabel BORDEN met daarin de velden ID, BORD, UITLEG en CAT

het script heeft het volgende gedaan:

maakt nieuw ID en en zet alle afbeeldingen binnen hetzelfde ID... terwijl hij het eigenlijk elke afbeelding op een nieuw ID moet zetten...
Offline Martijn - 22/02/2013 15:42
Avatar van Martijn Crew PHP Wat er nu gebeurd is dat ze allemaal worden opgespaard (zie de punt voor het is-teken op regel 7) en dan in 1x er in gezet op regel 18. Als je wilt dat elke apart wordt ingevoegd, moet je de query in je while zetten ipv erbuiten. Let op! Je connectie hoef je maar 1x te doen, dus die zet je bovenaan (is sowieso een goede gewoonte, in een aparte connect.php en die bovenaan includen/requiren)
Bedankt door: UpLink
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s