Modifier une page à travers le navigateur

Signaler
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009
-
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009
-
Bonjour,

Depuis le debut du week end je cherche un script me permettant
de modifier une page à travers le navigateur. C'est tout. J'ai cherché sans relâche mais tous les scripts que je trouve se complique trop à rajouter des fonctions comme l'ajout de commentaire par l'utilisateur ou bien même l'archivage des news

Je demande seulement à pouvoir modifier un simple texte qui se trouve sur une page en php et de pouvoir le modifier à l'aide d'une autre page par exemple.

L'utilisation de la base de donnée est certainement requis

Auriez vous des liens ? des exemples ? des scripts qui pourrait m'aider.

Je me suis mis au php ca fait deja une semaine après avoir les cours de php.


Merci d'avance.

18 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Salut,



désolé mais je ne comprends pas grands chose à ta demande...



Peux-tu être plus clair ?
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Ok, je reformule.

Dans une page en php, j'ai un texte, un simple texte, par exemple un editorial. Et j'aimerai à partir d'un panneau d'administration où de ce que vous voulez qui me permettré de modifer le texte (ou l'éditorial si on prend l'exemple).
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Ok...



Il n'y a que deux solutions (simples) :

1. le texte est stocké dans un fichier

2. le texte est stocké dans une base de données





Cas 1 :

pour ecrire le texte contenu dans le fichier :

$filename = 'fichier.txt';

echo file_get_contents($filename);



pour ecrire dans le fichier (comme en C++, si tu connais) :

$fp = fopen($filename, $mode_ouverture);

fwrite($fp, $texte_a_ecrire);

fclose($fp);



/*

avec $mode_ouverture

'wt' pour ecrire depuis le début du fichier

'at' pour ecrire à la fin du fichier

*/



Cas 2 :

C'est un peu pareil, à part qu'il faut interroger la base

// une fois connecté à la base

$query = "select texte frome table where ???;";

$res = mysql_query($query); // si mysql

echo mysql_get_result($res,0); // par exemple



et pour ecrire,

$query = "insert into table (texte) values ('$texte');";

mysql_query($query);







Après... il te faut des fonctions pour manipuler le texte...



nl2br => traduit les saut de ligne du fichier en saut de ligne HTML (
)

