[PHP] Variabelen counter

Pagina: 1
Acties:
  • 62 views sinds 30-01-2008

  • SamuraiP1zzaCat
  • Registratie: Augustus 2005
  • Laatst online: 20-04 20:32
hi, ik zit met het volgende probleem. Ik ben niet zo goed in counters maken :( Ik wil een foto 5x laten zien. Maar de bestandsnaam van die foto die uit de database komt, moet in een variabele. Dus ik moet 5verschillende variabele hebben gevuld met 5 verschillende bestandsnamen
dus bijv.

$var1 = bestand.jpg
$var2 = bestand2.jpg

het gaat om deze: $obj['image'] daar moeten dus 5 variabelen van gemaakt worden

Dit heb ik tot dusver. maar het werkt niet echt :(

hoop dat iemand mij kan helpen :)
<?php
$query=mysql_query("SELECT * FROM user WHERE stemmen > 0 ORDER BY rating DESC LIMIT 5") or die (mysql_error());
while ($obj = mysql_fetch_assoc($query)) {

for ($i=1; $i<6; $i++){
}
?>

[img]"../Site/<?php[/img]" width="160" height="120">

<?php echo $obj['image'];

} ?>

[ Voor 13% gewijzigd door SamuraiP1zzaCat op 25-11-2005 15:42 ]


  • sariel
  • Registratie: Mei 2004
  • Laatst online: 24-03 12:54
Kan je iets duidelijker uitleggen wat je bedoelt? Ik heb wat moeite met het begrijpen van de bedoeling.
Heb het niet over variabelen met verschillende namen, counters, etc, geef gewoon een globale omschrijving van wat de bedoeling is.

Copy.com


Verwijderd

je moet die html voor je image in je while loop zetten. Onder andere. D'r klopt wel meer niet aan je code

Verwijderd

PHP:
1
2
3
for ($i=1; $i<6; $i++){
echo $obj[$i]['image']; 
}


je moet wel de index mee nemen anders komt het niet goed ;)

overigens begin je meestal met het tellen op 0 ipv 1

[ Voor 102% gewijzigd door Verwijderd op 25-11-2005 15:49 . Reden: wat vriendelijker gemaakt :D ]


  • sariel
  • Registratie: Mei 2004
  • Laatst online: 24-03 12:54
Is dit misschien wat je bedoelt?

PHP:
1
2
3
4
5
6
7
8
9
<?php
$query = "SELECT * FROM user WHERE stemmen > 0 ORDER BY rating DESC LIMIT 5";
$res=mysql_query($query) or die (mysql_error());
while ($obj = mysql_fetch_assoc($res)) {
   echo "[img]\"../Site/"".$obj['image']."\"[/img]<br>";
   echo "Rating: ".$obj['rating']."<br>";
   echo "Stemmen: ".$obj['stemmen']."<br>";
}
?>

Copy.com


Verwijderd

Waar heb je die forlus voor nodig? Volgens mij staat de oplossing hierboven. In $obj['image'] staat de link naar het bestand neem ik aan?

  • SamuraiP1zzaCat
  • Registratie: Augustus 2005
  • Laatst online: 20-04 20:32
