Foto's per profiel uploaden en met formulier meesturen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Ray Mond

Ray Mond

30/05/2019 14:44:41
Quote Anchor link
Layout en PHP zijn inderdaad door elkaar, we hebben dit systeem een tijdje terug dus ook zo gekocht, zelf aanpassingen gedaan en naar wens gemaakt nu missen we enkel nog het kunnen selecteren en versturen van foto's, dacht eigenlijk dat dit wellicht wel snel op te lossen was door het gedeelte op front af te sluiten en de rest te gebruiken of een nieuw stukje te maken maar blijkbaar is dat niet zo 'easy'. Probeer dit al tijden op te lossen maar hoe u het net aangeef daar heb ik jammer genoeg zelf geen kaas van gegeten.
 
PHP hulp

PHP hulp

14/11/2024 08:01:28
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 14:56:05
Quote Anchor link
Het lijkt misschien moeilijk, maar als je de basis van PHP kent is het best simpel. Probeer het anders in losse stukken te verdelen:

- Ophalen van foto's voor in een lijst
- Toevoegen van checkboxen
- Afhandeling van de invoer van de checkboxen, als die aangevinkt zijn.
 
Ray Mond

Ray Mond

30/05/2019 16:33:15
Quote Anchor link
Oké, even een update:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--afbeeldingen halen!-->
<?php
$profile_id
= isset($_GET['profile'])?$_GET['profile']:'';
$sql = "SELECT * from user_pictures where user_id = '".$to."'";
$result= $db->query($sql);
$i =1 ;
$main_uri = 'websitelink';
$pre = $main_uri.'controller/images/';
while($row =  $result->fetch_object()){

   echo '  
   <img src="'
.$pre.$row->big.'" width="50" height="50">
   '
;

$i++;
}

?>


Haalt nu de images op, dat werkt perfect, nu dus enkel de vraag nog:
hoe kan ik er nu voor zorgen dat ik images kan meesturen?

Hoeft niet eens met een checkbox.. mag ook dat wanneer foto geselecteerd is dat hij dan een kleurtje krijgt of iets.. alles is welkom :)
Gewijzigd op 30/05/2019 16:33:45 door Ray Mond
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 16:40:11
Quote Anchor link
Checkboxes is het makkelijkst, tenzij je graag een sloot aan Javascript wil gebruiken voor zo een effect.
 
Ray Mond

Ray Mond

30/05/2019 16:43:10
Quote Anchor link
Dat is zeker een punt inderdaad, moet gewoon heerlijk makkelijk zijn.
Nu kan ik natuurlijk er niet zo even een checkbox onder zetten maar moet natuurlijk wel id/afbeelding url halen, toch?
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 17:01:41
Quote Anchor link
Ja, het unieke pictureID van de afbeelding als value.
 
Ray Mond

Ray Mond

30/05/2019 18:05:49
Quote Anchor link
Nu zit ik even vast...

Dit is hoe het was:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<form id="myForm1" method="POST" action="../controller/ajax.php">
                    
                
                <textarea style="width:98%; margin-top:3px;" id="msg-box" maxlength="<?php echo $meta['max_char']; ?>"  name="message" rows="4"></textarea>
                <input id="attachpict" name="attachpict" type="file">