htmlspecialchars => traduit les caractères spéciaux HTML en leurs équivalents "échappés" (" devient &quote;)

addslashes pour échapper les caractères spéciaux de la base de données...



etc





Il faut que tu ailes voir la doc officielle de PHP, elle te donnera beaucoup d'idées PHP: Hypertext Preprocessor



Voilà, ton problème est vague, donc je ne peux y répondre avec plus de précision.



bonne chance

T
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Bonjour, justement je pensai au cas 2. Dans ce cas là, la la table ressemblerait t-elle à quelque chose comme:

CREATE TABLE `edito` (
`id` tinyint(4) NOT NULL auto_increment,
`texte` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE= MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `edito` VALUES (1, 'Endroit où je met tout mon texte');

Et j'aimerai savoir comment pouvoir modifier ce texte que j'ai tapé dans la base de donnée à travers le navigateur ? Je pense qu'il faut utilisé: d'après ce qu'on peut apprendre dans les cours du net...
if(!isset ($_GET['envoi']))
{

$a = mysql_query("SELECT id, texte FROM edito");
while($b = mysql_fetch_array($a))
{
?>
<form action=<?php echo $_SERVER['PHP_SELF']."?envoi=1"; ?> method="POST">
"/>

</form>
<?php
}
}
elseif (isset($_GET['envoi']))
{
$id = $_POST['id'];

$_0 = mysql_escape_string($_POST['_0']);
mysql_query("UPDATE edito SET texte = '".$texte."'

S'il vous plaît les développeur, ai-je bon ?
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
$_0 = mysql_escape_string($_POST['_0']);

>> je ne comprends pas ce $_POST['_0']...

>> ne condrais tu pas avec $_POST['texte'] ??



mysql_query("UPDATE edito SET texte='$texte'");

>> j'ai un peu modifié la requète...

>> $texte ???? ben non ! $_0...

>> $apres = mysql_escape_string($avant); Tu prend le texte, tu le
passes dans la moulinette de mysql_escape_string puis elle te ressort
un autre texte avec les caractères échapés.



UPDATE edito SET texte='$texte' WHERE id='1'

>> Sinon, tu vas modifier tous les textes de ta table edito !!! Ici, tu ne modifies que le texte identifié par id = 1
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Ok, finalement je n'ai pas eu trop d'erreur. Bon, je vais peut être commencer par afficher le texte de la bdd avant de vouloir la modifier ^^.

Alors comme t'as dit en haut, j'ai utilisé le code:

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("coursphp");
$query = "select texte from edito where id=1";
$res = mysql_query($query); // si mysql
echo mysql_get_result($res,0); // par exemple
?>

Et j'obtiens l'erreur:
Fatal error: Call to undefined function: mysql_get_result() in e:\program files\easyphp1-8\www\untitled-11.php on line 14

Je ne vois pas trop l'erreur, aurez tu une idée s'il te plaît, merci.
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Ah au faite, rassure moi, il est bon la table SQL que j'ai tapé en haut ?
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
string mysql_result ( resource result, int row [, mixed field] );



milles excuses...



mets ce site dans tes favoris : PHP: Hypertext Preprocessor









concernant la SQL, la déclaration de la table semble bonne.

Par contre :

INSERT INTO `edito` (id,text) VALUES (1, 'Endroit où je met tout mon texte');



c'est un peu mieux...
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Ok tout marche impec, et le site de php est vraiment EXELENT !

J'aimerai savoir comment faire pour avoir une zone de texte au lieu d'un champs de texte (car c'est petit et pas très commode lol)

Je viens d'essayer:
<textarea name="text" name="texte" value="<?php echo $b['texte']; ?>"/>
au lieu de
"/>

Or j'obtiens bien une zone de texte en apercu mais avec écrit à l'intérieur:
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
<textarea name="text" name="texte"><?php echo $b['texte']; ?></textarea>



Balise fermante obligatoire !!!



Tu veux encore plus de bons sites ?



Zone HTML / XHTML : Index Balise => Les balises HTML + du javascript + du CSS + ... Pas mal, à utiliser comme fr.php.net



CSS Tutorial => à bloc de CSS, en anglais



L'éditeur JavaScript => La foire d'empogne... plein de petits scripts JavaScript.



Openweb.eu.org => Alors
celui-là... Vraiment très bien !!! Mais d'un niveau un peu plus élevé
et ne peut être utilisé comme un glossaire (c-à-d. tous les autres). En
fait ce sont des articles sur le "comment bien coder ses pages HTML".





Voilà, bonne lecture
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Merci pour les liens, je connais l'éditeur javascript. Je demandai de l'aide la bas quand j'ai fais mes premières pages en html. :D

Pour en revenir au sujet, il reste encore un point qui ne marche pas. Dans le script:
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("coursphp");
if(!isset ($_GET['envoi']))
{

$a = mysql_query("SELECT id, texte FROM edito");
while($b = mysql_fetch_array($a))
{
?>
<form action=<?php echo $_SERVER['PHP_SELF']."?envoi=1"; ?> method="POST">
<textarea name="text" name="texte"><?php echo $b['texte']; ?></textarea>

</form>
<?php
}
}
elseif (isset($_GET['envoi']))
{
$id = $_POST['id'];

$texte = mysql_escape_string($_POST['texte']);
mysql_query("UPDATE edito SET texte='$texte' WHERE id='0'");
}
mysql_close();
?>

Lorsque je clique sur envoyer, j'obtiens l'erreur:
Notice : Undefined index: id in e:\program files\easyphp1-8\www\untitled-12.php on line 29



Notice: Undefined index: texte in e:\program files\easyphp1-8\www\untitled-12.php on line 31

La ligne 29 désigne:
$id = $_POST['id'];
Et la ligne 31 désigne:
$texte = mysql_escape_string($_POST['texte']);

Quel est le problème ?
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
oui oui oui...



Je vois que tu ne maitrise pas PHP pour un sous !

Arrivé là, je te donnerais bien un lien vers des tutoriaux PHP... Mais
je n'en ai pas. Va tapper php sous wikipédia, je sais qu'il y'a des
liens !





Bon :

Notice: Undefined index: id in e:\program files\easyphp1-8\www\untitled-12.php on line 29



Ca veut dire :

Il y'a un tableau à la ligne 29 qui n'a pas d'entrée nommée 'id'.



Ligne 29 :

$id = $_POST['id'];



Il est où le tableau ?

Et le truc nommé 'id' ?

Sais-tu ce que veut dire $_POST ?

As-tu fait le lien avec <form method="POST"> ?



pour tester l'existence d'un index :

array_key_exists()

ou mieux : isset().



Bon, sinon :

<textarea name="text" name="texte">

Ne vois-tu pas un petit problème ?





Je te laisse un peu chercher. Car, c'est comme ça que tu avancera.



A+
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Ok merci. Je ne savais pas ce que voulais dire $_post effectivement. Il faut savoir que pour le code, je me suis servi de plusieurs bout de code que j'ai trouvé sur le net. Finalement, je ne m'en suis pas trop mal sorti, merci J_G.

Je souhaiterai personaliser un peu mon code, à savoir la possibilité de mettre du gras ou de l'italique dans le textarea

Quel commande utilisé ?
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

J'ai trouvé cette page qui permet d'interpréter les bbcode, mais comment l'utilisé avec une zone de texte (textarea) ?
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Salut,



Tu ne peux pas mettre en gras une partie du contenu de la textarea. Soit c'est tout, soit c'est rien.



pour mettre en gras : font-weight:bold;



C'est du CSS.
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Oops, j'ai oublié de mettre le lien:
http://www.asp-php.net/ressources/codes/PHP-BBCode+simple.aspx

J'aimerai que dans le textara, lorsque je met ces balises ce message s'affiche en gras. D'un autre côté, je préfère que le passage au gras se fasse au moment où j'affiche le texte contenu dans la base de donnée.

Donc faire les changements dans ce code d'affichage.
//Code d'AFFICHAGE
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("coursphp");
$query = mysql_query('select texte from edito ');
if (!$query) {
die('Impossible d\'exécuter la requête :' . mysql_error());
}
echo mysql_result($query, 0);

Le problème, c'est que je ne comprends pas comment me servir de la fonction bbcode (http://www.asp-php.net/ressources/codes/PHP-BBCode+simple.aspx). Où es-ce que je la place ? Je place la fonction dans un nouveau <?php ?> ou je le met par exemple en dessous du code d'affichage.

Et enfin, comment créer une requête mysql_query qui fait en plus appelle à la fonction bbcode

echo bbCode($t);
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Cherche des trucs du genre WYSIWYG (c'est pas une blague)

ou "éditeur html en ligne" (en français)
Messages postés
15
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
12 avril 2009

Merci, je viens de trouver http://tinymce.moxiecode.com/index.php. Je dois avouer que c'est très beau mais trop "complexe" à mon gout par rapport à ce que je recherche si je puis dire.