[RESOLU] [PHP] Automatisation des saisies et insertion de texte

dartyduck

Grand Meuble Suprême
Bonjour,
Je sais que j'aurais besoin de php et MySQL pour mon projet.
Dans le cadre de création d'un site pour une asso sportive, j'ai besoin de prévoir un moyen de faire des ajouts réguliers de texte et d'images au fur et à mesure des manifestations sportives. Ca ne poserait pas de probleme si j'en étais le seul utilisateur. Seulement voilà, la personne qui s'en occupera le plus souvent n'y connais rien en html. Je dois donc lui proposer une interface simple pour la saisie des mises à jour.
J'ai besoin que l'interface se compose d'un champ texte et d'un bouton valider pour la saisie du texte, d'un champ texte, d'un bouton parcourir et un bouton valider pour l'insertion d'images. Le tout doit pouvoir se retrouver instantanément en ligne une fois validé.
Je suis conscient que tout ceci dépasse mes maigres connaissances en html, css et php. Je sais que je dois me mettre au MySQL (j'ai déjà commencé d'ailleurs), mais j'aurais besoin de pistes de recherches et surtout de savoir si je ne suis pas un peu trop ambitieux vu mon niveau.
Il est hors de question que quelqu'un le fasse à ma place, je veux apprendre et surtout le faire par moi-même. Je viens juste chercher un peu de soutien moral et surtout des conseils constructifs.
 

Thomas_R

Habitué
C'est simple :

Ton formulaire
Code:
<form method="POST" action="tapage.php" enctype="multipart/form-data">
<input type="text" name="texte">
<input type="file" name="fichier">
<input type="submit" value="Valider">
</form>
<?php
if(isset($_POST['texte']))
    {
     $fichier = $_FILES['fichier']['name'];
     $texte = $_POST['texte'];
     $destination_fichier = "images/$fichier";
     if(move_uploaded_file($_FILES['fichier']['tmp_name'], $destination_fichier))
             {
              $sql = mysql_query("INSERT INTO truc VALUES....");
             }
    }
?>
Ca devrait ressembler a un truc comme ca, si tu es flegmard oubli la programmation :)
 

zeb

Modérateur
[strike]( Thomas_R, même si tu es flemmard, vas lire les règles et applique-les ! )[/strike] :merci:
 

Thomas_R

Habitué
En l'occurence pour un flegmard je prends quand meme la peine de répondre à sa question. Alors heureuse ?:)
 

dartyduck

Grand Meuble Suprême
d'accord, c'est cool de ta part. mais comment je précise l'emplacement de destination ? les maj vont se mettre à les suite les unes des autres ? dans quel ordre? (du plus récent au plus ancien) Comment vont s'intégrer les images dans le texte ? Je testerai tout ça ce soir pour me faire une idée du résultat...
Merci encore.
 

Thomas_R

Habitué
Regardes dans mon code tu as une variable $destination, elle correspond à là où tu vas enregistrer l'image.
Les maj vont se mettre à la suite les unes des autres ?
?? euuh quoi ??
Je viens de t'envoyer un script qui te permet d'envoyer tes mises à jour sur le serveur. Sachant que pour que le script fonctionne bien il faut que le php.ini du serveur accepte des transactions de fichiers par le protocole Http. (Chez free, 2mégaoctets maximum).

Sinon tu peux les envoyer directement sur ton FTP.. et les afficher à l'arrache comme ceci :
Code:
$rep="mises_a_jour/"; //ton dossier ou ya les maj
$dir = opendir($rep);
while($fichier = readdir($dir))
    {
    echo "<a href='$rep.$fichier'>$fichier</a><br>";
    }
closedir();
Avec ca tu as largement les outils nécessaires à ta conception
L'intégration des images et tout ca c'est toi qui voit, on va pas te faire le design ^^
 

marsien

Grand Maître
:D

Il faut dire à DartyDuck que ton script permet "juste" l'enregistrement des infos. Pour l'affichage il faut faire un autre script avec une requête vers MySQL pour récupérer les infos et les classer ;)
 

dartyduck

Grand Meuble Suprême
wai, je suis justement en train de le faire. ca marche bien pour le texte, mais pas du tout pour l'image. J'arrive pas à trouver la bonne syntaxe de l'echo "<img src=... pour afficher une image importée. Voici mon code pour l'affichage:
[cpp]<?php
echo "<img src=\"$chemin_image\" />";
?>[/cpp]
En fait, ce que je veux faire, c'est aller chercher l'image (parcourir...), et lors de la validation, il copie l'image dans un répertoire créé par moi, puis l'affiche à l'écran.
Alors je sais pas comment copier un ficher vers un repertoire, ni trouver la syntaxe pour l'afficher.
Merci
 

Thomas_R

Habitué
Oui et c'est exactement ce que j'ai fait dans mon premier mesage, celui ci :
Tu as juste a rajouter un echo...tu crois que je m'amuse a poster du code qui sert a rien ^^
En haut tu as ton formulaire, avec le bouton parcourir (<input type='file'>)
Ensuite j'enregistre l'image avec la fonction move_uploaded_file();
Et finalement j'affiche l'image..

