Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

PHP Fotoalbum Kassenaar

Hallo Allemaal, Ik ben bezig met het boek van Peter Kassenaar, PHP Applicatieontwikkeling. Ik heb al eens eerder een php progje gemaakt met een koppeling naar een database maar deze lukt niet. Via het boek ga je een foto upload en view progje maken. Het upload progje lijkt te werken, na invullen van het fomulier krijg je een scherm dat de foto is opgeslagen in het fotoalbum. Als je vervolgens gaat kijken met het view progje krijg je een waarschuwing; Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\inetpub\vhosts\kcst.nl\httpdocs\yapa\yapa_view.php on line 20 Na onderzoek blijkt er niets in de database te staan, er is wel een verbinding met de database want als ik het wachtwoord verander bij de inlog dan geeft hij een waarschuwing dat er geen verbinding gemaakt kon worden. Het fototje is wel op de server gezet. Er wordt dus niets weggeschreven naar de database en als ik daar handmatig wat in zet kan ik dat ook niet uitlezen. Ik zal eerst even de code van het upload progje laten zien; [code:1:cee623f960] <?php // bestanden insluiten include_once('yapa_config.php'); include_once('yapa_functions.php'); // initialisatie en configuratie heeft plaatsgevonden in yapa_config.php if (isset($_POST['verzonden'])){ // begin de controles if (!isset($_FILES['foto'])){ // Het formulier is niet goed verzonden, of de pagina is foutief aangeroepen echo 'Het formulier is niet goed ingevuld. <br />'; echo "Probeer het <a href=\"$deze_pagina\">nogmaals</a>"; exit; } else{ // Een array maken met alle waarden voor de foto $foto = $_FILES['foto']; } // controleer of er fouten zijn opgetreden bij het uploaden switch ($foto['error']){ case UPLOAD_ERR_OK: // Het uploaden is goed gegaan, maar misschien is de foto // groter dan toegestaan. Dit controleren if ($foto['size'] > MAX_FOTO_SIZE){ $fout_bericht .= "De foto is te groot. Hij mag niet groter zijn dan " . MAX_FOTO_SIZE . " bytes<br />"; } // er is geen fout opgetreden, doe niets. break; case UPLOAD_ERR_INI_SIZE: // de foto is groter dan wordt toegestaan door php.ini $fout_bericht .= 'De foto is te groot! Hij mag niet groter zijn dan ' . MAX_FOTO_SIZE . 'bytes'; break; case UPLOAD_ERR_PARTIAL : // de foto is maar gedeeltelijk ge-uploaded $fout_bericht .= 'Er is een fout opgetreden tijdens het uploaden. '; break; case UPLOAD_ERR_NO_FILE : // Er is geen bestand opgegeven om te uploaden if (UPLOAD_VERPLICHT){ // als het uploaden van een bestand verplicht is de foutmelding tonen $fout_bericht = 'U hebt geen foto opgegeven om te uploaden. '; } break; default: // Vangnet; er zou geen onbekende fout mogen optreden, maar het is // goed hier toch een voorziening voor te treffen $fout_bericht = 'Er is een onbekende fout opgetreden. '; break; } // einde switch if (!$fout_bericht){ // het uploaden is goed gegaan. Mogelijke overige fouten afvangen. // Het MIME-type van de foto controleren. // Alleen JPEG, GIF en PNG-bestanden zijn toegestaan // De toegestane MIME-types zijn gedefinieerd in $foto_MIME if (!in_array($foto['type'], $foto_MIME)){ $fout_bericht .= "U kunt alleen GIF-, JPG- of PNG-foto's uploaden. Het huidige type is: ". $foto['type']; } // controleren of er al een foto bestaat met deze naam. // Dubbele namen (=per ongeluk // overschrijven van een foto) mogen niet voorkomen. $foto_naam = $upload_dir . $foto['name']; if (file_exists($foto_naam)){ $fout_bericht .= 'Er bestaat al een foto met deze naam. Verander de naam van de foto op uw computer en upload opnieuw. '; } // Overige formuliervelden valideren. // Naam moet ingevuld zijn if (!check_field($_POST['naam'], T_TEXT)){ $fout_bericht .= 'U hebt geen naam ingevuld <br /> '; } // Geldig e-mailadres controleren if (!check_field($_POST['email'], T_EMAIL)){ $fout_bericht .= 'U hebt geen (geldig) e-mailadres ingevuld <br />'; } } // Einde van de controles. Als er geen fouten zijn opgetreden // is $foutbericht nog leeg. In dat geval kan de foto worden // verplaatst naar de definitieve directory if (!$fout_bericht){ if(!move_uploaded_file($foto['tmp_name'], $foto_naam)){ $fout_bericht .= "Er is een fout opgetreden bij het opslaan van de foto. "; } } if(!$fout_bericht){ /** * database openen. Foutcontrole niet nodig, als dit failt * wordt ge-die-d vanuit de functie */ $db = safe_db_open($host, $gebruiker, $wachtwoord, $database); /** * openen geslaagd, query opbouwen met gegevens uit formulier */ $query = "INSERT yapa_photos (id, naam, email, photo_filename, trefwoorden, datum, beschrijving) VALUES ('', '" . safe_text($_POST['naam']) ."', '" . safe_text($_POST['email']) ."', '" . safe_text($_FILES['foto']['name']) . "', '" . safe_text($_POST['trefwoorden']) ."', '" . safe_text($_POST['datum']) . "', '" . safe_text($_POST['beschrijving']) . "')"; /** * gegevens invoegen in de database, ook nu foutcontrole (in dit voorbeeld) * niet nodig, omdat wordt ge-die-d vanuit de functie indien het opslaan mislukt. * Mogelijk wilt u hier zelf een ander type error-handling toepassen, in de vorm van * if(!safe_query())... enzovoort. */ safe_query($db, $query); mysql_close($db); // Einde opslaan in database // Thumbnail maken. // Stap 1: eigenschappen van de foto achterhalen list ($breedte, $hoogte, $image_type) = getimagesize($foto_naam); // Stap 2: bepaal de verhouding tussen hoogte en breedte $image_ratio = $breedte/$hoogte; // Stap 3: bereken op basis van de ratio de nieuwe hoogte if ($image_ratio > 1){ $tn_breedte = THUMB_SIZE; $tn_hoogte = THUMB_SIZE / $image_ratio; } else{ $tn_hoogte = THUMB_SIZE; $tn_breedte = THUMB_SIZE * $image_ratio; } // Stap 4: maak een lege thumbnail in het geheugen van de server $thumb = imagecreatetruecolor($tn_breedte,$tn_hoogte); // Stap 5: afhankelijk van het type foto het juiste type thumbnail maken switch ($image_type){ case IMAGETYPE_GIF: $source = imagecreatefromgif($foto_naam); break; case IMAGETYPE_JPEG: $source = imagecreatefromjpeg($foto_naam); break; case IMAGETYPE_PNG: $source = imagecreatefrompng($foto_naam); break; default: // vangnet, dit komt als het goed is nooit voor. // indien toch: trachten gif-bestand te maken $source = imagecreatefromgif($foto_naam); break; } // Stap 6: De grote foto verkleinen en kopieren naar de thumbnail imagecopyresampled($thumb, $source, 0, 0, 0, 0, $tn_breedte, $tn_hoogte, $breedte, $hoogte); // Stap 7: naam van de thumbnail instellen $thumbname= $upload_dir ."thumbnails/" . "tn_" . $_FILES['foto']['name']; // Stap 8: tot slot: de thumbnail opslaan, opnieuw afhankelijk van het type switch ($image_type){ case IMAGETYPE_GIF: imagegif($thumb, $thumbname); break; case IMAGETYPE_JPEG: // jpeg-afbeelding opslaan, kwaliteit: 100% imagejpeg($thumb, $thumbname, 100); break; case IMAGETYPE_PNG: imagepng($thumb, $thumbname); break; } // In deze toepassing: De thumbnail op het scherm tonen echo "<img src=\"$thumbname\" />"; // Einde thumbnail maken // alle handelingen voltooid, melding op het scherm zetten echo "<h2>Uw foto is opgeslagen in het fotoalbum!</h2>"; echo "<a href=\"yapa_index.php\">Terug naar de homepage</a>"; exit; } else{ // normaal gesproken: netjes doorsturen naar een error-pagina. // nu even Quick and Dirty naar het scherm schrijven (geen correcte HTML!) echo '<h2>Er is een fout opgetreden</h2>'; echo $fout_bericht; echo "<br />Probeer het <a href=\"$deze_pagina\">nogmaals</a>"; exit; } } else{ ?> <!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>YAPA - foto's uploaden</title> </head> <body> <h2>YAPA: Foto's uploaden</h2> <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']?>"> <pre> Kies een foto: <input name="foto" type="file" size="30 "id="foto" /> Beschrijving: <textarea name="beschrijving" cols="30" rows="4"></textarea><br /> Trefwoorden: <input name="trefwoorden" type="text" size="40" /> Uw naam: <input name="naam" type="text" size="40" /> Uw e-mailadres: <input name="email" type="text" size="40"/> <input type="hidden" name="verzonden" value="1" /> <input type="hidden" name="datum" value="<?php echo date("YmdHis"); ?>" /> </pre> <hr> <input type="submit" name="Submit" value="Verzenden" /> <input type="reset" name="Reset" value="Leegmaken" /> </form> </body> </html> <?php } // het grote else-blok afsluiten ?> Als iemand mij hiermee op weg kan helpen heel graag![/code:1:cee623f960]

Moos