jackbocar

  • Site web
  • Nombre de sujets
    152
  • Nombre de messages
    456
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

jackbocar
le 25/08/2008 à 07:17
Saut d'ID
Bonjour,

Je crois avoir fait une erreur de protection :

Pour MYSQL et PHP :
mysql_escape_string

Pour Mysql et PDO :
mysql_real_escape_string

Jack Bocar
jackbocar
le 24/08/2008 à 18:44
Saut d'ID
Bonjour

Un problème que je n'avais jamais rencontré :

Lorsque j'envoie un enregistrement dans ma table, j'ai un saut sur les ID.
Je m'explique, si mon incrémentation est à 30, j'envoie un enregistrement qui doit avoir ID 31, j'ai bien cette ID, mais elle est vide de titre et de texte, seule la date apparait, par contre l'ID 32 elle est correctement enregistrée.

Si j'enlève les protections : mysql_escape_string() tout fonctionne bien ?

Mon code :

<?php
$hostname = 'localhost';
$username = 'jackbocar';
$password = 'XXXXXXXXX';
$dbname = 'XWXXXXXX';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

if (isset($_POST['titre']) && isset($_POST['news'])) {

$sql = 'INSERT INTO news (titre, news) VALUES (:titre, :news)';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':titre', mysql_escape_string($_POST['titre']));
$stmt->bindParam(':news', mysql_escape_string($_POST['news']));
$stmt->execute();
echo 'News Enregistrée.';
}

?>



Ma table :

DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`id` int(11) unsigned NOT NULL auto_increment,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`titre` varchar(255) NOT NULL,
`news` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ;



Merci de votre aide

Jack Bocar
jackbocar
le 29/07/2008 à 10:54
Problème avec UPDATE
Bonjour,

Quand j'enregistre une nouvelle entrée, tous mes guillemets comme ceux-ci ", je les transforme en caractères HTML (&nbsp;).

Et lorsque j'édite ma nouvelle entrée pour une modification, ces guillemets HTML (&nbsp;) se changent automatiquement en ".

Et, je ne sais pas pourquoi, le fait d'avoir un seul ", me renvoi sur la page index sans aucun changement.

En fait, je pense que la BD refuse l'enregistrement des ", il me faut les convertir en entités HTML.

Ce qui fait, si je fais un lien, il doit être <a href='mon_lien.php' class='ma_class'>Mon lien</a>, idem pour les images.

Quelqu'un aurait-il rencontré ce problème ?
Quelle solution avez-vous trouvé ?

Merci

Jack Bocar
jackbocar
le 25/07/2008 à 19:22
Problème avec UPDATE
Pour le code du premier post :

Je me suis aussi mal exprimé que ça ?

Si je me sers de cette ligne de code, rien ne fonctionne. De plus pas de message d'erreur, retout à l'index sans aucun changement.
<?php
$dbh->exec('UPDATE librairie SET visible="1", auteur="'.$_POST['auteur'].'", titre="'.$_POST['titre'].'", type="'.$_POST['type'].'", menu="'.$_POST['menu'].'", news="'.$_POST['news'].'", isbn="'.$_POST['isbn'].'" WHERE id="'.$_POST['id'].'"');
header('Location: index.php');
exit();
}
?>


Si je me sers de celle-ci, tout fonctionne mis à part que je ne peux plus modiffier les news
<?php
$dbh->exec('UPDATE librairie SET visible="1", auteur="'.$_POST['auteur'].'", titre="'.$_POST['titre'].'", type="'.$_POST['type'].'", menu="'.$_POST['menu'].'", isbn="'.$_POST['isbn'].'" WHERE id="'.$_POST['id'].'"');
header('Location: index.php');
exit();
}
?>


Jack Bocar
jackbocar
le 25/07/2008 à 19:13
Problème avec UPDATE
C'est pareil avec ou sans la virgule en trop !!