Ton formulaire
Code:
<form method="POST" action="tapage.php" enctype="multipart/form-data">
<input type="text" name="texte">
<input type="file" name="fichier">
<input type="submit" value="Valider">
</form>
<?php
if(isset($_POST['texte']))
    {
     $fichier = $_FILES['fichier']['name'];
     $texte = $_POST['texte'];
     $destination_fichier = "images/$fichier";
     if(move_uploaded_file($_FILES['fichier']['tmp_name'], $destination_fichier))
             {
              echo "<img src='$destination_fichier'>";
             }
    }
?>
Oubli pas de changer le nom du dossier, pour cela tu changes la variable $destination_fichier, bon courage. Je pense que ce topic peut passer résolu.
Pour plus d'infos renseigne toi sur la fonction move_uploaded_file();
 

dartyduck

Grand Meuble Suprême
bon alors ok pour ton message, mais j'ai plusieurs problemes qui se présentent:
1- Comment ajouter les messages sans qu'ils s'écrasent ?
2- Comment uploader une image, la copier dans le rép images et en même temps la faire s'afficher? Ca marche pas ton truc. Il me met une croix de non-image. Pourtant j'ai activé MySQL depuis longtemps.

J'arrive pas à me représenter comment il incrémente les messages pour les ajouter à la suite, le cheminement logique de cette action m'échappe. Pourrais-tu m'éclairer ?
 

Thomas_R

Habitué
1 - Il faut que tu mettes un id a tes messages dans ta base de données donc tu créé un champ id et tu le mets en auto increment.
2 - Oulah .. tu mélanges tout la, mon script marche très bien, mais c'est pas en faisant un copier coller que tout fonctionne, je ne pense pas que ta page soit dans un dossier qui contient un dossier images/. Et je vois pas le rapport avec la base de données.

C'est relativement simple, dans un exemple concret, chaque personne est identifiable par un identifiant unique, son ADN ou ses empreintes digitales. Si un jour quelqu'un doit trouver telles empreintes il n'aura qu'une seule personne a trouver.

Pour tes messages c'est pareil tu vas leur donner un identifiant, un nombre, a chaque fois que tu vas ajouter un message ce nombre va augmenter de 1. Ton premier message aura l'id 1, ton deuxieme 2 etc..

 

dartyduck

Grand Meuble Suprême
oulà! ok ok! tout s'esplique ! bon alors avec tout ca, je devrait pouvoir m'y retrouver je pense. merci, je me penche dessus dès que j'ai un peu de temps.
Je te tiens au courant. A +
 

dartyduck

Grand Meuble Suprême
Alors pour ce qui est de mettre des infos genre news, c'est bon, j'ai pris des cours sur le site du zéro, et ça marche. Cependant, une fois que la saisie a été validée et affichée, si je fais juste F5 elle est doublée, re-F5 elle est triplée, ... Pourquoi ?
[cpp] <div id="formulaire">

<?php
if (isset($_POST['prenom']) AND isset($_POST['pseudo'])) // Si les variables existent
{
if ($_POST['prenom'] != NULL AND $_POST['pseudo'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "dirtyduck", "passwd");
mysql_select_db("sondage_prenom");

// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
$prenom = htmlentities ($_POST['prenom']);
$pseudo = htmlentities ($_POST['pseudo']);

// Ensuite on enregistre le message
mysql_query("INSERT INTO sondage_prenom VALUES('', '$prenom', '$pseudo')");

// On se déconnecte de MySQL
mysql_close();
}
}
?>

<form action="index.php" method="post">

<p>
Proposez un prénom :<br /><input type="text" name="prenom" size="20" />
<p>&nbsp;</p>
Entrez votre pseudo :<br /><input type="text" name="pseudo" size="20" />

<p>&nbsp;</p>

<input type="submit" value="Envoyer" />
</p>

</form>

</div>

<div id="prenoms">
<p>Voici les propositions :</p>
<p>&nbsp;</p>

<?php
// Maintenant on doit récupérer les entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "dirtyduck", "passwd");
mysql_select_db("sondage_prenom");

// On utilise la requête suivante pour récupérer les messages :
$reponse = mysql_query("SELECT * FROM sondage_prenom ORDER BY ID DESC");

// On se déconnecte de MySQL
mysql_close();

// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<?php echo $donnees['pseudo']; ?> propose : <strong><?php echo $donnees['prenom']; ?></strong><br />
<?php
}
// Fin de la boucle, le script est terminé !
?>

</div>[/cpp]
 

Thomas_R

Habitué
Simplement parce que si tu rafraichis ta page tu renvoie les valeurs au navigateur (les valeur POST). En fait tu rafraichis carement ton script d'envoi d'une news.. ce qui est tout a fait normal, après ton insertion tu n'as qu'a faire une redirection :
Code:
header("location:tapage.php");
ou comme ceci
Code:
<META HTTP-EQUIV="refresh" CONTENT="3; URL=tapage.php">

Pas d'inquiétudes alors :)
Si tu n'as toujours pas compris appuis sur F6 ca devrait résoudre ton problem :D
Mets le topic en RESOLU STP
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 058
Membres
1 586 284
Dernier membre
fjfkfjfkfjfjcj
Partager cette page
Haut