en dan in ajax.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//new upload picture
        $allowedExts = array("gif", "jpeg", "jpg", "png");
        if (isset($_FILES["attachpict"]) ){

        $extension = end(explode(".", $_FILES["attachpict"]["name"]));
    
        if ((($_FILES["attachpict"]["type"] == "image/gif")|| ($_FILES["attachpict"]["type"] == "image/jpeg")|| ($_FILES["attachpict"]["type"] == "image/jpg")|| ($_FILES["attachpict"]["type"] == "image/pjpeg")|| ($_FILES["attachpict"]["type"] == "image/x-png")|| ($_FILES["attachpict"]["type"] == "image/png"))&& ($_FILES["attachpict"]["size"] < 2000000)&& in_array($extension, $allowedExts))
        {
            if ($_FILES["attachpict"]["error"] > 0){
            $r = array('status'=> 'error', 'text'=>"Error: " . $_FILES["attachpict"]["error"]);
            }else{    
                $source_path = $_FILES['attachpict']['tmp_name'];
                $unique = 'attachment/'.md5($msg_id.'_arikkeren').'.'.$extension;
                move_uploaded_file($source_path,$unique);

                $db->query("INSERT INTO message_attachement (`message_id`, `attachment_url`, `mime`) VALUES
                ('".$msg_id."', '".$db->escape_string($unique)."', '".$db->escape_string($_FILES["attachpict"]["type"])."')");
            
    
            }
        }
        
        }


Het is inderdaad heel logisch dat hij daar de attachpict pakt..

Nu gaat dit vast niet werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--afbeeldingen halen!-->
<?php
$profile_id
= isset($_GET['profile'])?$_GET['profile']:'';
$sql = "SELECT * from user_pictures where user_id = '".$to."'";
$result= $db->query($sql);
$i =1 ;
$main_uri = 'http://website';
$pre = $main_uri.'controller/images/';
while($row =  $result->fetch_object()){

   echo '  
   <img img style="width:60px;height:60px"src="'
.$pre.$row->big.'"><input type="checkbox" value="1" id="'.$pre.$row->big.'" name="attachpict" />
   '
;

$i++;
}

?>


maar alsnog moet natuurlijk een deel anders komen in ajax.php aangezien hij nu nooit iets gaat meesturen.. hoe los ik dit op?
Hij moet het wel blijven invoeren als message attachment ook in de database die meegezonden gaat worden met het bericht anders komt de image niet bij ander profiel..
Gewijzigd op 30/05/2019 20:11:23 door Ray Mond
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 19:07:42
Quote Anchor link
Ik zou een aparte functie maken voor het upload-proces waarbij ken bepalen wat voor type foto je wilt uploaden.

Verder ben ik ook benieuwd waar $to vandaan komt, en nog belangrijker: Of deze netjes geëscaped wordt tegen (onbedoelde) SQL-injection.

En mocht je nog klikbare afbeeldingen willen hebben, die zich gedragen als checkboxes. Dan heb ik een mooie jQuery plug-in voor gevonden:
https://jcuenod.github.io/imgCheckbox/
Gewijzigd op 30/05/2019 19:09:51 door - Ariën -
 
Ray Mond

Ray Mond

30/05/2019 19:36:22
Quote Anchor link
Correctie: het gaat hier nu niet meer om het uploaden van de afbeeldingen, het uploaden hier is al gedaan inmiddels.
We vragen nu de afbeeldingen op en willen diezelfde link meesturen als bijlage zodat men kan klikken en in de lightbox opent de afbeelding. Ik ben al redelijk ver heen moet ik zelf zeggen.
Ik heb nu in ajax.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
//afbeelding link meesturen via checkbox
        if (isset($_POST["attachpict"]) ){

        $db->query("INSERT INTO message_attachement (`message_id`, `attachment_url`, `mime`) VALUES
                ('".$msg_id."', 'hier-moet-de-link', 'image/jpeg')");
        
        
        }


Waar staat 'hier-moet-de-link' daar moet ik nu alsnog zorgen dat daar de link gepost gaat worden die we aanklikken door middel van de checkbox, daar hang ik op dit moment even vast.

Dit in mijn reply.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--afbeeldingen halen!-->
<?php
$profile_id
= isset($_GET['profile'])?$_GET['profile']:'';
$sql = "SELECT * from user_pictures where user_id = '".$to."'";
$result= $db->query($sql);
$i =1 ;
$main_uri = 'http://website/';
$pre = $main_uri.'controller/images/';
$pre2 = 'controller/images/';
while($row =  $result->fetch_object()){

   echo '  
   <img img style="width:60px;height:60px"src="'
.$pre.$row->big.'"><input type="checkbox" value="'.$pre2.$row->big.'" name="attachpict" />
   '
;

$i++;
}

?>


Of dit helemaal klopt weet ik eerlijk gezegd niet.. de $to is enkel voor het ophalen van de profiel(id)nr van desbetreffende profiel.

Ik ben er echt bijna maar net niet helemaal jammer genoeg.. wel weer een stukje wat bijgeleerd vandaag :)

Als ik nu op dit moment geen checkbox doe komt er ook geen message_attachement...
Wanneer ik wel een checkbox doe

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$db->query("INSERT INTO message_attachement (`message_id`, `attachment_url`, `mime`) VALUES
                ('".$msg_id."', 'hierdelink....', 'image/jpeg')");


Waar dus hierdelink... staat als ik dat verander naar controller/images/bla.jpg als voorbeeld dan krijgt zowel de user op front de image te zien als ik in admin.. nu moet dat enkel nog zelf ingevuld gaan worden bij het verzenden en nu hik ik hier even..

EDIT:

Tot zover lijkt nu eigenlijk alles in principe wel te werken enkel moet hij nu de value van de checkbox nog meesturen.. Dat is nu even zoeken lol
Gewijzigd op 30/05/2019 19:41:34 door Ray Mond
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 20:01:11
Quote Anchor link
Zoals ik al eerder zei, moet je de unieke ID van de afbeelding in de value meegeven.
 
Ray Mond

Ray Mond

30/05/2019 20:10:48
Quote Anchor link
Ik heb het voor elkaar gekregen, IDEAAL!!!!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$db->query("INSERT INTO message_attachement (`message_id`, `attachment_url`, `mime`) VALUES
                ('".$msg_id."', '".$_POST['attachpict']."', 'image/jpeg')");


Meerdere malen getest vanaf verschillende profielen heen en weer en het werk echt super...
Weer wat nieuws geleerd en het toch niet hoeven uitbesteden :-)

Helemaal top!!! Geweldig, dank!!!
 
- Ariën  -
Beheerder

- Ariën -

30/05/2019 20:14:39
Quote Anchor link
Nu nog SQL-injection beveiliging, voordat iemand gaat klooien aan je $_POST['attachpict'] :-)
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.