/etc/HELP : Comment lier deux scripts sous php ?

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 15:20

Bonjour,

1 Je poste en guess car j'attends tjs le mail de validation pour l'inscription.

2 Je dev un forum tout simple, tout bête en php&sql. Je souhaite ajouter une fonctionnalité 'upload d'un fichier' à la page de post. J'ai trouvé un petit script qui m'upload le fichier et qui marche super bien. Par contre, l'intégration est une autre histoire.

sur la page permettant de poster, j'ai ajouté ce lien :

print "<a href=\"#\" onclick=\"window.open('upp.html');return false\">doc de chimie</a>";

Une nouvelle fênetre s'ouvre et j'upload bien le fichier sur le serveur, qui répond au doux nom de $nomdufichierenvoye

Et maintenant, mon souci est là : je referme ce pop-up et je voudrais informer la page qui permet de poster (la 1èreà qu'il y a ce '$nomdufichierenvoye' présent sur le serveur (grace à la 2ème).

Et là, je tourne en rond depuis hier 19h. Et c'est long, très long.

Merci pour toute aide

ViPHP
ViPHP | 3607 Messages

29 déc. 2006, 15:38

bonjour
1: je pense que tu vas attendre longtemps... :roll: car il y a des soucis de mails sur phpfrance apparemment ... :? on va voir si ça se résoud d'içi peu :roll:

2:sur ta popup upp.html, il faut que tu attendes le résultat de l'upload, car je suppose que tu as un formulaire qui envoi vers une page de traitement en php ?, si oui dans cette dernière, si l'upload s'est bien passé, alors tu cré une page html vide, avec un onload sur le body, qui va renseigner ta page ouvrante... tu suis à peu près mon raisonnement ?
essaye de coder un peu si tu as compris la méthode que je te propose, et si t'a du mal techniquement parlant, hésite pas ;-)

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 15:55

bonjour
1: je pense que tu vas attendre longtemps... :roll: car il y a des soucis de mails sur phpfrance apparemment ... :? on va voir si ça se résoud d'içi peu :roll:

2:sur ta popup upp.html, il faut que tu attendes le résultat de l'upload, car je suppose que tu as un formulaire qui envoi vers une page de traitement en php ?, si oui dans cette dernière, si l'upload s'est bien passé, alors tu cré une page html vide, avec un onload sur le body, qui va renseigner ta page ouvrante... tu suis à peu près mon raisonnement ?
essaye de coder un peu si tu as compris la méthode que je te propose, et si t'a du mal techniquement parlant, hésite pas ;-)
C'est avec un grand plaisir que je vais tenter de suivre ta méthode.

Donc actuellement j'ai :

post.php ---------> upp.html -----------> upload.php ---------> bah rien

Et comme mon objectif est d'arriver à

post.php ---------> upp.html -----------> upload.php ---------> post.php

j'ajoute, à la fin du fichier upload.php :

<html>
<BODY onLoad="XXXXXXXXXXX";>
</html>

Suis-je dans la bonne direction ?

(en attendant, je vais googoliser la fonction onLoad).

ViPHP
ViPHP | 3607 Messages

29 déc. 2006, 16:07

oui tu parts dans la bonne direction (du moins dans celle que je t'ai donnée, y a surement d'autres moyens... :roll: )
alors reprenons un peu plus clairement notre schéma...
  1. on est sur la page post.php
    on clique sur uploader un fichier
    s'ouvre alors une popup: upp.html
    on choisit son fichier et on lance l'upload
    l'upload se passe bien (ou mal) ça tu sais le récupérer cette valeur en php...
    sur la page upload.php on informe post.php de ce qui c'est passé
bon maintenant, comment informé la page appelante...
voici un squelette de la page upload.php:
<?php
//traitement de l'upload, on renseigne une variable $up à true ou false (par exemple)
?>
<html>
<head>
  <script language="javascript">
  <!--
  function enregistrer(){
	window.opener.getElementById('infos').innerHTML="<?php echo ($up ? 'fichier bien uploadé' : 'erreur durant l\'upload'); ?>";
	self.close();
}
-->
</script>
</head>
<body onLoad="enregistrer()">
</body>
</html>
en ayant bien sur dans post.php un petit div id="infos" placé où tu souhaites qu'apparaissent les informations sur l'upload...
tu comprends un peu mieu ?

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 16:54

J'vois vraiment bien ce qu'il faut faire grâce à toi.

J'ai passé un peu de temps à tester (sans succès pour l'instant car post.php n'est pas une page qui se reload) et, je l'avoue, à découvrir le logiciel songbird qui est super sympa (et fonctionne en plus sous linux!).

Je vais continuer à taffer pour faire fonctionner la div.

Merci pour ton aide!

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 17:43

Juste une question car je suis pris d'un doute existentiel et soudain :

Est-il possible que cette méthode fonctionne, ou pas, selon la nature de la page php ?

Invité
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 17:46

Juste une question car je suis pris d'un doute existentiel et soudain :

Est-il possible que cette méthode fonctionne, ou pas, selon la nature de la page php ?
J'ai essayé bien des choses, mais aussi un autre script :

http://www.editeurjavascript.com/script ... _3_524.php

Rien ne fonctionne sous pas page post.php

ViPHP
ViPHP | 3607 Messages

29 déc. 2006, 17:47

qu'entends tu par là ?
une page php envoi au navigateur une page html générée, donc le php n'a rien à voir la dedans...

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 17:55

qu'entends tu par là ?
une page php envoi au navigateur une page html générée, donc le php n'a rien à voir la dedans...
Damned ! Tu as raison ! J'ai pris une mauvaise direction à un moment donné : intégration entre les <? ?> et non en dehors...

Désolé du dérangement, je continue...

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 18:29

Code : Tout sélectionner

Alors j'en suis là : J'ai dans le corps du php : -------------------------------------------- print "<a href=\"#\" id=\"infos\" onclick=\"window.open('upload.php');return false\">chimie</a>"; --------------------------------------------- Sur la page post.php, j'ai ajouté, après le ?> : <div id="infos"> Sur la page upload.php, j'ai ajouté : entre les <? ?> : --------------------------------------------------------------------- $nomdufichier = substr(md5(microtime()), 0, 5)."".$extension; if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) { echo 'envoyé !'; print "<img src='upload/$fichier' style='width: 160px; height: 120px;'>"; $up == "true"; ---------------------------------------------------------------------- et après le ?> : ----------------------------------------------------------------------------- <html> <head> <script language="javascript"> <!-- function enregistrer(){ window.opener.getElementById('infos').innerHTML="<?php echo ($up ? 'fichier bien uploadé' : 'erreur durant l\'upload'); ?>"; self.close(); } --> </script> </head> <body onLoad="enregistrer()"> </body> </html> ----------------------------------------------------------------------- Mais quand je referme la fenêtre, rien ne se produit sur post.php Une petite idée s'il te plait ?

ViPHP
ViPHP | 3607 Messages

29 déc. 2006, 20:30

c'est assez brouillons tout ça, j'arrive pas à me faire un vision d'ensemble, déja, une petite erreur je pense, dans post.php, tu doits avoir
print "<a href=\"#\" id=\"infos\" onclick=\"window.open('upp.html');return false\">chimie</a>";
et non
print "<a href=\"#\" id=\"infos\" onclick=\"window.open('upload.php');return false\">chimie</a>";
essaye de reposter tout tes fichiers en intégralitée, c'est à dire: post.php, upp.html et upload.php
et qu'entends tu par:
Mais quand je referme la fenêtre, rien ne se produit sur post.php

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 déc. 2006, 21:03

Bonjour,

1 Je poste en guess car j'attends tjs le mail de validation pour l'inscription.

2 Je dev un forum tout simple
Voilà, c'est à peu près là où j'ai arrêté de lire :lol:

Si tu veux mon conseil, installe phpBB c'est encore plus simple. Et le temps passé à développer ton propre forum tu pourras le passer à améliorer phpBB ou l'adapter selon tes besoins.

Mammouth du PHP | 1885 Messages

29 déc. 2006, 21:09

phpBB :sick:
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 23:08

Merci infiniment pour ton aide. Je te présente les 3 fichiers d'origine :

post.php, upp.html, upload.php.

Alors voici le post.php :

Code : Tout sélectionner

<?php include 'connect.php'; session_start(); ?> <center> <?php include "admin/var.php"; ?> </center> <br><br> <center> <?php $user=$_SESSION['user']; $getuser="SELECT * from b_users a, b_templates b where b.templateid=a.templateclass and a.username='$user'"; $getuser2=mysql_query($getuser) or die("Could not get user info"); $getuser3=mysql_fetch_array($getuser2); if(strlen($getuser3[username])>1) { $templateclass=$getuser3['templatepath']; } else { $templateclass="default"; } print "<link rel='stylesheet' href='/templates/$templateclass/style.css' type='text/css'>"; //chooses which template to display $forumID=$_GET['forumID']; $s=$_SERVER["REMOTE_ADDR"]; $checkip="SELECT * from b_banip where ip='$s'"; $checkip2=mysql_query($checkip) or die("Could not get ips"); $checkip3=mysql_fetch_array($checkip2); if($checkip3) { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>Your IP was banned from posting</center></td></tr></table>"); } if (isset($_SESSION['user'])||$guestposting=="Yes"||$guestposting=="yes") { $user=$_SESSION['user']; $getid="SELECT * from b_users where username='$user'"; $getid2=mysql_query($getid) or die("could not get user"); $getid3=mysql_fetch_array($getid2); $getforuminfo="SELECT * from b_forums where ID='$forumID'"; $getforuminfo2=mysql_query($getforuminfo) or die("COuld not get forum info"); $getforuminfo3=mysql_fetch_array($getforuminfo2); if(!$_SESSION['user']) { $getid3[status]=-1; } $thetime=date("U"); if($getid3[lastposttime]>$thetime-30) { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>You can only post once every 30 seconds</center></td></tr></table>"); } if($getforuminfo3[permission_post]>$getid3[status]) { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>You Do not have permission to post in this forum</center></td></tr></table>"); } if($getid3[banned]=="Yes") { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>You have been banned from posting</center></td></tr></table>"); } if(isset($_POST['submitpost'])) { if(!$_POST['title'] || !$_POST['post'] || !$_GET['forumID']) { print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "One of the required fields was not filled in, please go back and try again"; print "</td></tr></table>"; } else { $name=$getid3['userID']; $title=$_POST['title']; $post=$_POST['post']; $day=date("D M d, Y H:i:s"); $timegone=date("U") ; if($_POST['nosmiley']) { $nosmiley=1; } else { $nosmiley=0; } if(!$_SESSION['user']) { $user="Guest"; } $name=strip_tags($name); $title=strip_tags($title); $post=htmlentities($post); $posting="INSERT INTO b_posts (author, title, post,timepost, telapsed, postforum,lastpost,nosmilies,ipaddress) values ('$name', '$title', '$post', '$day', '$timegone','$forumID','$user','$nosmiley','$s')"; mysql_query($posting) or die("could not post"); if(isset($_SESSION['user'])) { $today=date("U"); $updates="update b_forums set numtopics=numtopics+1, numposts=numposts+1, lastpost='$day', lastpostuser='$user',lastposttime='$today' where ID='$forumID'"; mysql_query($updates); $updateuser="update b_users set Posts=Posts+1, lastposttime='$today' where username='$user'"; mysql_query($updateuser) or die("COuld not update numposts"); } else { $today=date("U"); $updates="update b_forums set numtopics=numtopics+1, numposts=numposts+1, lastpost='$day', lastpostuser='Guest',lastposttime='$today' where ID='$forumID'"; mysql_query($updates) or die("Could not update forums"); } print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "Thanks for posting... Redirecting to forum index <META HTTP-EQUIV = 'Refresh' Content = '2; URL =index.php?forumID=$forumID'>"; print "</td></tr></table>"; } } else { print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "<table border='0'><tr class='forumrow'><td>"; print "<form action='newtopic.php?forumID=$forumID' method='post' name='form'>"; if(isset($_SESSION['user'])) { print "<input type='hidden' name='name' value=$getid3[userID]><br>"; print "<b>Name:</b> $user<br>"; } else { $getguest="SELECT * FROM b_users WHERE username='Guest'"; $getguest2=mysql_query($getguest); $getguest3=mysql_fetch_array($getguest2); print "<input type='hidden' name='name' value='$getguest3[userID]'><br>"; print "<b>Name:</b> Guest<br>"; } print "<b>Topic:</b><br>"; print "<input type='text' name='title' length='15'><br><br>"; print "<b>Message:</b><br><br>"; print "<a onClick=\"addSmiley('[b][/b]')\"><img src='images/bold.gif'></a> "; print "<a onClick=\"addSmiley('[i][/i]')\"><img src='images/italic.gif'></a> "; print "<a onClick=\"addSmiley('[u][/u]')\"><img src='images/underline.gif'></a> "; print "<a onClick=\"addSmiley('[img][/img]')\"><img src='images/img.gif'></a> "; print "<a onClick=\"addSmiley('[url][/url]')\"><img src='images/url.gif'></a> "; print "<a onClick=\"addSmiley('[mail][/mail]')\"><img src='images/mail.gif'></a><br><br>"; print "<textarea rows='6' name='post' cols='45'></textarea><br><br>"; print "<input type='checkbox' name='nosmiley'>&nbsp;Disable Smilies<br><br>"; print "<input type='submit' name='submitpost' value='Post'>"; print "</form><br><br>"; print "Clickable Smilies<br>"; print "<a onClick=\"addSmiley(':)')\"><img src='images/smile.gif'></a> "; print "<a onClick=\"addSmiley(':blush')\"><img src='images/blush.gif'></a> "; print "<a onClick=\"addSmiley(':angry')\"><img src='images/angry.gif'></a> "; print "<a onClick=\"addSmiley(':shocked')\"><img src='images/shocked.gif'></a> "; print "<a onClick=\"addSmiley(':cool')\"><img src='images/cool.gif'></a> "; print "<a onclick=\"addSmiley(':{blink}')\"><img src='images/winking.gif'></a>"; print "<A onclick=\"addSmiley('{clover}')\"><img src='images/clover.gif'></a>"; print "<a onclick=\"addSmiley(':[glasses]')\"><img src='images/glasses.gif'></a>"; print "<a onclick=\"addSmiley(':[barf]')\"><img src='images/barf.gif'></a>"; print "<a onclick=\"addSmiley(':[reallymad]')\"><img src='images/mad.gif'></a><br>"; print "<a onclick=\"addSmiley(':[normal]')\"><img src='../smiley/normal.gif'></a>"; print "<a onclick=\"addSmiley(':[inqu]')\"><img src='../smiley/inquisitive.gif'></a>"; print "<a onclick=\"addSmiley(':[happyinlove]')\"><img src='../smiley/happyinlove.gif'></a>"; print "<a onclick=\"addSmiley(':[sadinlove]')\"><img src='../smiley/sadinlove.gif'></a>"; print "<a onclick=\"addSmiley(':[normalinlove]')\"><img src='../smiley/normalaboutlove.gif'></a><br>"; print "<a onclick=\"addSmiley(':[bangry]')\"><img src='../smiley/angry.jpg'></a>"; print "<a onclick=\"addSmiley(':[grin]')\"><img src='../smiley/grin.jpg'></a>"; print "<a onclick=\"addSmiley(':[sadness]')\"><img src='../smiley/sadness.jpg'></a>"; print "<a onclick=\"addSmiley(':[smilies]')\"><img src='../smiley/smiles.jpg'></a>"; print "<a onclick=\"addSmiley(':[winking]')\"><img src='../smiley/winking.jpg'></a><br>"; print "<script language=\"JavaScript\" type=\"text/javascript\">\n"; print "function addSmiley(textToAdd)\n"; print "{\n"; print "document.form.post.value += textToAdd;"; print "document.form.post.focus();\n"; print "}\n"; print "</script>\n"; print "</td></tr></table></center>"; print "</td></tr></table>"; } } else { print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "Not logged in, please <A href='login.php'>Go here</a> to log in"; print "</td></tr></table>"; } ?> </center> <br><br> <center>
Puis le upp.html :

Code : Tout sélectionner

<form method="POST" action="upload.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> file: <input type="file" name="avatar"> <input type="submit" name="envoyer" value="send this"> </form>
Enfin le upload.php

Code : Tout sélectionner

<? $dossier = 'upload/'; $fichier = basename($_FILES['avatar']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['avatar']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg'); $extension = strrchr($_FILES['avatar']['name'], '.'); if(!in_array($extension, $extensions)) { $erreur = 'doc, pdf, rtf, png, gif, jpg or jpeg seulement...'; } if($taille>$taille_maxi) { $erreur = 'max: 1 mo!...'; } if(!isset($erreur)) { $fichier = substr(md5(microtime()), 0, 5)."".$extension; if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) { echo 'good!'; } else { echo 'bad!'; } } else { echo $erreur; } ?>
Merci pour toute aide! Pour ma part, je vais continuer à essayer d'intégrer le onload ET JE PASSE PAS DE REVEILLON TANT QUE CA MARCHE PAS !! :P

en attendant la valid
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 23:19

phpBB ?

Merci du conseil car c'est vrai que c'est un sacré logiciel ! et je parle pas du mod upload_pic qui était excellent !

Mais il ne correspond(ait?) malheureusement pas à un ch'ti comme moi. J'ai commencé par phpBB2, puis j'ai imprimé la page search.php que je voulais modifier. Résultat : 23 pages ! (si j'ai bonne mémoire)

J'ai passé des soirées et des soirées à couper du code, à effacer des données etc. à droper du sql etc. etc.

Et puis je me suis dis que j'avais envie de comprendre un peu plus ce que je faisais et j'ai laissé tomber phpbb2. J'ai testé phorum mais il était encore trop évolué pour un cerveau comme le mien :lol:

En fin de compte, j'ai trouvé -ze- forum à partir duquel je peux taffer (j'ai failli commencer from scratch mais bon) : board. L'architecture est déjà là et pour le reste, je redev. Je m'amuse bien et vous imaginez pas à quel point j'ai progresser (sql...php...javascript...html et le jour où je termine le forum, je vais essayer de comprendre ajax car ça a l'air bien pratique).

Voili voulou. Mais bientôt, le forum que je fais il aura rien à envier à phpbb2 !!! Le mien aura juste l'air préhistorique, mais c'est tendance!! :P :P