Warning: PDOStatement::execute() [function.PDOStatement-execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in G:\www\www.pdo-net\admin\edit_news_1.php on line 35

Warning: PDOStatement::execute() [function.PDOStatement-execute]: SQLSTATE[HY093]: Invalid parameter number in G:\www\www.pdo-net\admin\edit_news_1.php on line 35

Warning: PDOStatement::execute() [function.PDOStatement-execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in G:\www\www.pdo-net\admin\edit_news_1.php on line 36

Warning: PDOStatement::execute() [function.PDOStatement-execute]: SQLSTATE[HY093]: Invalid parameter number in G:\www\www.pdo-net\admin\edit_news_1.php on line 36

Les lignes :
35 $stmt->execute($update);
36 $stmt->execute();
jackbocar
le 25/07/2008 à 18:10
Problème avec UPDATE
Mais non, ma table c'est librairie ci-dessous, en haut c'est les exemples que je dois enlever pour que le code fonctionne.

<?php
include ('connexion.php');

if (isset($_GET['go'])) {
$dbh->exec('UPDATE librairie SET visible="0", auteur="'.$_POST['auteur'].'", titre="'.$_POST['titre'].'", type="'.$_POST['type'].'", menu="'.$_POST['menu'].'", news="'.$_POST['news'].'", isbn="'.$_POST['isbn'].'" WHERE id="'.$_POST['id'].'"');
header('Location: index.php');
exit();
}
?>






Maintenant, peux tu me dire pourquoi ce code sortie de mon ouvrage PHP 5 Avancé ne fonctionne t'il pas ?

<?php
include ('connexion.php');

$auteur = $_POST['auteur'];
$titre = $_POST['titre'];
$type = $_POST['type'];
$menu = $_POST['menu'];
$news = $_POST['news'];
$isbn = $_POST['isbn'];
$id = (int) $_GET['id'];

$sql=('UPDATE librairie SET auteur=:auteur, titre=:titre, type=:type, menu=:menu, news=:news, isbn=:isbn, WHERE id=:id');

$stmt = $dbh->prepare($sql);

$update = (array(':auteur' => $auteur, ':titre' => $titre, ':type' => $type, ':menu' => $menu, ':news' => $news, ':isbn' => $isbn));

$stmt->execute($update);
$stmt->execute();
?>
jackbocar
le 25/07/2008 à 17:14
Problème avec UPDATE
Bonjour,

Je n'arrive pas à trouver où il y a une erreur…

Mon code MODITICATION.PHP ET MODIFICATION_1.PHP fonctionnent tous deux parfaitement si je ne place pas dans MODIFICATION_1.PHP
<?php news="'.$_POST[ 'news'].'", ?>
.

Ce qui veut dire, je peux modifier tous les autres champs si je ne place pas dans mon code
<?php UPDATE SET news="'.$_POST[ 'news'].'", ?>


Merci de votre aide

Jack Bocar

Mon code MODIFICATION.php

<?php
include ('connexion.php');

if (isset($_GET['id']) && !isset($_GET['go'])) {
$sql = 'SELECT auteur, titre, type, menu, news, isbn FROM librairie WHERE id="'.$_GET['id'].'"';
$sth = $dbh->query($sql);
$result = $sth->fetchAll();
$row = $result[0];
$auteur=$row['auteur'];
$titre=$row['titre'];
$type=$row['type'];
$menu=$row['menu'];
$news=$row['news'];
$isbn=$row['isbn'];
}
?>
<form name="formulaire" method="post" action="MODIFICATION_1.php?go=ok">
Auteur :</span></td><td align="left"><input type="text" name="auteur" maxlength="150" size="80" value="<?php echo $auteur; ?>"><br />
Titre :</span></td><td align="left"><input type="text" name="titre" maxlength="150" size="80" value="<?php echo $titre; ?>"><br />
Type :</span></td><td align="left"><input type="text" name="type" maxlength="150" size="80" value="<?php echo $type; ?>"><br />
Menu :</span></td><td align="left"><input type="text" name="menu" maxlength="150" size="80" value="<?php echo $menu; ?>"><br />
<tr><td colspan="2" align="center"><textarea name="news" cols="50" rows="10"><?php echo $news; ?></textarea><br />
Isbn :</span></td><td align="left"><input type="text" name="isbn" maxlength="150" size="80" value="<?php echo $isbn; ?>"><br />
<input type="submit" value="Envoyer"><br />
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
</form>



Mon code MODIFICATION_1.php
<?php
include ('connexion.php');

if (isset($_GET['go'])) {
$dbh->exec('UPDATE librairie SET visible="0", auteur="'.$_POST['auteur'].'", titre="'.$_POST['titre'].'", type="'.$_POST['type'].'", menu="'.$_POST['menu'].'", news="'.$_POST['news'].'", isbn="'.$_POST['isbn'].'" WHERE id="'.$_POST['id'].'"');
header('Location: index.php');
exit();
}
?>



Ma table :

--
-- Structure de la table `librairie`
--

CREATE TABLE `librairie` (
`id` int(11) NOT NULL auto_increment,
`auteur` varchar(150) NOT NULL,
`titre` varchar(150) NOT NULL,
`type` varchar(50) NOT NULL,
`menu` varchar(100) NOT NULL,
`news` longtext NOT NULL,
`isbn` varchar(100) NOT NULL,
`visible` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
jackbocar
le 23/07/2008 à 19:29
Polices pour Windows et Ubuntu
Bonjour,

Pour les utilisateurs et fidèles de Linux et Ubuntu.

A votre avis, quelle est la police qui correspond le mieux au deux systèmes, et surtout qui est reconnue par ces même deux systèmes.

Merci

Jack Bocar
jackbocar
le 20/07/2008 à 19:59
Créer une fonction
Bonjour,

Merci de tes informations et du modèle, je vais le tester demain.

Une autre information qui va peut-être te semblée réellement pour débutants, mais, je ne trouve pas d'exemple concrets dans mes ouvrages.

Si j'ai une fonction exemple :


<?php
function add ()
$result = $conn->query("insert into news values ('$titre', '$nouvelles')");
?>


Pour mon formulaire d'insertions de données, comment je dois faire pour qu'il fonctionne avec cette fonction ?

Idem pour la fonction UPDATE ou DELETE.

Merci de tes réponses et surtout d'un exemple à l'appui.


Jack Bocar
jackbocar
le 19/07/2008 à 16:11
Créer une fonction
Bonjour,

Je voudrais créer une fonction pour supprimer à la lecture des donnés les espaces (\r \n).

SIC : Cette fonction retourne la chaîne str, après avoir supprimé les caractères invisibles de début de chaîne. Si le second paramètre charlist a été omis, ltrim() supprimera les caractères suivants : (\r \n).

Il existe une fonction sur cette page :
http://fr.php.net/manual/fr/function.ltrim.php

Donc, si je veux que ça fonctionne directement sur :
$obj->news

Comment dois-je créer cette fonction. ?


J'ai fais des fonctions de ce genre :

<?php
function caracteres($chaine){
$chaine = str_replace
( array('à')
, array
( '&agrave;'
)
, $chaine
) ;

return $chaine;
}
?>


Mais, je ne vois pas comment faire celle avec ITRIM () ?

Merci de votre aide

Jack Bocar
LoadingChargement en cours