Toevoegen CV via select menu: could not acces file
Ik ben bezig met het maken van een formulier waarbij men OF via een SELECT MENU een CV kan selecteren die al aanwezig is op de server OF dat men een CV kan selecteren via een FILE veld.
Om dit te verzenden gebruik ik PHPMailer (Thanks voor de tip btw!).
Wat gaat er niet zoals verwacht
Als ik een CV selecteer uit het SELECT MENU dan word deze niet verzonden.
Er staat "Could not access file", terwijl deze wel weergegeven is in het scherm in de echo + aanwezig op de server
Wat heb ik al gedaan
1- Voordat het formulier word verzonden heb ik EXIT(); gebruikt om te kijken of de waarde wel verzonden wordt en dan met een ECHO laten weergeven van de root.
Deze is compleet vanaf de schijfnaam tot aan de extensie. (ook op de hostserver)
dus: J:/xampp/htdocs/cv/CV-versie-011_2012-05.docx
Ik kan het bestand aanroepen via de adresbalk in de browser.
2- de map op de hostserver, waar de CV uit moet komen is standaard (helaas niet zelf te wijzigen) op CHMOD 666 gezet.
De CODE
Als eerste het deel waar ik de CV wil selecteren. (pagina 1)
Deze waarde zal mee verzonden worden via een POST method
De naam van de CV staat in een tabel en fysiek op de server.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<select name="StuurCvMee" id="StuurCvMee" style="width:250px">
<option value="0">Kies een CV van een kandidaat</option>
<?php do { ?>
<option value="<?php echo $_SERVER['HTTP_HOST'] ?>/partner/cv/<?php echo $row_rsSelectCv['CV_bestand']?>"><?php echo $row_rsSelectCv['CV_Label']?></option>
<?php } while ($row_rsSelectCv = mysql_fetch_assoc($rsSelectCv));
$rows = mysql_num_rows($rsSelectCv);
if($rows > 0) {
mysql_data_seek($rsSelectCv, 0);
$row_rsSelectCv = mysql_fetch_assoc($rsSelectCv);
}
?>
</select>
<option value="0">Kies een CV van een kandidaat</option>
<?php do { ?>
<option value="<?php echo $_SERVER['HTTP_HOST'] ?>/partner/cv/<?php echo $row_rsSelectCv['CV_bestand']?>"><?php echo $row_rsSelectCv['CV_Label']?></option>
<?php } while ($row_rsSelectCv = mysql_fetch_assoc($rsSelectCv));
$rows = mysql_num_rows($rsSelectCv);
if($rows > 0) {
mysql_data_seek($rsSelectCv, 0);
$row_rsSelectCv = mysql_fetch_assoc($rsSelectCv);
}
?>
</select>
Dan de code waar ik het CV in mee wil sturen (pagina 2)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
// eerst de waarde opvragen voor de echo
$StuurCvMee = $_POST['StuurCvMee'];
// het deel uit PHPMailer
$source = $_FILES['StuurCvMee']['tmp_name']; //CV wegzetten als TEMPFILE
$filename = $_FILES['StuurCvMee']['name']; //CV opvragen werkelijk selecteren
$mail->AddAttachment($source, $filename); //combineren
$StuurCvMee = $_POST['StuurCvMee'];
// het deel uit PHPMailer
$source = $_FILES['StuurCvMee']['tmp_name']; //CV wegzetten als TEMPFILE
$filename = $_FILES['StuurCvMee']['name']; //CV opvragen werkelijk selecteren
$mail->AddAttachment($source, $filename); //combineren
Ik hoop hiermee genoeg informatie te hebben gegeven?
Alvast bedankt voor jullie tijd!
Gewijzigd op 10/05/2012 09:42:39 door Allan de Bruin
verder heb ik niet zo'n berg verstand van phpmailer, maar heb je misschien hier wat aan?
http://zainal.wordpress.com/2007/01/10/sending-email-attachments-in-php-using-phpmailer-class/
http://php.net/manual/en/function.move-uploaded-file.php
En daarbij, als het in de database staat, kan je toch ook net zogoed de link naar het cv meesturen ?
Het is op twee pagina's wat ik uitvoer: de eerste is het ophalen, selecteren en invullen van de gegevens.
De tweede pagina is het verwerken van deze gegevens in een email.
@Patrick: je bedoelt het echt werkelijk wegzetten van het bestand?
Daar dacht ik ook aan, maar als ik het verzend via een FILE veld (type=file) dan lukt het wel, ook al heb ik de CV niet werkelijk weggezet.
Toevoeging op 10/05/2012 10:39:55:
Ik denk dat ik het al weet wat het is, en helaas zie ik daar zelf geen oplossing voor:
het veld FILE is van belang wanneer er een bestand verzonden moet worden.
Maar een SELECT MENU kan je niet omzetten naar FILE toch?
Toevoeging op 11/05/2012 08:51:54:
Heeft er nog iemand suggesties?
Gewijzigd op 10/05/2012 10:27:26 door Allan de Bruin
Mensen moeten toch een bestand kunnen uploaden en niet selecteren?
Die is dan al eerder geupload naar het systeem.
Maar stel dat je een andere wilt toevoegen dan zou je die kunnen toevoegen via de FILE type.
Dat zou toch moeten kunnen?
Maakt een if statement waar $_POST['upload'] == "" hij niks upload en dus gebruik maakt van je bestaande CV uit de select lijst. En else hij dus het bestand upload als de upload niet leeg is.
zoiets dus.
Kies je CV: (dropdownlijst met bestaande CV)
Upload een CV (leeg veld voor de upload) [bladeren knop]
[verzend knop] [reset knop]
Toevoeging op 11/05/2012 13:40:54:
P.S. is het misschien niet slimmer om maar 1 CV per gebruiker op je server te hebben? Zo verkom je eventuele dubbele namen en heb je altijd de actuele versie.
De enige optie die je dus de gebruiker geeft is het uploaden van een CV, en die overschrijft gewoon de oude CV. Hoef je dus ook geen dropdown lijst te maken.
Anders is uiteraard de kans groot dat je 'oude' CV's gaat krijgen terwijl je natuurlijk alleen maar met de meeste recente versie wil werken toch?
Gewijzigd op 11/05/2012 13:32:30 door Chris PHP