Clé primaire ?

Répondre
Dreg
le 24/10/2006 à 15:12
Dreg
Salut,
Je suis en train de crér un site avec mise a jour via le web a la mode "cms" avec possibilité de création de pages et ajout du nom de cette page (et lien) dans mon index.php.
Problématique: Lorsque le nom de la page (qui est la clé primaire de la table) est composé de plusieurs mots (avec espace) j'ai l'erreur suivante : Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 7 in c:program fileseasyphp1-8wwwnomdusitepages.php on line 5
Apparemment pb ds la clé..(l'espace ?). (désolé pour cette question de "newbie".. merci d'avance.
Keika
le 24/10/2006 à 15:22
Keika
hmm as tu mis les htmlentities et addslashs usuels dans les cas d'insertion en base de donnees ?
Le PHP --> C'est dur !
Dreg
le 25/10/2006 à 11:01
Dreg
Vaut-il mieux les placer au moment de la saisie dans le formulaire ou lors de l'insertion dans la tables ?
Dreg
le 25/10/2006 à 11:37
Dreg
Pour préciser un peu voici le code "incriminé":
<?php
include "entete.php";
$connexion=mysql_connect("localhost","root","");
$db=mysql_select_db("monsite",$connexion);
$valeurpage=$_POST["choixpage"];
// on cherche dans la table si la page existe ou non
$resultat=mysql_query("select * from mespages where nompage like '".$valeurpage."'",$connexion);

{
$ct1=mysql_result($resultat,0,"contenu1");
$ct2=mysql_result($resultat,0,"contenu2");
$ct3=mysql_result($resultat,0,"contenu3");
$ct4=mysql_result($resultat,0,"contenu4");
}

echo "<br>";
echo "<p><font size='4' color='#000080'>Saisissez les informations puis cliquez <b>Valider</b> ou <b>Annuler</b></font></p>";
echo "<form method='get' action='Confirmation.php'>";
echo "Nom de la page : <input type='text' name='valeurpage' value='" .htmlspecialchars($valeurpage) ."' size='20'><br>";
echo "Contenu Zone 1 <textarea rows='8' cols='32' name='Cont1'>" .htmlspecialchars($ct1) ."</textarea><br>";
echo "Contenu Zone 2 <textarea rows='8' cols='32' name='Cont2'>" .htmlspecialchars($ct2) ."</textarea><br>";
echo "Contenu Zone 3 <textarea rows='8' cols='32' name='Cont3'>" .htmlspecialchars($ct3) ."</textarea><br>";
echo "Contenu Zone 4 <textarea rows='8' cols='32' name='Cont4'>" .htmlspecialchars($ct4) ."</textarea><br>";
echo "<br><br>";
echo "<input type='submit' value='Valider'/> <input type='reset' value='Annuler'>";
echo "</form>";

include "basdepage.php";
?>


Puis le lien vers la page est créé sous la forme :
"pages.php?nompage='.$_GET['valeurpage'].'",
moogli
le 25/10/2006 à 15:37
moogli
salut,

1/ il ne faut jamais utiliser une valeur fournie par l'url ou un formulaire sans en vérifier l'existance et le contenue.

pour le addsalshes ou pas, le problème est dû a ton config de serveur et du paramètre magic_quote_gpc pour être précis.
Un peu de lecture sur le sujet : La magie noire des apostrophes magique

ensuite vu que tu a des espaces dans les titres, qui vont peut être contenir aussi des accents etc tu ne peut pas l'utiliser telque dans une url.
Il te faut donc utiliser la fonction urlencode puis la réciproque urldecode !

smiley
Il en faut peu pour être heureux !!!!!
Dreg
le 27/10/2006 à 12:01
Dreg
Un grand merciiiii à tous les deux !
J'ai résolu mon probleme avec l'urlencode:

$val = $_GET['valeurpage'];
$val_url = urlencode($val);
$sql='INSERT INTO mespages (nompage,nomcateg,adressepage,contenu1,contenu2,contenu3,contenu4)
VALUES ("'.$_GET['valeurpage'].'","'.$_GET['choixcateg'].'",



"pages.php?nompage='.$val_url.'", ..........


Je note le "htmlentities", le addlslahes" et ai lu avec grand intéret le secret de la magie noire des apostrophes magiiques....

Encore merci A+
Dreg
le 30/10/2006 à 15:11
Dreg
Un problème subsiste malgré votre aide....
Comment (à quel endroit gérer les apostrophes ?)
Malgré l'utilisation de urlencode le pb subsiste dans mon lien ...
Merci pour cette réponse.
J'ai bien utilisé urlencode pour le champ de table "adresse".
Ce qui me donne dans la table, si je crée la nouvelle page "l'essai":

nompage = l'essai
adresse = pages.php@nompage=l%27essai

et surtout le lien ne fonctionne pas...

Avec un blanc dans le nom: aucun problème.
Une piste ?
Dreg
le 30/10/2006 à 15:13
Dreg
Vous aurez remarqué dans mon post précédent que le "Merci pour cette réponse" n'a pas grand chose à faire au beau milieu de la question ... je me suis relu un peu vite ...
Répondre
LoadingChargement en cours