kom er nog steeds niet uit :(

http://stud.cmd.hro.nl/0778490/jaar2/TUI/Mail/verstuur.php

hier kunnen jullie het zien.

die bestand naampjes moeten in 5 verschillende variabelen komen..

dus $var1 $var2 etc...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Geef nu eens duidelijk aan wat je precies wil en wat niet lukt. Iedereen is hier maar een potje aan het raden, maar feitelijk kunnen we je niet helpen. Welke uitvoer wil je krijgen? Wat krijg je nu? Die link doet ook niks trouwens.

Lees ook P&W FAQ - De "quickstart" even door en post wat meer informatie, want op deze manier heeft dit topic geen zin.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • SamuraiP1zzaCat
  • Registratie: Augustus 2005
  • Laatst online: 20-04 20:32
ok, ik doe een while loop,
die haalt 5x een waarde uit de database:

$obj['image']
die echoed die 5x, dus er komen 5 fototjes tevoorschijn

$obj['image'] houd een waarde vast, bijv. foto1.jpg

feitelijk moet die waarde in een variabele gezet worden.

Dit lukt mij dus niet

hoe zet ik $obj['image'] in een $var ? ik kan niet zeggen

$var1 = $obj['image'];
$var2 = $obj['image'];
etc.

dus er moet een soort counter komen.

in de while loop moeten 5 variabelen aangemaakt worden met elk een andere in houd, namelijk de bestandsnaam.

ben al uren bezig |:(

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:32

Creepy

Tactical Espionage Splatterer

Uren bezig? Klinkt alsof je wilt wat bogusje al gezegd heeft. Maak een array aan, zet een teller in je while loop die elke iteratie ophoogt ($i++) en dat gebruikt je als index voor je array. Vervolgens aan $array[$i] je image toekennen. Lijkt me helemaal zo moeilijk niet?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • SamuraiP1zzaCat
  • Registratie: Augustus 2005
  • Laatst online: 20-04 20:32
ja dat lukt me dus niet :X

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

$obj['image'] is nà die while loop altijd hetzelfde. Je zal dus ìn die while loop een array moeten vullen. (5 variabelen met dezelfde naam en een nummertje erachter is nooit netjes, daar heb je arrays voor.)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • PiweD
  • Registratie: Augustus 2004
  • Niet online

PiweD

Redacteur
sariel schreef op vrijdag 25 november 2005 @ 15:50:
Is dit misschien wat je bedoelt?

PHP:
1
2
3
4
5
6
7
8
9
<?php
$query = "SELECT * FROM user WHERE stemmen > 0 ORDER BY rating DESC LIMIT 5";
$res=mysql_query($query) or die (mysql_error());
while ($obj = mysql_fetch_assoc($res)) {
   echo "[img]\"../Site/".$obj['image']."\"[/img]<br>";
   echo "Rating: ".$obj['rating']."<br>";
   echo "Stemmen: ".$obj['stemmen']."<br>";
}
?>
ik heb er even een overbodige qoute uitgehaald ;)

so·wie·so (bijwoord) - 1 hoe dan ook


Verwijderd

Creepy schreef op vrijdag 25 november 2005 @ 16:46:
Uren bezig? Klinkt alsof je wilt wat bogusje al gezegd heeft. Maak een array aan, zet een teller in je while loop die elke iteratie ophoogt ($i++) en dat gebruikt je als index voor je array. Vervolgens aan $array[$i] je image toekennen. Lijkt me helemaal zo moeilijk niet?
Dat kan toch veel makkelijker?
PHP:
1
2
3
4
5
6
7
8
9
$query = "SELECT * FROM user WHERE stemmen > 0 ORDER BY rating DESC LIMIT 5";
$res=mysql_query($query) or die (mysql_error());
$var=array();
while ($obj = mysql_fetch_assoc($res)) {
   echo "[img]\"../Site/".$obj['image']."\"[/img]<br>";
   echo "Rating: ".$obj['rating']."<br>";
   echo "Stemmen: ".$obj['stemmen']."<br>";
   $var[]=$obj['image'];
}

Wat wil je eigenlijk met die variabelen gaan doen?

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
echo $obj['image'] is het zelfde als $var1 = $obj['image']; echo $var1;.

Met het verschil dat het laatste trager is omdat er een kopie van een variabele wordt gemaakt.

[ Voor 9% gewijzigd door Tanuki op 25-11-2005 17:52 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • aex351
  • Registratie: Juni 2005
  • Laatst online: 23:53

aex351

I am the one

Ik denk dat het makkelijker is om met een array te werken dan 5 afzonderlijke vars. Ik hoop dat je er iets van begrijpt.

Bekijk ook eens de handleiding op php.net over loops/vars/array's

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//vars
$afbeeldingen = array() ; 

//mysql - query
$query = mysql_query(" SELECT * 
                       FROM user 
                       WHERE stemmen > 0 
                       ORDER BY rating 
                       DESC LIMIT 5
                    ") 
                   or die (mysql_error()); 

//php / mysql - extract data en stop in array
while ( $output = mysql_fetch_assoc($query) ) {
       for ($i=1; $i<6; $i++){
          //array op nr
          $afbeeldingen[$i] = $output['image'] ;

          //array op naam
          $afbeeldingen[$output] = $output['image']  ;
       } 
}

//html weergeef
 echo $afbeeldingen['1'] ;      //weergeef afbeelding nummer 1
 echo $afbeeldingen['huisje'] ; //weer geef afbeelding met naam huisje (voorbeeld)

?>

[ Voor 18% gewijzigd door aex351 op 25-11-2005 18:01 ]

< dit stukje webruimte is te huur >


Verwijderd

ik vermoed dat je $afbeeldingen[1] moet hebben ipv $afbeeldingen['1']...

  • SamuraiP1zzaCat
  • Registratie: Augustus 2005
  • Laatst online: 20-04 20:32
het lukt me niet, ik geef het op, ik kijk wel of ik het anders kan doen, toch bedankt allemaal

Verwijderd

SamuraiP1zzaCat schreef op vrijdag 25 november 2005 @ 18:06:
het lukt me niet, ik geef het op, ik kijk wel of ik het anders kan doen, toch bedankt allemaal
Waarom lukt het je niet? Iedereen wil je helpen, dan is het een beetje raar als je opeens zegt dat het niet wil... Krijg je een foutmelding of iets dergelijks?

  • SamuraiP1zzaCat
  • Registratie: Augustus 2005
  • Laatst online: 20-04 20:32
ok dan :p

laatste poging :)

dit is het volledige script:

het is de bedoeling dat die 5 plaatjes waarvan de bestandnamen uit de database worden gehaald, in een email gezet worden en verstuurd worden.

onderin kun je de email zien, het werkt allemaal, ik krijg alleen niet die 5 plaatjes erbij.

Het is voor een schoolopdracht.

thnx,

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<?php

if ($_POST["submit"])
{


//db connectie:

mysql_connect("","",""); 
mysql_select_db(" "); 

//de postings ophalen

$username = $_POST['name'];
$password = $_POST['pass'];
$voornaam = $_POST['voornaam'];
$tussenvoegsel = $_POST['tussenvoegsel'];
$achternaam = $_POST['achternaam'];
$adres = $_POST['adres'];
$postcode = $_POST['postcode'];
$woonplaats = $_POST['woonplaats'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$maillist = $_POST['maillist'];
$foto = $_POST['foto'];
$slogan = $_POST['slogan'];

$fotoDB = "user_images/$foto";

$mail1 = $_POST['mail1'];
$mail2 = $_POST['mail2'];
$mail3 = $_POST['mail3'];
$mail4 = $_POST['mail4'];
$mail5 = $_POST['mail5'];
$mail6 = $_POST['mail6'];
$mail7 = $_POST['mail7'];
$mail8 = $_POST['mail8'];
$mail9 = $_POST['mail9'];
$mail10 = $_POST['mail10'];

//een invoer maken van de maillist:
$mailtotal = "$mail1, $mail2, $mail3, $mail4, $mail5, $mail6, $mail7, $mail8, $mail9, $mail10";

//gegevens insert in de db:

mysql_query("INSERT INTO user (name, pass, voornaam, tussenvoegsel, achternaam, adres, postcode, woonplaats, email, tel, stemmen, rating, image, slogan, emails, maillist) VALUES ('".$username."','".$password."','".$voornaam."','".$tussenvoegsel."','".$achternaam."','".$adres."','".$postcode."','".$woonplaats."','".$email."','".$tel."','".$stemmen."','".$rating."','".$fotoDB."','".$slogan."','".$mailtotal."','".$maillist."')") or die(mysql_error());

[b]--------------------------------// top 5 ophalen:----------------------------------------------------------
//vars 
$afbeeldingen = array() ;  

//mysql - query 
$query = mysql_query(" SELECT *  
                       FROM user  
                       WHERE stemmen > 0  
                       ORDER BY rating  
                       DESC LIMIT 5 
                    ");  

//php / mysql - extract data en stop in array 

while ( $output = mysql_fetch_assoc($query) ) { 
       for ($i=1; $i<6; $i++){ 
          
          //array op nr 
          $afbeeldingen[$i] = $output['image'] ; 

          //array op naam 
          //$afbeeldingen[$output] = $output['image']  ; 
       }  
} 

//html weergeef 
echo $afbeeldingen['1'] ;      //weergeef afbeelding nummer 1 


-----------------------------------------------------------------------------------------------------------[/b]


echo "gegevens opgeslagen, mails verstuurd, succes !";

//de email:
$message = '
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Win met Relax-in !</title>
<style type="text/css">
<!--
body {
    background-color: #FFFFFF;
}

.text2 {
    font-family: Arial;
    font-size: 11px;
}

.style1 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
}

a:link {
color: #025A8A;
}

a:visited {
color: #025A8A;
}

a:hover {
color: #025A8A;
text-decoration: none;
}

a:active {
color: #025A8A;
}

.style7 {font-family: Arial, Helvetica, sans-serif; font-size: 14; color: #025A8A; }
.style8 {font-family: Arial, Helvetica, sans-serif; font-size: 14; color: #025A8A; font-weight: bold; }
.style9 {
    color: #025A8A;
    font-weight: bold;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 22px;
}
.style19 {font-size: 20px}
.style20 {font-family: Arial, Helvetica, sans-serif; font-size: 18px; color: #025A8A; font-weight: bold; }
-->
</style></head>
<body>
<table width="368" height="377" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3">[img]"http://stud.cmd.hro.nl/0778490/jaar2/TUI/Mail/boven.jpg"[/img]</td>
  </tr>
  <tr>
    <td width="362" height="172" align="left" valign="top" bgcolor="#FFFFFF"><h4 align="left" class="style7"><br />
      H&eacute;,    </h4>
      <h4 align="left" class="style7"> '.$voornaam.' heeft je zijn ultieme relaxte foto gestuurd.      </h4>
      <p align="left"><span class="style9">        Stem </span><span class="style9">nu</span><span class="style8"> op '.$voornaam.' zijn foto en zorg ervoor <br />
      dat '.$voornaam.' een <span class="style19">mooie reis</span> wint. </span>
      <p align="left" class="style20">Wacht niet langer en stem nu!
      <p align="left" class="style8">Zelf een leuke foto? Surf naar <a href="http://stud.cmd.hro.nl/0778490/jaar2/TUI/Site/index.html" class="style8">www.relax-in.nl</a> en stuur ook uw ultieme relax moment in !</td>
    <td width="365" bgcolor="#FFFFFF"><p class="style1">&nbsp;</p>
    <p>[img]"http://stud.cmd.hro.nl/0778490/jaar2/TUI/Site/'.$fotoDB.'"/><br[/img]
      <br />
      <br />
      <a href="http://stud.cmd.hro.nl/0778490/jaar2/TUI/Site/user.php?SectionMain=Userfriend&name='.$username.'" class="style8">stem</a></p></td>
    <td width="36" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#FFFFFF">[img]"http://stud.cmd.hro.nl/0778490/jaar2/TUI/Mail/top5.jpg"[/img]

[b]------------------------------------------------------------------------------------------------------------------------------

Hier moeten die 5 plaatjes komen !! 

-----------------------------------------------------------------------------------------------------------------------------[/b]


    </td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#FFFFFF">[img]"http://stud.cmd.hro.nl/0778490/jaar2/TUI/Mail/onder.jpg"[/img]</td>
  </tr>
</table>


</body>
</html>


';

//de email versturen:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: win@relax-in.nl' . "\r\n";

        
        mail("$mail1", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail2", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail3", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail4", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail5", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail6", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail7", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail8", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail9", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");
        mail("$mail10", "$voornaam heeft zijn vakantie foto gestuurd !", "$message", "$headers");


 } ?>

[ Voor 20% gewijzigd door SamuraiP1zzaCat op 25-11-2005 18:45 ]


  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 23-04 08:43
Ben ook geen expert maar volgens mij moet je Boland's post nog eens checken.

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Zoiets? De rest van je code is overigens ook behoorlijk aan refactoring toe, maar dat laat ik aan je docent over.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

if ($_POST["submit"])
{

//gegevens insert in de db


//de email:
$message = 'heel verhaal blabla {images} nog een verhaaltje';

//mysql - query 
$query = mysql_query(" SELECT *  
                       FROM user  
                       WHERE stemmen > 0  
                       ORDER BY rating  
                       DESC LIMIT 5 
                    ");  

$images = "";
while ( $output = mysql_fetch_assoc($query) ) { 
    $images .= '[img]"'[/img]';
} 
str_replace('{images}', $images, $message);

//mail versturen
 } ?>

I.p.v. met str_replace te werken kun je ook eerst het eerste gedeelte van de message zetten, dan de images er aanvastplakken, en dan het laatste gedeelte. Maar zoals het script nu is vind ik deze manier iets duidelijker.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • aex351
  • Registratie: Juni 2005
  • Laatst online: 23:53

aex351

I am the one

Je maakt het alleen nog moeilijker voor hem door nog meer functies te gebruiken. Toch blij dat hij mijn stukje code gebruikt :*)

je moet ook geen \r in de headers van je email gebruiken, \r zorgt ervoor dat html vaak niet in de email wilt werken.

[ Voor 32% gewijzigd door aex351 op 25-11-2005 20:07 ]

< dit stukje webruimte is te huur >


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Alleen jammer dat dat stukje nou net niet klopt. Je haalt nl. voor elke rij in het resultaat 5 keer hetzelfde plaatje op en stopt dat in de array. Aan het eind zal de array dus vijf keer het plaatje op plaats 5 bevatten.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
SamuraiP1zzaCat schreef op vrijdag 25 november 2005 @ 18:43:
ok dan :p

laatste poging :)

dit is het volledige script:

het is de bedoeling dat die 5 plaatjes waarvan de bestandnamen uit de database worden gehaald, in een email gezet worden en verstuurd worden.

onderin kun je de email zien, het werkt allemaal, ik krijg alleen niet die 5 plaatjes erbij.

Het is voor een schoolopdracht.

thnx,

PHP:
1
2
3
<?php
snip
 } ?>
Dit komt bij mij zo'n beetje over als: hier m'n lap code, maak het ff af voor me, of los het op, zodat ik met de pluimen kan lopen; en zo werkt het hier niet.
Het is niet de bedoeling dat je hier een hele lap code post, en dat je het dan maar aan anderen overlaat.

[ Voor 82% gewijzigd door whoami op 25-11-2005 20:11 ]

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik wilde ondanks whoami's slotje nog graag even wat toevoegen:
aex351 schreef op vrijdag 25 november 2005 @ 20:06:
je moet ook geen \r in de headers van je email gebruiken, \r zorgt ervoor dat html vaak niet in de email wilt werken.
Volgens de RFC's moet er anders wel degelijk een CRLF aan het eind van elke header staan. :)

[ Voor 10% gewijzigd door NMe op 26-11-2005 10:40 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.